class RubiGen::GemPathSource
GemPathSource looks for generators within any RubyGem's /{filter_}generators /<generator_name>_generator.rb file.
Attributes
filters[RW]
Public Class Methods
new(*filters)
click to toggle source
Calls superclass method
RubiGen::AbstractGemSource.new
# File lib/rubigen/lookup.rb, line 265 def initialize(*filters) super() @filters = filters end
Public Instance Methods
==(source)
click to toggle source
# File lib/rubigen/lookup.rb, line 277 def ==(source) self.class == source.class && filters == source.filters end
each() { |spec(basename.sub(/rb$/, ''), dirname, label)| ... }
click to toggle source
Yield each generator within rails_generator subdirectories.
# File lib/rubigen/lookup.rb, line 271 def each generator_full_paths.each do |generator| yield Spec.new(File.basename(generator).sub(/_generator.rb$/, ''), File.dirname(generator), label) end end
Private Instance Methods
filter_str()
click to toggle source
# File lib/rubigen/lookup.rb, line 297 def filter_str @filters = filters.first.is_a?(Array) ? filters.first : filters return "" if filters.blank? filter_str = filters.map {|filter| "#{filter}_"}.join(",") filter_str += "," "{#{filter_str}}" end
generator_full_paths()
click to toggle source
# File lib/rubigen/lookup.rb, line 282 def generator_full_paths @generator_full_paths ||= Gem::source_index.inject({}) do |latest, name_gem| name, gem = name_gem hem = latest[gem.name] latest[gem.name] = gem if hem.nil? or gem.version > hem.version latest end.values.inject([]) do |mem, gem| Dir[gem.full_gem_path + "/#{filter_str}generators/**/*_generator.rb"].each do |generator| mem << generator end mem end.reverse end