class RoadForest::Utility::ClassRegistry
Public Class Methods
new(registrar, purpose=nil)
click to toggle source
# 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
Public Instance Methods
add(name, klass)
click to toggle source
# 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)
click to toggle source
# 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() { |get(name)| ... }
click to toggle source
@yield each class in name order
# 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()
click to toggle source
# File lib/roadforest/utility/class-registry.rb, line 95 def names @sequence.tsort end
seq(before, after)
click to toggle source
# File lib/roadforest/utility/class-registry.rb, line 105 def seq(before, after) @sequence.add(before.to_sym, after.to_sym) end