RubiGen::GemPathSource

GemPathSource looks for generators within any RubyGem’s /{filter_}generators/**/_generator.rb file.

Attributes

filters[RW]

Public Class Methods

new(*filters) click to toggle source
     # File lib/rubigen/lookup.rb, line 265
265:     def initialize(*filters)
266:       super()
267:       @filters = filters
268:     end

Public Instance Methods

==(source) click to toggle source
     # File lib/rubigen/lookup.rb, line 277
277:     def ==(source)
278:       self.class == source.class && filters == source.filters
279:     end
each() click to toggle source

Yield each generator within rails_generator subdirectories.

     # File lib/rubigen/lookup.rb, line 271
271:     def each
272:       generator_full_paths.each do |generator|
273:         yield Spec.new(File.basename(generator).sub(/_generator.rb$/, ''), File.dirname(generator), label)
274:       end
275:     end

Private Instance Methods

filter_str() click to toggle source
     # File lib/rubigen/lookup.rb, line 297
297:       def filter_str
298:         @filters = filters.first.is_a?(Array) ? filters.first : filters
299:         return "" if filters.blank?
300:         filter_str = filters.map {|filter| "#{filter}_"}.join(",")
301:         filter_str += ","
302:         "{#{filter_str}}"
303:       end
generator_full_paths() click to toggle source
     # File lib/rubigen/lookup.rb, line 282
282:       def generator_full_paths
283:         @generator_full_paths ||=
284:           Gem::cache.inject({}) do |latest, name_gem|
285:             name, gem = name_gem
286:             hem = latest[gem.name]
287:             latest[gem.name] = gem if hem.nil? or gem.version > hem.version
288:             latest
289:           end.values.inject([]) do |mem, gem|
290:             Dir[gem.full_gem_path + "/#{filter_str}generators/**/*_generator.rb"].each do |generator|
291:               mem << generator
292:             end
293:             mem
294:           end.reverse
295:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.