rbi 0.0.10 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rbi/formatter.rb +66 -0
- data/lib/rbi/model.rb +5 -2
- data/lib/rbi/parser.rb +20 -3
- data/lib/rbi/printer.rb +19 -10
- data/lib/rbi/rewriters/group_nodes.rb +2 -0
- data/lib/rbi/version.rb +1 -1
- data/lib/rbi.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5ef2a157e342a16c69748e0f09b67839152d10e99a3b7eab4da23354b8993f9
|
4
|
+
data.tar.gz: 6622c783e58b67a950e4661a025f8d0a9508612eda9ee53af45f72e6c5057286
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 598e6384b4aca8b6db5aa97d6a00e6a75cb1bb4273d5401006c969c4d89730797942c8d0ff7fed0a8da25f6170747126c064c6aadbec210ebb28e4781772ab26
|
7
|
+
data.tar.gz: 6021bd1134be4dfd834ece8648ea904ad30666216411c7524a9f4245f14ecab7b1e6da9d013a8c0bb4a9620fde7db83190b54f7bb512f7d1d23275300112482e
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module RBI
|
5
|
+
class Formatter
|
6
|
+
extend T::Sig
|
7
|
+
|
8
|
+
sig { returns(T::Boolean) }
|
9
|
+
attr_accessor :add_sig_templates, :group_nodes, :nest_singleton_methods, :nest_non_public_methods, :sort_nodes
|
10
|
+
|
11
|
+
sig { returns(T.nilable(Integer)) }
|
12
|
+
attr_accessor :max_line_length
|
13
|
+
|
14
|
+
sig do
|
15
|
+
params(
|
16
|
+
add_sig_templates: T::Boolean,
|
17
|
+
group_nodes: T::Boolean,
|
18
|
+
max_line_length: T.nilable(Integer),
|
19
|
+
nest_singleton_methods: T::Boolean,
|
20
|
+
nest_non_public_methods: T::Boolean,
|
21
|
+
sort_nodes: T::Boolean
|
22
|
+
).void
|
23
|
+
end
|
24
|
+
def initialize(
|
25
|
+
add_sig_templates: false,
|
26
|
+
group_nodes: false,
|
27
|
+
max_line_length: nil,
|
28
|
+
nest_singleton_methods: false,
|
29
|
+
nest_non_public_methods: false,
|
30
|
+
sort_nodes: false
|
31
|
+
)
|
32
|
+
@add_sig_templates = add_sig_templates
|
33
|
+
@group_nodes = group_nodes
|
34
|
+
@max_line_length = max_line_length
|
35
|
+
@nest_singleton_methods = nest_singleton_methods
|
36
|
+
@nest_non_public_methods = nest_non_public_methods
|
37
|
+
@sort_nodes = sort_nodes
|
38
|
+
end
|
39
|
+
|
40
|
+
sig { params(file: RBI::File).returns(String) }
|
41
|
+
def print_file(file)
|
42
|
+
format_file(file)
|
43
|
+
file.string(max_line_length: @max_line_length)
|
44
|
+
end
|
45
|
+
|
46
|
+
sig { params(tree: RBI::Tree).returns(String) }
|
47
|
+
def print_tree(tree)
|
48
|
+
format_tree(tree)
|
49
|
+
tree.string(max_line_length: @max_line_length)
|
50
|
+
end
|
51
|
+
|
52
|
+
sig { params(file: RBI::File).void }
|
53
|
+
def format_file(file)
|
54
|
+
format_tree(file.root)
|
55
|
+
end
|
56
|
+
|
57
|
+
sig { params(tree: RBI::Tree).void }
|
58
|
+
def format_tree(tree)
|
59
|
+
tree.add_sig_templates! if @add_sig_templates
|
60
|
+
tree.nest_singleton_methods! if @nest_singleton_methods
|
61
|
+
tree.nest_non_public_methods! if @nest_non_public_methods
|
62
|
+
tree.group_nodes! if @group_nodes
|
63
|
+
tree.sort_nodes! if @sort_nodes
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/rbi/model.rb
CHANGED
@@ -1026,7 +1026,7 @@ module RBI
|
|
1026
1026
|
attr_accessor :return_type
|
1027
1027
|
|
1028
1028
|
sig { returns(T::Boolean) }
|
1029
|
-
attr_accessor :is_abstract, :is_override, :is_overridable
|
1029
|
+
attr_accessor :is_abstract, :is_override, :is_overridable, :is_final
|
1030
1030
|
|
1031
1031
|
sig { returns(T::Array[String]) }
|
1032
1032
|
attr_reader :type_params
|
@@ -1041,6 +1041,7 @@ module RBI
|
|
1041
1041
|
is_abstract: T::Boolean,
|
1042
1042
|
is_override: T::Boolean,
|
1043
1043
|
is_overridable: T::Boolean,
|
1044
|
+
is_final: T::Boolean,
|
1044
1045
|
type_params: T::Array[String],
|
1045
1046
|
checked: T.nilable(Symbol),
|
1046
1047
|
loc: T.nilable(Loc),
|
@@ -1053,6 +1054,7 @@ module RBI
|
|
1053
1054
|
is_abstract: false,
|
1054
1055
|
is_override: false,
|
1055
1056
|
is_overridable: false,
|
1057
|
+
is_final: false,
|
1056
1058
|
type_params: [],
|
1057
1059
|
checked: nil,
|
1058
1060
|
loc: nil,
|
@@ -1064,6 +1066,7 @@ module RBI
|
|
1064
1066
|
@is_abstract = is_abstract
|
1065
1067
|
@is_override = is_override
|
1066
1068
|
@is_overridable = is_overridable
|
1069
|
+
@is_final = is_final
|
1067
1070
|
@type_params = type_params
|
1068
1071
|
@checked = checked
|
1069
1072
|
block&.call(self)
|
@@ -1078,7 +1081,7 @@ module RBI
|
|
1078
1081
|
def ==(other)
|
1079
1082
|
return false unless other.is_a?(Sig)
|
1080
1083
|
params == other.params && return_type == other.return_type && is_abstract == other.is_abstract &&
|
1081
|
-
is_override == other.is_override && is_overridable == other.is_overridable &&
|
1084
|
+
is_override == other.is_override && is_overridable == other.is_overridable && is_final == other.is_final &&
|
1082
1085
|
type_params == other.type_params && checked == other.checked
|
1083
1086
|
end
|
1084
1087
|
end
|
data/lib/rbi/parser.rb
CHANGED
@@ -289,7 +289,14 @@ module RBI
|
|
289
289
|
names = node.children[2..-1].map { |child| parse_name(child) }
|
290
290
|
MixesInClassMethods.new(*names, loc: loc, comments: comments)
|
291
291
|
when :public, :protected, :private
|
292
|
-
visibility =
|
292
|
+
visibility = case method_name
|
293
|
+
when :protected
|
294
|
+
Protected.new(loc: loc)
|
295
|
+
when :private
|
296
|
+
Private.new(loc: loc)
|
297
|
+
else
|
298
|
+
Public.new(loc: loc)
|
299
|
+
end
|
293
300
|
nested_node = node.children[2]
|
294
301
|
case nested_node&.type
|
295
302
|
when :def, :defs
|
@@ -422,7 +429,14 @@ module RBI
|
|
422
429
|
sig { params(node: AST::Node).returns(TEnumBlock) }
|
423
430
|
def parse_enum(node)
|
424
431
|
enum = TEnumBlock.new
|
425
|
-
|
432
|
+
|
433
|
+
body = if node.children[2].type == :begin
|
434
|
+
node.children[2].children
|
435
|
+
else
|
436
|
+
[node.children[2]]
|
437
|
+
end
|
438
|
+
|
439
|
+
body.each do |child|
|
426
440
|
enum << parse_name(child)
|
427
441
|
end
|
428
442
|
enum.loc = node_loc(node)
|
@@ -561,7 +575,7 @@ module RBI
|
|
561
575
|
sig { params(node: AST::Node).returns(Sig) }
|
562
576
|
def self.build(node)
|
563
577
|
v = SigBuilder.new
|
564
|
-
v.visit_all(node.children
|
578
|
+
v.visit_all(node.children)
|
565
579
|
v.current
|
566
580
|
end
|
567
581
|
|
@@ -588,6 +602,9 @@ module RBI
|
|
588
602
|
visit(node.children[0]) if node.children[0]
|
589
603
|
name = node.children[1]
|
590
604
|
case name
|
605
|
+
when :sig
|
606
|
+
arg = node.children[2]
|
607
|
+
@current.is_final = arg && arg.children[0] == :final
|
591
608
|
when :abstract
|
592
609
|
@current.is_abstract = true
|
593
610
|
when :override
|
data/lib/rbi/printer.rb
CHANGED
@@ -117,16 +117,23 @@ module RBI
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
sig
|
121
|
-
|
122
|
-
|
120
|
+
sig do
|
121
|
+
params(
|
122
|
+
out: T.any(IO, StringIO),
|
123
|
+
indent: Integer,
|
124
|
+
print_locs: T::Boolean,
|
125
|
+
max_line_length: T.nilable(Integer)
|
126
|
+
).void
|
127
|
+
end
|
128
|
+
def print(out: $stdout, indent: 0, print_locs: false, max_line_length: nil)
|
129
|
+
p = Printer.new(out: out, indent: indent, print_locs: print_locs, max_line_length: max_line_length)
|
123
130
|
p.visit_file(self)
|
124
131
|
end
|
125
132
|
|
126
|
-
sig { params(indent: Integer, print_locs: T::Boolean).returns(String) }
|
127
|
-
def string(indent: 0, print_locs: false)
|
133
|
+
sig { params(indent: Integer, print_locs: T::Boolean, max_line_length: T.nilable(Integer)).returns(String) }
|
134
|
+
def string(indent: 0, print_locs: false, max_line_length: nil)
|
128
135
|
out = StringIO.new
|
129
|
-
print(out: out, indent: indent, print_locs: print_locs)
|
136
|
+
print(out: out, indent: indent, print_locs: print_locs, max_line_length: max_line_length)
|
130
137
|
out.string
|
131
138
|
end
|
132
139
|
end
|
@@ -193,7 +200,7 @@ module RBI
|
|
193
200
|
end
|
194
201
|
|
195
202
|
lines.each do |line|
|
196
|
-
text = line.
|
203
|
+
text = line.rstrip
|
197
204
|
v.printt("#")
|
198
205
|
v.print(" #{text}") unless text.empty?
|
199
206
|
v.printn
|
@@ -448,7 +455,7 @@ module RBI
|
|
448
455
|
|
449
456
|
sig { returns(T::Array[String]) }
|
450
457
|
def comments_lines
|
451
|
-
comments.flat_map { |comment| comment.text.lines.map(&:
|
458
|
+
comments.flat_map { |comment| comment.text.lines.map(&:rstrip) }
|
452
459
|
end
|
453
460
|
end
|
454
461
|
|
@@ -663,7 +670,9 @@ module RBI
|
|
663
670
|
|
664
671
|
sig { params(v: Printer).void }
|
665
672
|
def print_as_line(v)
|
666
|
-
v.printt("sig
|
673
|
+
v.printt("sig")
|
674
|
+
v.print("(:final)") if is_final
|
675
|
+
v.print(" { ")
|
667
676
|
sig_modifiers.each do |modifier|
|
668
677
|
v.print("#{modifier}.")
|
669
678
|
end
|
@@ -751,7 +760,7 @@ module RBI
|
|
751
760
|
|
752
761
|
sig { returns(T::Array[String]) }
|
753
762
|
def comments_lines
|
754
|
-
comments.flat_map { |comment| comment.text.lines.map(&:
|
763
|
+
comments.flat_map { |comment| comment.text.lines.map(&:rstrip) }
|
755
764
|
end
|
756
765
|
end
|
757
766
|
|
data/lib/rbi/version.rb
CHANGED
data/lib/rbi.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Terrasa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- README.md
|
78
78
|
- Rakefile
|
79
79
|
- lib/rbi.rb
|
80
|
+
- lib/rbi/formatter.rb
|
80
81
|
- lib/rbi/index.rb
|
81
82
|
- lib/rbi/loc.rb
|
82
83
|
- lib/rbi/model.rb
|