Class: Monolens::Array::Map
- Inherits:
-
Object
- Object
- Monolens::Array::Map
- Includes:
- Lens
- Defined in:
- lib/monolens/array/map.rb
Instance Attribute Summary
Attributes included from Lens
Instance Method Summary collapse
- #call(arg, world = {}) ⇒ Object
-
#initialize(arg) ⇒ Map
constructor
A new instance of Map.
Methods included from Lens::FetchSupport
Constructor Details
#initialize(arg) ⇒ Map
Returns a new instance of Map.
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/monolens/array/map.rb', line 6 def initialize(arg) , lenses = case arg when ::Hash opts = arg.dup; opts.delete(:lenses) _, ls = fetch_on(:lenses, arg) raise ArgumentError, 'Lenses are required' if ls.nil? [ opts, ls ] else [{}, arg] end super() @lenses = Monolens.lens(lenses) end |
Instance Method Details
#call(arg, world = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/monolens/array/map.rb', line 20 def call(arg, world = {}) is_enumerable!(arg, world) result = [] arg.each_with_index do |a, i| deeper(world, i) do |w| begin result << @lenses.call(a, w) rescue Monolens::LensError => ex strategy = option(:on_error, :fail) handle_error(strategy, ex, result, world) end end end result end |