Class: SyntaxTree::RBS::PrettyPrint

Inherits:
Visitor
  • Object
show all
Defined in:
lib/syntax_tree/rbs/pretty_print.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Visitor

#visit

Constructor Details

#initialize(q) ⇒ PrettyPrint

Returns a new instance of PrettyPrint.



8
9
10
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 8

def initialize(q)
  @q = q
end

Instance Attribute Details

#qObject (readonly)

Returns the value of attribute q.



6
7
8
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 6

def q
  @q
end

Instance Method Details

#visit_alias(node) ⇒ Object

Visit a RBS::AST::Members::Alias node.



17
18
19
20
21
22
23
24
25
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 17

def visit_alias(node)
  group("alias") do
    print_comment(node)
    print_annotations(node)
    bool_field("singleton") if node.kind == :singleton
    pp_field("new_name", node.new_name)
    pp_field("old_name", node.old_name)
  end
end

#visit_alias_type(node) ⇒ Object

Visit a RBS::Types::Alias node.



28
29
30
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 28

def visit_alias_type(node)
  group("alias") { visit_field("name", node.name) }
end

#visit_attr_accessor_member(node) ⇒ Object

Visit a RBS::AST::Members::AttrAccessor node.



36
37
38
39
40
41
42
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 36

def visit_attr_accessor_member(node)
  group("attr-accessor") do
    print_comment(node)
    print_annotations(node)
    print_attribute(node)
  end
end

#visit_attr_reader_member(node) ⇒ Object

Visit a RBS::AST::Members::AttrReader node.



45
46
47
48
49
50
51
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 45

def visit_attr_reader_member(node)
  group("attr-reader") do
    print_comment(node)
    print_annotations(node)
    print_attribute(node)
  end
end

#visit_attr_writer_member(node) ⇒ Object

Visit a RBS::AST::Members::AttrWriter node.



54
55
56
57
58
59
60
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 54

def visit_attr_writer_member(node)
  group("attr-writer") do
    print_comment(node)
    print_annotations(node)
    print_attribute(node)
  end
end

#visit_base_type(node) ⇒ Object Also known as: visit_any_type, visit_bool_type, visit_bottom_type, visit_class_type, visit_instance_type, visit_nil_type, visit_self_type, visit_top_type, visit_void_type



12
13
14
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 12

def visit_base_type(node)
  q.text("(#{node.class.name.downcase})")
end

#visit_class_declaration(node) ⇒ Object

Visit a RBS::AST::Declarations::Class node.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 69

def visit_class_declaration(node)
  group("class") do
    print_comment(node)
    print_annotations(node)
    print_name_and_type_params(node)

    if node.super_class
      q.breakable
      q.text("super_class=")
      print_name_and_args(node.super_class)
    end

    pp_field("members", node.members)
  end
end

#visit_class_instance_type(node) ⇒ Object

Visit a RBS::Types::ClassInstance node.



86
87
88
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 86

def visit_class_instance_type(node)
  group("class-instance") { print_name_and_args(node) }
end

#visit_class_instance_variable_member(node) ⇒ Object

Visit a RBS::AST::Members::ClassInstanceVariable node.



91
92
93
94
95
96
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 91

def visit_class_instance_variable_member(node)
  group("class-instance-variable") do
    print_comment(node)
    pp_field("name", node.name)
  end
end

#visit_class_singleton_type(node) ⇒ Object

Visit a RBS::Types::ClassSingleton node.



99
100
101
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 99

def visit_class_singleton_type(node)
  group("class-singleton") { pp_field("name", node.name) }
end

#visit_class_variable_member(node) ⇒ Object

Visit a RBS::AST::Members::ClassVariable node.



107
108
109
110
111
112
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 107

def visit_class_variable_member(node)
  group("class-variable") do
    print_comment(node)
    pp_field("name", node.name)
  end
end

#visit_constant_declaration(node) ⇒ Object

Visit a RBS::AST::Declarations::Constant node.



115
116
117
118
119
120
121
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 115

def visit_constant_declaration(node)
  group("constant") do
    print_comment(node)
    visit_field("name", node.name)
    visit_field("type", node.type)
  end
end

#visit_extend_member(node) ⇒ Object

Visit a RBS::AST::Members::Extend node.



124
125
126
127
128
129
130
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 124

def visit_extend_member(node)
  group("extend") do
    print_comment(node)
    print_annotations(node)
    print_name_and_args(node)
  end
end

#visit_function_param_type(node) ⇒ Object

Visit a RBS::Types::Function::Param node.



133
134
135
136
137
138
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 133

def visit_function_param_type(node)
  group("param") do
    visit_field("type", node.type)
    pp_field("name", node.name) if node.name
  end
end

#visit_global_declaration(node) ⇒ Object

Visit a RBS::AST::Declarations::Global node.



141
142
143
144
145
146
147
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 141

def visit_global_declaration(node)
  group("global") do
    print_comment(node)
    pp_field("name", node.name)
    visit_field("type", node.type)
  end
end

#visit_include_member(node) ⇒ Object

Visit a RBS::AST::Members::Include node.



150
151
152
153
154
155
156
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 150

