Class: Remap::Rule::Collection::Filled

Inherits:
Unit
  • Object
show all
Defined in:
lib/remap/rule/support/collection/filled.rb

Overview

Represents a non-empty rule block

Examples:

A collection containing a single rule

state = Remap::State.call("A")
void = Remap::Rule::Void.call({})
rule = Remap::Rule::Collection.call([void])
error = -> failure { raise failure.exception }
rule.call(state, &error).fetch(:value) # => "A"

Instance Method Summary collapse

Instance Method Details

#call(state, &error) ⇒ State

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

Parameters:

Returns:



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/remap/rule/support/collection/filled.rb', line 26

def call(state, &error)
  unless error
    raise ArgumentError, "Collection::Filled#call(state, &error) requires a block"
  end

  rules.map do |rule|
    rule.call(state) do |failure|
      return error[failure]
    end
  end.reduce(&:combine)
end

#rulesArray<Rule>

Returns:



18
# File 'lib/remap/rule/support/collection/filled.rb', line 18

attribute :rules, [Types.Interface(:call)], min_size: 1