class CallableTree::Node::Internal::Strategy::Seek

Public Instance Methods

call(nodes, input:, options:) click to toggle source
# File lib/callable_tree/node/internal/strategy/seek.rb, line 8
def call(nodes, input:, options:)
  nodes
    .lazy
    .select { |node| node.match?(input, **options) }
    .map do |node|
      output = node.call(input, **options)
      terminated = node.terminate?(output, **options)
      [output, terminated]
    end
    .select { |_output, terminated| terminated }
    .map { |output, _terminated| output }
    .first
end