ruby_parser 3.20.0 → 3.20.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +6 -0
- data/lib/ruby20_parser.rb +170 -134
- data/lib/ruby20_parser.y +50 -16
- data/lib/ruby21_parser.rb +110 -74
- data/lib/ruby21_parser.y +50 -16
- data/lib/ruby22_parser.rb +238 -202
- data/lib/ruby22_parser.y +50 -16
- data/lib/ruby23_parser.rb +383 -347
- data/lib/ruby23_parser.y +50 -16
- data/lib/ruby24_parser.rb +96 -60
- data/lib/ruby24_parser.y +50 -16
- data/lib/ruby25_parser.rb +92 -56
- data/lib/ruby25_parser.y +50 -16
- data/lib/ruby26_parser.rb +92 -56
- data/lib/ruby26_parser.y +50 -16
- data/lib/ruby27_parser.rb +574 -538
- data/lib/ruby27_parser.y +50 -16
- data/lib/ruby30_parser.rb +357 -331
- data/lib/ruby30_parser.y +42 -16
- data/lib/ruby31_parser.rb +174 -148
- data/lib/ruby31_parser.y +42 -16
- data/lib/ruby32_parser.rb +174 -148
- data/lib/ruby32_parser.y +42 -16
- data/lib/ruby3_parser.yy +42 -16
- data/lib/ruby_parser.yy +50 -16
- data/lib/ruby_parser_extras.rb +19 -13
- data/test/test_ruby_parser.rb +156 -6
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
data/test/test_ruby_parser.rb
CHANGED
@@ -15,11 +15,26 @@ class Sexp
|
|
15
15
|
def == other # :nodoc:
|
16
16
|
if other.class == self.class then
|
17
17
|
super and
|
18
|
-
(line.nil?
|
18
|
+
(line.nil? or other.line.nil? or line == other.line) and
|
19
|
+
(!defined?(@line_max) or @line_max.nil? or line_max == other.line_max)
|
20
|
+
# (line_max.nil? or other.line_max.nil? or line_max == other.line_max)
|
19
21
|
else
|
20
22
|
false
|
21
23
|
end
|
22
24
|
end
|
25
|
+
|
26
|
+
# convenience function just for testing
|
27
|
+
alias dead line_max
|
28
|
+
def line_max n = UNASSIGNED
|
29
|
+
if n != UNASSIGNED then
|
30
|
+
raise ArgumentError, "setting %p.line_max %p" % [self, n] unless Integer === n
|
31
|
+
@line_max = n
|
32
|
+
self
|
33
|
+
else
|
34
|
+
# raise "Accessing before @line_max defined" unless defined?(@line_max)
|
35
|
+
@line_max ||= self.deep_each.map(&:line).compact.max
|
36
|
+
end
|
37
|
+
end
|
23
38
|
end
|
24
39
|
|
25
40
|
module TestRubyParserShared
|
@@ -965,7 +980,12 @@ module TestRubyParserShared
|
|
965
980
|
end
|
966
981
|
|
967
982
|
def test_heredoc_with_extra_carriage_horrible_mix?
|
968
|
-
rb =
|
983
|
+
rb = <<~RUBY
|
984
|
+
<<'eot'\r
|
985
|
+
body\r
|
986
|
+
eot
|
987
|
+
RUBY
|
988
|
+
|
969
989
|
pt = s(:str, "body\r\n")
|
970
990
|
|
971
991
|
assert_parse rb, pt
|
@@ -1051,9 +1071,9 @@ module TestRubyParserShared
|
|
1051
1071
|
end
|
1052
1072
|
|
1053
1073
|
def test_i_fucking_hate_line_numbers2
|
1054
|
-
rb =
|
1074
|
+
rb = <<~EOM
|
1055
1075
|
if true then
|
1056
|
-
p(
|
1076
|
+
p("a")
|
1057
1077
|
b = 1
|
1058
1078
|
p b
|
1059
1079
|
c =1
|
@@ -1074,6 +1094,138 @@ module TestRubyParserShared
|
|
1074
1094
|
assert_parse rb, pt
|
1075
1095
|
end
|
1076
1096
|
|
1097
|
+
line_max_array = s(:array,
|
1098
|
+
s(:lit, :line2).line(2),
|
1099
|
+
s(:lit, :line3).line(3)).line(1).line_max(4)
|
1100
|
+
line_max_array_empty = s(:array).line(1).line_max(4)
|
1101
|
+
[
|
1102
|
+
[:plain_array,
|
1103
|
+
"[\n:line2,\n:line3\n]",
|
1104
|
+
line_max_array,
|
1105
|
+
],
|
1106
|
+
[:pct_i,
|
1107
|
+
"%i[\nline2\nline3\n]",
|
1108
|
+
line_max_array,
|
1109
|
+
],
|
1110
|
+
[:pct_i_empty,
|
1111
|
+
"%i[\n\n\n]",
|
1112
|
+
line_max_array_empty,
|
1113
|
+
],
|
1114
|
+
[:pct_I,
|
1115
|
+
"%I[\nline2\nline3\n]",
|
1116
|
+
line_max_array,
|
1117
|
+
],
|
1118
|
+
[:pct_I_empty,
|
1119
|
+
"%I[\n\n\n]",
|
1120
|
+
line_max_array_empty,
|
1121
|
+
],
|
1122
|
+
[:call_parens,
|
1123
|
+
"x(\n:line2,\n:line3\n)",
|
1124
|
+
s(:call, nil, :x, *line_max_array.sexp_body).line(1).line_max(4),
|
1125
|
+
],
|
1126
|
+
[:pct_w,
|
1127
|
+
"%w[\nline2\nline3\n]",
|
1128
|
+
s(:array,
|
1129
|
+
s(:str, "line2").line(2),
|
1130
|
+
s(:str, "line3").line(3)).line(1).line_max(4),
|
1131
|
+
],
|
1132
|
+
[:pct_w_empty,
|
1133
|
+
"%w[\n\n\n]",
|
1134
|
+
line_max_array_empty,
|
1135
|
+
],
|
1136
|
+
[:pct_W,
|
1137
|
+
"%W[\nline2\nline3\n]",
|
1138
|
+
s(:array,
|
1139
|
+
s(:str, "line2").line(2),
|
1140
|
+
s(:str, "line3").line(3)).line(1).line_max(4),
|
1141
|
+
],
|
1142
|
+
[:pct_W_empty,
|
1143
|
+
"%W[\n\n\n]",
|
1144
|
+
line_max_array_empty,
|
1145
|
+
],
|
1146
|
+
[:regexp,
|
1147
|
+
"%r[\n\n\n]", # double-quotes to have the \n counted as lines on input
|
1148
|
+
s(:lit, %r[#{"\n\n\n"}]).line(1).line_max(4),
|
1149
|
+
],
|
1150
|
+
[:module,
|
1151
|
+
<<~"RUBY",
|
1152
|
+
module X # line 1
|
1153
|
+
module Y # line 2
|
1154
|
+
Z = 42 # line 3
|
1155
|
+
end # line 4
|
1156
|
+
end # line 5
|
1157
|
+
RUBY
|
1158
|
+
s(:module, :X,
|
1159
|
+
s(:module, :Y,
|
1160
|
+
s(:cdecl, :Z, s(:lit, 42).line(3)).line(3).line_max(3)
|
1161
|
+
).line(2).line_max(4)
|
1162
|
+
).line(1).line_max(5)],
|
1163
|
+
[:class,
|
1164
|
+
<<~"RUBY",
|
1165
|
+
class X # line 1
|
1166
|
+
class Y # line 2
|
1167
|
+
Z = 42 # line 3
|
1168
|
+
end # line 4
|
1169
|
+
end # line 5
|
1170
|
+
RUBY
|
1171
|
+
s(:class, :X, nil,
|
1172
|
+
s(:class, :Y, nil,
|
1173
|
+
s(:cdecl, :Z, s(:lit, 42).line(3)).line(3).line_max(3)
|
1174
|
+
).line(2).line_max(4)
|
1175
|
+
).line(1).line_max(5)],
|
1176
|
+
[:cdecl,
|
1177
|
+
<<~"RUBY",
|
1178
|
+
module X
|
1179
|
+
X = [
|
1180
|
+
:line3,
|
1181
|
+
:line4,
|
1182
|
+
]
|
1183
|
+
end
|
1184
|
+
RUBY
|
1185
|
+
s(:module, :X,
|
1186
|
+
s(:cdecl, :X,
|
1187
|
+
s(:array,
|
1188
|
+
s(:lit, :line3).line(3),
|
1189
|
+
s(:lit, :line4).line(4)).line(2).line_max(5),
|
1190
|
+
).line(2).line_max(5),
|
1191
|
+
).line(1).line_max(6)
|
1192
|
+
],
|
1193
|
+
[:defn,
|
1194
|
+
<<~"RUBY",
|
1195
|
+
class X # line 1
|
1196
|
+
def y(a, # line 2
|
1197
|
+
b) # line 3
|
1198
|
+
a + b # line 4
|
1199
|
+
end # line 5
|
1200
|
+
end # line 6
|
1201
|
+
RUBY
|
1202
|
+
s(:class, :X, nil,
|
1203
|
+
s(:defn, :y, s(:args, :a, :b).line(2).line_max(3),
|
1204
|
+
s(:call, s(:lvar, :a).line(4), :+, s(:lvar, :b).line(4)).line(4)
|
1205
|
+
).line(2).line_max(5),
|
1206
|
+
).line(1).line_max(6),
|
1207
|
+
],
|
1208
|
+
[:defs,
|
1209
|
+
<<~"RUBY",
|
1210
|
+
class X # line 1
|
1211
|
+
def self.y(a, # line 2
|
1212
|
+
b) # line 3
|
1213
|
+
a + b # line 4
|
1214
|
+
end # line 5
|
1215
|
+
end # line 6
|
1216
|
+
RUBY
|
1217
|
+
s(:class, :X, nil,
|
1218
|
+
s(:defs, s(:self).line(2), :y, s(:args, :a, :b).line(2).line_max(3),
|
1219
|
+
s(:call, s(:lvar, :a).line(4), :+, s(:lvar, :b).line(4)).line(4)
|
1220
|
+
).line(2).line_max(5),
|
1221
|
+
).line(1).line_max(6),
|
1222
|
+
],
|
1223
|
+
].each do |(name, rb, pt)|
|
1224
|
+
define_method "test_line_numbers__max_line__#{name}" do
|
1225
|
+
assert_parse rb, pt
|
1226
|
+
end
|
1227
|
+
end
|
1228
|
+
|
1077
1229
|
def test_if_elsif
|
1078
1230
|
rb = "if 1; elsif 2; end"
|
1079
1231
|
pt = s(:if, s(:lit, 1), nil, s(:if, s(:lit, 2), nil, nil))
|
@@ -5782,8 +5934,6 @@ class TestRubyParserV26 < RubyParserTestCase
|
|
5782
5934
|
end
|
5783
5935
|
|
5784
5936
|
class TestRubyParserV27 < RubyParserTestCase
|
5785
|
-
make_my_diffs_pretty!
|
5786
|
-
|
5787
5937
|
include TestRubyParserShared27Plus
|
5788
5938
|
|
5789
5939
|
def setup
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.20.
|
4
|
+
version: 3.20.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
ROfWo9Uyp8ba/j9eVG14KkYRaLydAY1MNQk2yd3R5CGfeOpD1kttxjoypoUJ2dOG
|
30
30
|
nsNBRuQJ1UfiCG97a6DNm+Fr
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2023-
|
32
|
+
date: 2023-05-17 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: sexp_processor
|
@@ -245,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
245
|
- !ruby/object:Gem::Version
|
246
246
|
version: '0'
|
247
247
|
requirements: []
|
248
|
-
rubygems_version: 3.4.
|
248
|
+
rubygems_version: 3.4.10
|
249
249
|
signing_key:
|
250
250
|
specification_version: 4
|
251
251
|
summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
|
metadata.gz.sig
CHANGED
Binary file
|