Class: RoadForest::Utility::ClassRegistry
- Inherits:
-
Object
- Object
- RoadForest::Utility::ClassRegistry
show all
- Defined in:
- lib/roadforest/utility/class-registry.rb
Defined Under Namespace
Modules: Registrar
Classes: NameSequence, UndefinedClass
Instance Method Summary
collapse
Constructor Details
#initialize(registrar, purpose = nil) ⇒ ClassRegistry
Returns a new instance of ClassRegistry.
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/roadforest/utility/class-registry.rb', line 43
def initialize(registrar, purpose=nil)
if purpose.nil?
if registrar.respond_to?(:registry_purpose)
@purpose = registrar.registry_purpose
else
@purpose = registrar.name
end
else
@purpose = purpose
end
@sequence = NameSequence.new
@classes = {}
end
|
Instance Method Details
#add(name, klass) ⇒ Object
99
100
101
102
103
|
# File 'lib/roadforest/utility/class-registry.rb', line 99
def add(name, klass)
@sequence.exists(name.to_sym)
@classes[name.to_sym] = klass
@classes[name.to_s] = klass
end
|
#get(name) ⇒ Object
111
112
113
114
115
|
# File 'lib/roadforest/utility/class-registry.rb', line 111
def get(name)
@classes.fetch(name)
rescue KeyError
raise UndefinedClass, "No #@purpose class registered as name: #{name.inspect} (there are: #{names.inspect})"
end
|
#map_classes { ... } ⇒ Object
85
86
87
88
89
90
91
92
93
|
# File 'lib/roadforest/utility/class-registry.rb', line 85
def map_classes
names.map do |name|
begin
yield get(name)
rescue UndefinedClass
warn "undefined name: #{name} used in sequencing"
end
end
end
|
#names ⇒ Object
95
96
97
|
# File 'lib/roadforest/utility/class-registry.rb', line 95
def names
@sequence.tsort
end
|
#seq(before, after) ⇒ Object
105
106
107
|
# File 'lib/roadforest/utility/class-registry.rb', line 105
def seq(before, after)
@sequence.add(before.to_sym, after.to_sym)
end
|