Module: Kalculator::Transform

Defined in:
lib/kalculator/transform.rb

Class Method Summary collapse

Class Method Details

.is_terminal?(node) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
# File 'lib/kalculator/transform.rb', line 15

def self.is_terminal?(node)
  return false if node.is_a?(Array)
  true
end

.run(node, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/kalculator/transform.rb', line 3

def self.run(node, &block)
  new_node = yield node
  if is_terminal?(new_node)
    new_node
  elsif new_node.first.is_a?(Symbol)
    args = new_node[1..-1].map{ |arg| run(arg, &block) }
    args.unshift(new_node.first)
  else
    new_node.map{|node| run(node, &block) }
  end
end