Sha256: deada7c477ff712da0de40db2154e654e053e856d83126572ace6314fca0baac
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
require 'singleton' require 'sugar-high/kind_of' module CanTango::Registry class Clazz module InstanceMethods def register label, value raise "first arg must be a label, was: #{label}" if !label.kind_of_label? raise "second arg must be a valid Class, was: #{value}" if !valid? value name_registry.register label.to_sym class_registry.register value end alias_method :[]=, :register def << hash raise "Must be a hash" if !hash.is_a?(::Hash) hash.each_pair do |key, value| register key, value end end def registered name_registry.registered end alias_method :registered_names, :registered def clean! name_registry.clean! class_registry.clean! end alias_method :clear!, :clean! def registered_classes class_registry.registered end def registered? name name_registry.registered? name end def registered_class? name class_registry.registered? name end def name_registry @name_registry ||=NameRegistry.new end def class_registry @class_registry ||= ClassRegistry.new end def value_methods class_registry.value_methods end def value_types class_registry.types end class NameRegistry < CanTango::Registry::Base end class ClassRegistry < CanTango::Registry::Base def types [Class] end def value_methods [] end end protected def valid? value valid_by_type?(value) && valid_by_methods?(value) end def valid_by_type? value return true if value_types.blank? value.any_kind_of?(*value_types) end def valid_by_methods? value return true if value_methods.blank? value_methods.all?{|m| value.respond_to(m)} end end include InstanceMethods end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cantango-config-0.2.1 | lib/cantango/registry/clazz.rb |
cantango-config-0.2.0 | lib/cantango/registry/clazz.rb |