Sha256: c71a418cfb28172ae1b2e90852f1835de5e014312bde54047b30ab9fcac60422
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
module Nearmiss # Class to parse GitHub repository owner and name from # URLs and to generate URLs class Project attr_accessor :owner, :name, :id # Instantiate from a GitHub repository URL # # @return [Repository] def self.from_url(url) Project.new(URI.parse(url).path[1..-1]) end def initialize(project) case project # when Integer # @id = project when String @id = project # @owner, @name = repo.split('/') # unless @owner && @name # raise ArgumentError, "Invalid Repository. Use user/repo format." # end when Project @id = project.id # @name = repo.name when Hash @id = project[:project] ||= project[:id] # @owner = repo[:owner] ||= repo[:user] ||= repo[:username] end end # Project owner/name # @return [String] def slug # "#{@owner}/#{@name}" end alias :to_s :slug # @return [String] Project API path def path # return named_api_path if @owner && @name return id_api_path if @id end # Get the api path for a repo # @param project [Integer, String, Hash, Project] A project. # @return [String] Api path. def self.path(project) new(project).path end # @return [String] Api path for owner/name identified repos # def named_api_path # "repos/#{slug}" # end # @return [String] Api path for id identified repos def id_api_path "projects/#{@id}" end # Project URL based on {Nearmiss::Client#web_endpoint} # @return [String] def url # "#{Octokit.web_endpoint}#{slug}" end # alias :user :owner # alias :username :owner # alias :repo :name end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nearmiss-ruby-1.0.4 | lib/nearmiss-ruby/project.rb |