Class: Kumi::Support::SExpressionPrinter

Inherits:
Object
  • Object
show all
Defined in:
lib/kumi/support/s_expression_printer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(indent: 0) ⇒ SExpressionPrinter

Returns a new instance of SExpressionPrinter.



6
7
8
# File 'lib/kumi/support/s_expression_printer.rb', line 6

def initialize(indent: 0)
  @indent = indent
end

Class Method Details



34
35
36
# File 'lib/kumi/support/s_expression_printer.rb', line 34

def self.print(node, indent: 0)
  new(indent: indent).visit(node)
end

Instance Method Details

#visit(node) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kumi/support/s_expression_printer.rb', line 10

def visit(node)
  return node.inspect unless node.respond_to?(:class)

  case node
  when nil then "nil"
  when Array then visit_array(node)
  when Kumi::Syntax::Root then visit_root(node)
  when Kumi::Syntax::ValueDeclaration then visit_value_declaration(node)
  when Kumi::Syntax::TraitDeclaration then visit_trait_declaration(node)
  when Kumi::Syntax::InputDeclaration then visit_input_declaration(node)
  when Kumi::Syntax::CallExpression then visit_call_expression(node)
  when Kumi::Syntax::ArrayExpression then visit_array_expression(node)
  when Kumi::Syntax::CascadeExpression then visit_cascade_expression(node)
  when Kumi::Syntax::CaseExpression then visit_case_expression(node)
  when Kumi::Syntax::InputReference then visit_input_reference(node)
  when Kumi::Syntax::InputElementReference then visit_input_element_reference(node)
  when Kumi::Syntax::DeclarationReference then visit_declaration_reference(node)
  when Kumi::Syntax::Literal then visit_literal(node)
  when Kumi::Syntax::HashExpression then visit_hash_expression(node)
  when Kumi::Syntax::ImportCall then visit_import_call(node)
  else visit_generic(node)
  end
end