Class: Remap::Selector::Index

Inherits:
Unit
  • Object
show all
Defined in:
lib/remap/selector/index.rb

Instance Method Summary collapse

Instance Method Details

#call(state, &block) ⇒ State<T>

Returns:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/remap/selector/index.rb', line 20

def call(state, &block)
  unless block
    raise ArgumentError, "no block given"
  end

  state.bind(index: index) do |array, inner_state, &error|
    requirement[array] do
      return error["Expected an array"]
    end

    element = array.fetch(index) do
      return error["No element on index at index #{index}"]
    end

    block[inner_state.set(element, index: index)]
  end
end