Class: Lego::Value::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/lego/value/base.rb

Direct Known Subclasses

Array, Boolean, Date, Float, Integer, Set, String

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Base

Returns a new instance of Base.



4
5
6
# File 'lib/lego/value/base.rb', line 4

def initialize(opts={})
  @opts = opts
end

Instance Method Details

#coerce(val) ⇒ Object



24
25
26
27
# File 'lib/lego/value/base.rb', line 24

def coerce(val)
  res = parse(val)
  res.value? ? res.value : fail(Lego::CoerceError, res.error)
end

#parse(val) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/lego/value/base.rb', line 8

def parse(val)
  val = val.nil? ? Lego.none : Lego.just(val)

  parsers.each do |callable|
    val = val.next(callable)
  end

  return val unless val.none?

  if @opts[:default]
    Lego.just(@opts[:default].call)
  else
    Lego.fail('missing value')
  end
end

#parsersObject



29
30
31
# File 'lib/lego/value/base.rb', line 29

def parsers
  []
end