Class: MVCLI::Form::Input::Target
- Inherits:
-
Object
- Object
- MVCLI::Form::Input::Target
- Defined in:
- lib/mvcli/form/input.rb
Direct Known Subclasses
Instance Method Summary collapse
- #decode(&block) ⇒ Object
- #decoded(source, context) ⇒ Object
- #default(context) ⇒ Object
-
#initialize(name, target, options = {}, &block) ⇒ Target
constructor
A new instance of Target.
- #value(source, context = nil, &transform) ⇒ Object
Constructor Details
#initialize(name, target, options = {}, &block) ⇒ Target
Returns a new instance of Target.
24 25 26 27 28 29 30 |
# File 'lib/mvcli/form/input.rb', line 24 def initialize(name, target, = {}, &block) @name, @options = name, Map() @decoders = [] if block_given? @decoders << block end end |
Instance Method Details
#decode(&block) ⇒ Object
32 33 34 |
# File 'lib/mvcli/form/input.rb', line 32 def decode(&block) @decoders << block end |
#decoded(source, context) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/mvcli/form/input.rb', line 41 def decoded(source, context) if value = [source[@name]].flatten.first @decoders.reduce(value) do |value, decoder| decoder.call value end else default context end end |
#default(context) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/mvcli/form/input.rb', line 51 def default(context) value = @options[:default] if value.respond_to?(:call) if context context.instance_exec(&value) else value.call end else value end end |
#value(source, context = nil, &transform) ⇒ Object
37 38 39 |
# File 'lib/mvcli/form/input.rb', line 37 def value(source, context = nil, &transform) transform.call decoded source, context end |