Class: ProcToAst::Traverser

Inherits:
Object
  • Object
show all
Defined in:
lib/proc_to_ast.rb

Instance Method Summary collapse

Instance Method Details

#proc_block?(node) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/proc_to_ast.rb', line 23

def proc_block?(node)
  head = node.children[0]
  return false unless head.type == :send

  receiver, symbol = head.children

  return true if receiver.nil? && (symbol == :proc || symbol == :lambda)

  if receiver.is_a?(AST::Node) &&
    receiver.type == :const &&
    receiver.children[1] == :Proc &&
    symbol == :new

    return true
  end

  false
end

#traverse_node(node) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/proc_to_ast.rb', line 11

def traverse_node(node)
  if node.type != :block
    node.children.flat_map { |child|
      if child.is_a?(AST::Node)
        traverse_node(child)
      end
    }.compact
  else
    node
  end
end