Class: CallableTree::Node::Internal::Strategy::Compose
- Inherits:
-
Object
- Object
- CallableTree::Node::Internal::Strategy::Compose
- Includes:
- CallableTree::Node::Internal::Strategy
- Defined in:
- lib/callable_tree/node/internal/strategy/compose.rb
Instance Method Summary collapse
- #call(nodes, *inputs, **options) ⇒ Object
-
#initialize(terminable: false) ⇒ Compose
constructor
A new instance of Compose.
Methods included from CallableTree::Node::Internal::Strategy
#==, #eql?, #hash, #name, #terminable?
Constructor Details
#initialize(terminable: false) ⇒ Compose
10 11 12 13 14 15 16 17 18 |
# File 'lib/callable_tree/node/internal/strategy/compose.rb', line 10 def initialize(terminable: false) self.terminable = terminable @terminator = if terminable proc { |node, output, *inputs, **| node.terminate?(output, *inputs, **) } else proc { false } end end |
Instance Method Details
#call(nodes, *inputs, **options) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/callable_tree/node/internal/strategy/compose.rb', line 20 def call(nodes, *inputs, **) head, *tail = inputs nodes.reduce(head) do |input, node| if node.match?(input, *tail, **) output = node.call(input, *tail, **) break output if @terminator.call(node, output, input, *tail, **) output else input end end end |