Parent

RubiGen::Spec

A spec knows where a generator was found and how to instantiate it. Metadata include the generator’s name, its base path, and the source which yielded it (PathSource, GemPathSource, etc.)

Attributes

name[R]
path[R]
source[R]

Public Class Methods

new(name, path, source) click to toggle source
    # File lib/rubigen/spec.rb, line 8
 8:     def initialize(name, path, source)
 9:       @name, @path, @source, @klass = name, path, source, nil
10:     end

Public Instance Methods

class_file() click to toggle source
    # File lib/rubigen/spec.rb, line 23
23:     def class_file
24:       "#{path}/#{name}_generator.rb"
25:     end
class_name() click to toggle source
    # File lib/rubigen/spec.rb, line 27
27:     def class_name
28:       "#{name.camelize}Generator"
29:     end
klass() click to toggle source

Look up the generator class. Require its class file, find the class in ObjectSpace, tag it with this spec, and return.

    # File lib/rubigen/spec.rb, line 14
14:     def klass
15:       unless @klass
16:         require class_file
17:         @klass = lookup_class
18:         @klass.spec = self
19:       end
20:       @klass
21:     end
usage_file() click to toggle source
    # File lib/rubigen/spec.rb, line 31
31:     def usage_file
32:       "#{path}/USAGE"
33:     end
visible?() click to toggle source
    # File lib/rubigen/spec.rb, line 35
35:     def visible?
36:       File.exists? usage_file
37:     end

Private Instance Methods

lookup_class() click to toggle source

Search for the first Class descending from RubiGen::Base whose name matches the requested class name.

    # File lib/rubigen/spec.rb, line 42
42:       def lookup_class
43:         ObjectSpace.each_object(Class) do |obj|
44:           return obj if valid_superclass?(obj) and
45:                         obj.name.split('::').last == class_name
46:         end
47:         raise NameError, "Missing #{class_name} class in #{class_file}"
48:       end
valid_generator_superclasses() click to toggle source
    # File lib/rubigen/spec.rb, line 57
57:       def valid_generator_superclasses
58:         @valid_generator_superclasses ||= [
59:           "RubiGen::Base",
60:           "Rails::Generator::Base"
61:         ].inject([]) do |list, class_name|
62:           klass = class_name.split("::").inject(Object) do |klass, name|
63:             klass.const_get(name) rescue nil
64:           end
65:           list << klass if klass
66:           list
67:         end
68:       end
valid_superclass?(obj) click to toggle source
    # File lib/rubigen/spec.rb, line 50
50:       def valid_superclass?(obj)
51:         valid_generator_superclasses.each do |klass|
52:           return true if obj.ancestors.include?(klass)
53:         end
54:         false
55:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.