class Ruby::Prism::NodeFind::LineLambdaFind

Finds the AST node for a lambda using best-effort line matching. Used on non-CRuby implementations.

Public Instance Methods

Find the node for the given lambda by matching on line.

: (Proc callable) -> Node?

# File lib/ruby/prism/node_find.rb, line 156
def find(callable)
  return unless (source_location = callable.source_location)
  return unless (result = parse_file(source_location[0]))

  start_line = source_location[1]

  result.value.find do |node|
    case node
    when LambdaNode
      node.location.start_line == start_line
    when CallNode
      node.block.is_a?(BlockNode) && node.location.start_line == start_line
    else
      false
    end
  end
end