Sha256: 42080fc95dd385a6756a94c91fe6523ee687c2505168d8c2fbc18c07033566e3

Contents?: true

Size: 585 Bytes

Versions: 2

Compression:

Stored size: 585 Bytes

Contents

# frozen_string_literal: true

module Github
  # Methods for dealing with GitHub paths.
  class Paths
    # "<owner>/<repo>/<ref>/<some_path>"
    PATH_PATTERN = %r{^(?:[^/]+/){3}.*[^/]$}
    private_constant :PATH_PATTERN

    # Parses a path like "<owner>/<repo>/<ref>/<some_path>" into owner, repo, ref, path.
    def self.parse_file_path(path)
      check_non_empty_string(path: path)
      raise "invalid path: #{path}" unless PATH_PATTERN.match?(path)

      owner, repo, ref, *path = path.split('/')
      path = path.join('/')

      [owner, repo, ref, path]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sqlui-0.1.71 app/github/paths.rb
sqlui-0.1.70 app/github/paths.rb