Class: RBI::Node
Abstract
- Inherits:
-
Object
show all
- Defined in:
- lib/rbi/model.rb,
lib/rbi/printer.rb,
lib/rbi/rbs_printer.rb,
lib/rbi/rewriters/merge_trees.rb,
lib/rbi/rewriters/filter_versions.rb
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#compatible_with?(_other) ⇒ Boolean
Can self and _other be merged into a single definition?.
-
#detach ⇒ Object
-
#initialize(loc: nil) ⇒ Node
constructor
-
#merge_with(other) ⇒ Object
Merge self and other into a single definition.
-
#parent_conflict_tree ⇒ Object
-
#parent_scope ⇒ Object
-
#print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil) ⇒ Object
-
#rbs_print(out: $stdout, indent: 0, print_locs: false, positional_names: true) ⇒ Object
-
#rbs_string(indent: 0, print_locs: false, positional_names: true) ⇒ Object
-
#replace(node) ⇒ Object
-
#satisfies_version?(version) ⇒ Boolean
-
#string(indent: 0, print_locs: false, max_line_length: nil) ⇒ Object
Constructor Details
#initialize(loc: nil) ⇒ Node
Returns a new instance of Node.
16
17
18
19
|
# File 'lib/rbi/model.rb', line 16
def initialize(loc: nil)
@parent_tree = nil
@loc = loc
end
|
Instance Attribute Details
#loc ⇒ Object
13
14
15
|
# File 'lib/rbi/model.rb', line 13
def loc
@loc
end
|
#parent_tree ⇒ Object
10
11
12
|
# File 'lib/rbi/model.rb', line 10
def parent_tree
@parent_tree
end
|
Instance Method Details
#compatible_with?(_other) ⇒ Boolean
Can self and _other be merged into a single definition?
302
303
304
|
# File 'lib/rbi/rewriters/merge_trees.rb', line 302
def compatible_with?(_other)
true
end
|
#detach ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/rbi/model.rb', line 22
def detach
tree = parent_tree
return unless tree
tree.nodes.delete(self)
self.parent_tree = nil
end
|
#merge_with(other) ⇒ Object
Merge self and other into a single definition
308
|
# File 'lib/rbi/rewriters/merge_trees.rb', line 308
def merge_with(other); end
|
#parent_conflict_tree ⇒ Object
311
312
313
314
315
316
317
318
319
|
# File 'lib/rbi/rewriters/merge_trees.rb', line 311
def parent_conflict_tree
parent = parent_tree while parent
return parent if parent.is_a?(ConflictTree)
parent = parent.parent_tree
end
nil
end
|
#parent_scope ⇒ Object
44
45
46
47
48
|
# File 'lib/rbi/model.rb', line 44
def parent_scope
parent = parent_tree parent = parent.parent_tree until parent.is_a?(Scope) || parent.nil?
parent
end
|
#print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil) ⇒ Object
877
878
879
880
|
# File 'lib/rbi/printer.rb', line 877
def print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil)
p = Printer.new(out: out, indent: indent, print_locs: print_locs, max_line_length: max_line_length)
p.visit(self)
end
|
#rbs_print(out: $stdout, indent: 0, print_locs: false, positional_names: true) ⇒ Object
1261
1262
1263
1264
|
# File 'lib/rbi/rbs_printer.rb', line 1261
def rbs_print(out: $stdout, indent: 0, print_locs: false, positional_names: true)
p = RBSPrinter.new(out: out, indent: indent, print_locs: print_locs, positional_names: positional_names)
p.visit(self)
end
|
#rbs_string(indent: 0, print_locs: false, positional_names: true) ⇒ Object
1267
1268
1269
1270
1271
|
# File 'lib/rbi/rbs_printer.rb', line 1267
def rbs_string(indent: 0, print_locs: false, positional_names: true)
out = StringIO.new
rbs_print(out: out, indent: indent, print_locs: print_locs, positional_names: positional_names)
out.string
end
|
#replace(node) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/rbi/model.rb', line 31
def replace(node)
tree = parent_tree
raise ReplaceNodeError, "Can't replace #{self} without a parent tree" unless tree
index = tree.nodes.index(self)
raise ReplaceNodeError, "Can't find #{self} in #{tree} child nodes" unless index
tree.nodes[index] = node
node.parent_tree = tree
self.parent_tree = nil
end
|
#satisfies_version?(version) ⇒ Boolean
91
92
93
94
95
96
|
# File 'lib/rbi/rewriters/filter_versions.rb', line 91
def satisfies_version?(version)
return true unless is_a?(NodeWithComments)
requirements = version_requirements
requirements.empty? || requirements.any? { |req| req.satisfied_by?(version) }
end
|
#string(indent: 0, print_locs: false, max_line_length: nil) ⇒ Object
883
884
885
886
887
888
889
|
# File 'lib/rbi/printer.rb', line 883
def string(indent: 0, print_locs: false, max_line_length: nil)
out = +""
p = Printer.new(out: out, indent: indent, print_locs: print_locs, max_line_length: max_line_length)
p.visit(self)
out
end
|