Class: MVCLI::Form::Input::Target

Inherits:
Object
  • Object
show all
Defined in:
lib/mvcli/form/input.rb

Direct Known Subclasses

ListTarget

Instance Method Summary collapse

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, options = {}, &block)
  @name, @options = name, Map(options)
  @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