Class: Monolens::Core::Chain

Inherits:
Object
  • Object
show all
Includes:
Lens
Defined in:
lib/monolens/core/chain.rb

Instance Attribute Summary

Attributes included from Lens

#options

Instance Method Summary collapse

Methods included from Lens

#fetch_on, #is_array!, #is_enumerable!, #is_hash!, #is_string!, #option

Constructor Details

#initialize(lenses) ⇒ Chain

Returns a new instance of Chain.



6
7
8
9
# File 'lib/monolens/core/chain.rb', line 6

def initialize(lenses)
  super({})
  @lenses = lenses
end

Instance Method Details

#call(arg, *rest) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/monolens/core/chain.rb', line 11

def call(arg, *rest)
  result = arg
  @lenses.each do |lens|
    done = false
    catch(:skip) do
      result = lens.call(result, *rest)
      done = true
    end
    break unless done
  end
  result
end