module WhirledPeas::Component::Factory
Public Class Methods
build(name)
click to toggle source
# File lib/whirled_peas/component.rb, line 9 def build(name) unless classes.key?(name) expected = classes.keys.join(', ') raise ArgumentError, "Unrecognized component: #{name.inspect}, expecting one of #{expected}" end @classes[name].new end
register(name, klass)
click to toggle source
# File lib/whirled_peas/component.rb, line 5 def register(name, klass) classes[name] = klass end
Private Class Methods
classes()
click to toggle source
# File lib/whirled_peas/component.rb, line 19 def classes return @classes if @classes @classes = {} Component.constants.each do |const| next if const == name klass = Component.const_get(const) next unless klass.is_a?(Class) name = const.to_s.gsub(/([a-z])([A-Z])/, '\1_\2').downcase.to_sym @classes[name] = klass end @classes end