def visit_include_member(node)
  group("include") do
    print_comment(node)
    print_annotations(node)
    print_name_and_args(node)
  end
end

#visit_instance_variable_member(node) ⇒ Object

Visit a RBS::AST::Members::InstanceVariable node.



162
163
164
165
166
167
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 162

def visit_instance_variable_member(node)
  group("instance-variable") do
    print_comment(node)
    pp_field("name", node.name)
  end
end

#visit_interface_declaration(node) ⇒ Object

Visit a RBS::AST::Declarations::Interface node.



170
171
172
173
174
175
176
177
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 170

def visit_interface_declaration(node)
  group("interface") do
    print_comment(node)
    print_annotations(node)
    print_name_and_type_params(node)
    pp_field("members", node.members)
  end
end

#visit_interface_type(node) ⇒ Object

Visit a RBS::Types::Interface node.



180
181
182
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 180

def visit_interface_type(node)
  group("interface") { print_name_and_args(node) }
end

#visit_intersection_type(node) ⇒ Object

Visit a RBS::Types::Intersection node.



185
186
187
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 185

def visit_intersection_type(node)
  group("intersection") { pp_field("types", node.types) }
end

#visit_literal_type(node) ⇒ Object

Visit a RBS::Types::Literal node.



190
191
192
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 190

def visit_literal_type(node)
  group("literal") { pp_field("literal", node.literal) }
end

#visit_method_definition_member(node) ⇒ Object

Visit a RBS::AST::Members::MethodDefinition node.



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 195

def visit_method_definition_member(node)
  group("(method-definition") do
    print_comment(node)
    print_annotations(node)
    pp_field("kind", node.kind)
    pp_field("name", node.name)
    pp_field("visibility", node.visibility) if node.visibility
    bool_field("overload") if node.overloading?

    q.breakable
    q.text("overloads=")
    q.group(2, "[", "]") do
      q.seplist(node.overloads) do |overload|
        print_method_overload(overload)
      end
    end
  end
end

#visit_module_declaration(node) ⇒ Object

Visit a RBS::AST::Declarations::Module node.



215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 215

def visit_module_declaration(node)
  group("module") do
    print_comment(node)
    print_annotations(node)
    print_name_and_type_params(node)

    if node.self_types.any?
      q.breakable
      q.text("self_types=")
      q.group(2, "[", "]") do
        q.seplist(node.self_types) do |self_type|
          print_name_and_args(self_type)
        end
      end
    end

    pp_field("members", node.members)
  end
end

#visit_optional_type(node) ⇒ Object

Visit a RBS::Types::Optional node.



239
240
241
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 239

def visit_optional_type(node)
  group("optional") { visit_field("type", node.type) }
end

#visit_prepend_member(node) ⇒ Object

Visit a RBS::AST::Members::Prepend node.



244
245
246
247
248
249
250
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 244

def visit_prepend_member(node)
  group("prepend") do
    print_comment(node)
    print_annotations(node)
    print_name_and_args(node)
  end
end

#visit_private_member(node) ⇒ Object

Visit a RBS::AST::Members::Private node.



253
254
255
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 253

def visit_private_member(node)
  q.text("(private)")
end

#visit_proc_type(node) ⇒ Object

Visit a RBS::Types::Proc node.



258
259
260
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 258

def visit_proc_type(node)
  group("proc") { print_method_signature(node) }
end

#visit_public_member(node) ⇒ Object

Visit a RBS::AST::Members::Public node.



263
264
265
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 263

def visit_public_member(node)
  q.text("(public)")
end

#visit_record_type(node) ⇒ Object

Visit a RBS::Types::Record node.



268
269
270
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 268

def visit_record_type(node)
  group("record") { pp_field("fields", node.fields) }
end

#visit_root(node) ⇒ Object

Visit a SyntaxTree::RBS::Root node.



273
274
275
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 273

def visit_root(node)
  group("root") { pp_field("declarations", node.declarations) }
end

#visit_tuple_type(node) ⇒ Object

Visit a RBS::Types::Tuple node.



284
285
286
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 284

def visit_tuple_type(node)
  group("tuple") { pp_field("types", node.types) }
end

#visit_type_alias(node) ⇒ Object

Visit a RBS::AST::Declarations::TypeAlias node.



289
290
291
292
293
294
295
296
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 289

def visit_type_alias(node)
  group("constant") do
    print_comment(node)
    print_annotations(node)
    visit_field("name", node.name)
    visit_field("type", node.type)
  end
end

#visit_type_name(node) ⇒ Object

Visit a RBS::TypeName node.



299
300
301
302
303
304
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 299

def visit_type_name(node)
  group("type-name") do
    q.breakable
    q.pp(node.to_s)
  end
end

#visit_union_type(node) ⇒ Object

Visit a RBS::Types::Union node.



307
308
309
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 307

def visit_union_type(node)
  group("union") { pp_field("types", node.types) }
end

#visit_variable_type(node) ⇒ Object

Visit a RBS::Types::Variable node.



312
313
314
# File 'lib/syntax_tree/rbs/pretty_print.rb', line 312

def visit_variable_type(node)
  group("variable") { pp_field("name", node.name) }
end