Class: SyntaxTree::JSON::Format
- Defined in:
- lib/syntax_tree/json/format.rb
Overview
This class is a visitor responsible for formatting the AST.
Instance Attribute Summary collapse
-
#q ⇒ Object
readonly
Returns the value of attribute q.
Instance Method Summary collapse
-
#initialize(q) ⇒ Format
constructor
A new instance of Format.
-
#visit_array(node) ⇒ Object
Visit an AST::Array node.
-
#visit_false(node) ⇒ Object
Visit an AST::False node.
-
#visit_null(node) ⇒ Object
Visit an AST::Null node.
-
#visit_number(node) ⇒ Object
Visit an AST::Number node.
-
#visit_object(node) ⇒ Object
Visit an AST::Object node.
-
#visit_root(node) ⇒ Object
Visit an AST::Root node.
-
#visit_string(node) ⇒ Object
Visit an AST::String node.
-
#visit_true(node) ⇒ Object
Visit an AST::True node.
Methods inherited from Visitor
#visit, #visit_all, #visit_child_nodes
Constructor Details
#initialize(q) ⇒ Format
Returns a new instance of Format.
9 10 11 |
# File 'lib/syntax_tree/json/format.rb', line 9 def initialize(q) @q = q end |
Instance Attribute Details
#q ⇒ Object (readonly)
Returns the value of attribute q.
7 8 9 |
# File 'lib/syntax_tree/json/format.rb', line 7 def q @q end |
Instance Method Details
#visit_array(node) ⇒ Object
Visit an AST::Array node.
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/syntax_tree/json/format.rb', line 14 def visit_array(node) q.group do q.text("[") q.indent do q.breakable("") q.seplist(node.values) { |value| visit(value) } end q.breakable("") q.text("]") end end |
#visit_false(node) ⇒ Object
Visit an AST::False node.
29 30 31 |
# File 'lib/syntax_tree/json/format.rb', line 29 def visit_false(node) q.text("false") end |
#visit_null(node) ⇒ Object
Visit an AST::Null node.
34 35 36 |
# File 'lib/syntax_tree/json/format.rb', line 34 def visit_null(node) q.text("null") end |
#visit_number(node) ⇒ Object
Visit an AST::Number node.
39 40 41 |
# File 'lib/syntax_tree/json/format.rb', line 39 def visit_number(node) q.text(node.value) end |
#visit_object(node) ⇒ Object
Visit an AST::Object node.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/syntax_tree/json/format.rb', line 44 def visit_object(node) q.group do q.text("{") q.indent do q.breakable q.seplist(node.values, nil, :each_pair) do |key, value| q.group do q.text(key) q.text(": ") visit(value) end end end q.breakable q.text("}") end end |
#visit_root(node) ⇒ Object
Visit an AST::Root node.
65 66 67 68 |
# File 'lib/syntax_tree/json/format.rb', line 65 def visit_root(node) visit(node.value) q.breakable(force: true) end |
#visit_string(node) ⇒ Object
Visit an AST::String node.
71 72 73 |
# File 'lib/syntax_tree/json/format.rb', line 71 def visit_string(node) q.text(node.value) end |
#visit_true(node) ⇒ Object
Visit an AST::True node.
76 77 78 |
# File 'lib/syntax_tree/json/format.rb', line 76 def visit_true(node) q.text("true") end |