class RepoProviders
Attributes
providers[R]
Public Class Methods
new()
click to toggle source
# File lib/git-issues/providers.rb, line 25 def initialize @providers = RepoProvider.subclasses.map do |c| add_methods_to_provider(c) end end
Public Instance Methods
map_urls_to_provider(urls)
click to toggle source
# File lib/git-issues/providers.rb, line 31 def map_urls_to_provider urls urls.map do |url| # get the first valid provider (or nil otherwise) @providers.map do |p| create_provider(p,url) end.compact.first end.compact end
Private Instance Methods
add_methods_to_provider(c)
click to toggle source
# File lib/git-issues/providers.rb, line 53 def add_methods_to_provider c # get the base name of the provider name = c.name.sub(/.*::/,'').downcase # add simple fields ['repo_url', 'repo'].each do |arg| c.class_eval("def #{arg};@#{arg};end") end # add login helper c.class_eval <<-EOF def log; @log ||= Logging.logger[#{c}]; end def name; #{name.inspect} end include ::LoginHelper EOF c end
create_provider(p, url)
click to toggle source
# File lib/git-issues/providers.rb, line 42 def create_provider p, url # break out if this is not a url for this provider repo = p.get_repo url return nil if repo.nil? # create the provider with the url pc = p.new pc.instance_variable_set(:@repo_url, url) pc.instance_variable_set(:@repo, repo) pc end