class Remap::Rule::Block

Public Instance Methods

call(state) click to toggle source

Represents a non-empty define block with one or more rules Calls every {#rules} with state and merges the output

@param state [State]

@return [State]

# File lib/remap/rule/block.rb, line 18
def call(state)
  init = state.except(:value)

  if rules.empty?
    return init
  end

  catch_fatal(init, backtrace) do |s1, fatal_id:|
    s2 = state.set(fatal_id: fatal_id)

    catch_ignored(s1) do |s3, id:|
      states = rules.map do |rule|
        rule.call(s2)
      end

      states.reduce(s3) do |s4, s5|
        s6 = s5.set(id: id)
        s4.combine(s6)
      end
    end
  end
end