Class: Doodle::AttributeCollector
- Inherits:
-
DoodleAttribute
- Object
- Doodle
- DoodleAttribute
- Doodle::AttributeCollector
- Defined in:
- lib/doodle.rb
Overview
base class for attribute collector classes
Direct Known Subclasses
Constant Summary
Constants inherited from Doodle
Instance Method Summary collapse
-
#initialize(*args, &block) ⇒ AttributeCollector
constructor
A new instance of AttributeCollector.
- #post_process(results) ⇒ Object
- #resolve_collector_class ⇒ Object
- #resolve_value(value) ⇒ Object
Methods inherited from DoodleAttribute
#default_defined?, #init_defined?, #optional?, params_from_args, #required?, #validate!
Methods inherited from Doodle
context, raise_exception_on_error, raise_exception_on_error=
Methods included from Core
Constructor Details
#initialize(*args, &block) ⇒ AttributeCollector
Returns a new instance of AttributeCollector.
1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 |
# File 'lib/doodle.rb', line 1072 def initialize(*args, &block) super define_collection from Hash do |hash| resolve_collector_class hash.inject({ }) do |h, (key, value)| h[key] = resolve_value(value) h end end from Enumerable do |enum| resolve_collector_class post_process( enum.map{ |value| resolve_value(value) } ) end end |
Instance Method Details
#post_process(results) ⇒ Object
1087 1088 1089 |
# File 'lib/doodle.rb', line 1087 def post_process(results) results end |
#resolve_collector_class ⇒ Object
1058 1059 1060 1061 1062 |
# File 'lib/doodle.rb', line 1058 def resolve_collector_class if !collector_class.kind_of?(Class) self.collector_class = Doodle::Utils.const_resolve(collector_class) end end |
#resolve_value(value) ⇒ Object
1063 1064 1065 1066 1067 1068 1069 1070 1071 |
# File 'lib/doodle.rb', line 1063 def resolve_value(value) if value.kind_of?(collector_class) value elsif collector_class.__doodle__.conversions.key?(value.class) collector_class.from(value) else collector_class.new(value) end end |