prettier 1.2.3 → 1.2.4
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/CHANGELOG.md +11 -0
- data/README.md +13 -0
- data/package.json +1 -1
- data/rubocop.yml +26 -0
- data/src/prettier.js +1 -0
- data/src/ruby/embed.js +4 -0
- data/src/ruby/nodes/blocks.js +64 -59
- data/src/ruby/nodes/hooks.js +9 -19
- data/src/ruby/nodes/methods.js +4 -6
- data/src/ruby/nodes/params.js +22 -14
- data/src/ruby/nodes/patterns.js +9 -5
- data/src/ruby/nodes/return.js +0 -4
- data/src/ruby/nodes/statements.js +5 -8
- data/src/ruby/nodes/strings.js +26 -35
- data/src/ruby/parser.js +2 -1
- data/src/ruby/parser.rb +194 -193
- data/src/ruby/toProc.js +4 -8
- data/src/utils/makeCall.js +3 -0
- metadata +2 -1
data/src/ruby/nodes/strings.js
CHANGED
@@ -31,17 +31,10 @@ function isSingleQuotable(node) {
|
|
31
31
|
|
32
32
|
const quotePattern = new RegExp("\\\\([\\s\\S])|(['\"])", "g");
|
33
33
|
|
34
|
-
function normalizeQuotes(content, enclosingQuote
|
35
|
-
const replaceOther = originalQuote === '"';
|
36
|
-
const otherQuote = enclosingQuote === '"' ? "'" : '"';
|
37
|
-
|
34
|
+
function normalizeQuotes(content, enclosingQuote) {
|
38
35
|
// Escape and unescape single and double quotes as needed to be able to
|
39
36
|
// enclose `content` with `enclosingQuote`.
|
40
37
|
return content.replace(quotePattern, (match, escaped, quote) => {
|
41
|
-
if (replaceOther && escaped === otherQuote) {
|
42
|
-
return escaped;
|
43
|
-
}
|
44
|
-
|
45
38
|
if (quote === enclosingQuote) {
|
46
39
|
return `\\${quote}`;
|
47
40
|
}
|
@@ -97,12 +90,34 @@ function printDynaSymbol(path, opts, print) {
|
|
97
90
|
return concat([":", quote].concat(path.map(print, "body")).concat(quote));
|
98
91
|
}
|
99
92
|
|
93
|
+
function printStringConcat(path, opts, print) {
|
94
|
+
const [leftDoc, rightDoc] = path.map(print, "body");
|
95
|
+
|
96
|
+
return group(concat([leftDoc, " \\", indent(concat([hardline, rightDoc]))]));
|
97
|
+
}
|
98
|
+
|
100
99
|
// Prints out an interpolated variable in the string by converting it into an
|
101
100
|
// embedded expression.
|
102
101
|
function printStringDVar(path, opts, print) {
|
103
102
|
return concat(["#{", path.call(print, "body", 0), "}"]);
|
104
103
|
}
|
105
104
|
|
105
|
+
function printStringEmbExpr(path, opts, print) {
|
106
|
+
const parts = path.call(print, "body", 0);
|
107
|
+
|
108
|
+
// If the interpolated expression is inside of a heredoc or an xstring
|
109
|
+
// literal (a string that gets sent to the command line) then we don't want
|
110
|
+
// to automatically indent, as this can lead to some very odd looking
|
111
|
+
// expressions
|
112
|
+
if (["heredoc", "xstring_literal"].includes(path.getParentNode().type)) {
|
113
|
+
return concat(["#{", parts, "}"]);
|
114
|
+
}
|
115
|
+
|
116
|
+
return group(
|
117
|
+
concat(["#{", indent(concat([softline, parts])), concat([softline, "}"])])
|
118
|
+
);
|
119
|
+
}
|
120
|
+
|
106
121
|
// Prints out a literal string. This function does its best to respect the
|
107
122
|
// wishes of the user with regards to single versus double quotes, but if the
|
108
123
|
// string contains any escape expressions then it will just keep the original
|
@@ -131,10 +146,7 @@ function printStringLiteral(path, { rubySingleQuote }, print) {
|
|
131
146
|
}
|
132
147
|
|
133
148
|
// In this case, the part of the string is just regular string content
|
134
|
-
return join(
|
135
|
-
literalline,
|
136
|
-
normalizeQuotes(part.body, quote, node.quote).split("\n")
|
137
|
-
);
|
149
|
+
return join(literalline, normalizeQuotes(part.body, quote).split("\n"));
|
138
150
|
});
|
139
151
|
|
140
152
|
return concat([quote].concat(parts).concat(getClosingQuote(quote)));
|
@@ -155,30 +167,9 @@ function printXStringLiteral(path, opts, print) {
|
|
155
167
|
module.exports = {
|
156
168
|
"@CHAR": printChar,
|
157
169
|
dyna_symbol: printDynaSymbol,
|
158
|
-
string_concat:
|
159
|
-
group(
|
160
|
-
concat([
|
161
|
-
path.call(print, "body", 0),
|
162
|
-
" \\",
|
163
|
-
indent(concat([hardline, path.call(print, "body", 1)]))
|
164
|
-
])
|
165
|
-
),
|
170
|
+
string_concat: printStringConcat,
|
166
171
|
string_dvar: printStringDVar,
|
167
|
-
string_embexpr:
|
168
|
-
const parts = path.call(print, "body", 0);
|
169
|
-
|
170
|
-
// If the interpolated expression is inside of a heredoc or an xstring
|
171
|
-
// literal (a string that gets sent to the command line) then we don't want
|
172
|
-
// to automatically indent, as this can lead to some very odd looking
|
173
|
-
// expressions
|
174
|
-
if (["heredoc", "xstring_literal"].includes(path.getParentNode().type)) {
|
175
|
-
return concat(["#{", parts, "}"]);
|
176
|
-
}
|
177
|
-
|
178
|
-
return group(
|
179
|
-
concat(["#{", indent(concat([softline, parts])), concat([softline, "}"])])
|
180
|
-
);
|
181
|
-
},
|
172
|
+
string_embexpr: printStringEmbExpr,
|
182
173
|
string_literal: printStringLiteral,
|
183
174
|
symbol_literal: printSymbolLiteral,
|
184
175
|
xstring_literal: printXStringLiteral
|
data/src/ruby/parser.js
CHANGED
@@ -4,6 +4,7 @@ const path = require("path");
|
|
4
4
|
// In order to properly parse ruby code, we need to tell the ruby process to
|
5
5
|
// parse using UTF-8. Unfortunately, the way that you accomplish this looks
|
6
6
|
// differently depending on your platform.
|
7
|
+
/* istanbul ignore next */
|
7
8
|
const LANG = (() => {
|
8
9
|
const { env, platform } = process;
|
9
10
|
const envValue = env.LC_ALL || env.LC_CTYPE || env.LANG;
|
@@ -42,7 +43,7 @@ function parse(text, _parsers, _opts) {
|
|
42
43
|
{
|
43
44
|
env: Object.assign({}, process.env, { LANG }),
|
44
45
|
input: text,
|
45
|
-
maxBuffer:
|
46
|
+
maxBuffer: 15 * 1024 * 1024 // 15MB
|
46
47
|
}
|
47
48
|
);
|
48
49
|
|
data/src/ruby/parser.rb
CHANGED
@@ -93,8 +93,8 @@ class Prettier::Parser < Ripper
|
|
93
93
|
node = {
|
94
94
|
type: :"@#{event}",
|
95
95
|
body: value,
|
96
|
-
|
97
|
-
|
96
|
+
sl: lineno,
|
97
|
+
el: lineno,
|
98
98
|
sc: char_pos,
|
99
99
|
ec: ec
|
100
100
|
}
|
@@ -118,8 +118,8 @@ class Prettier::Parser < Ripper
|
|
118
118
|
@comments << {
|
119
119
|
type: :@comment,
|
120
120
|
value: value[1..-1].chomp.force_encoding('UTF-8'),
|
121
|
-
|
122
|
-
|
121
|
+
sl: lineno,
|
122
|
+
el: lineno,
|
123
123
|
sc: char_pos,
|
124
124
|
ec: char_pos + value.length - 1
|
125
125
|
}
|
@@ -138,8 +138,8 @@ class Prettier::Parser < Ripper
|
|
138
138
|
{
|
139
139
|
type: :ignored_nl,
|
140
140
|
body: nil,
|
141
|
-
|
142
|
-
|
141
|
+
sl: lineno,
|
142
|
+
el: lineno,
|
143
143
|
sc: char_pos,
|
144
144
|
ec: char_pos
|
145
145
|
}
|
@@ -191,7 +191,7 @@ class Prettier::Parser < Ripper
|
|
191
191
|
find_scanner_event(:@kw, 'BEGIN').merge!(
|
192
192
|
type: :BEGIN,
|
193
193
|
body: [beging, stmts],
|
194
|
-
|
194
|
+
el: ending[:el],
|
195
195
|
ec: ending[:ec]
|
196
196
|
)
|
197
197
|
end
|
@@ -215,7 +215,7 @@ class Prettier::Parser < Ripper
|
|
215
215
|
find_scanner_event(:@kw, 'END').merge!(
|
216
216
|
type: :END,
|
217
217
|
body: [beging, stmts],
|
218
|
-
|
218
|
+
el: ending[:el],
|
219
219
|
ec: ending[:ec]
|
220
220
|
)
|
221
221
|
end
|
@@ -234,9 +234,9 @@ class Prettier::Parser < Ripper
|
|
234
234
|
{
|
235
235
|
type: :alias,
|
236
236
|
body: [left, right],
|
237
|
-
|
237
|
+
sl: beging[:sl],
|
238
238
|
sc: beging[:sc],
|
239
|
-
|
239
|
+
el: ending[:el],
|
240
240
|
ec: ending[:ec]
|
241
241
|
}
|
242
242
|
end
|
@@ -262,9 +262,9 @@ class Prettier::Parser < Ripper
|
|
262
262
|
{
|
263
263
|
type: :aref,
|
264
264
|
body: [collection, index],
|
265
|
-
|
265
|
+
sl: collection[:sl],
|
266
266
|
sc: collection[:sc],
|
267
|
-
|
267
|
+
el: ending[:el],
|
268
268
|
ec: ending[:ec]
|
269
269
|
}
|
270
270
|
end
|
@@ -278,9 +278,9 @@ class Prettier::Parser < Ripper
|
|
278
278
|
{
|
279
279
|
type: :aref_field,
|
280
280
|
body: [collection, index],
|
281
|
-
|
281
|
+
sl: collection[:sl],
|
282
282
|
sc: collection[:sc],
|
283
|
-
|
283
|
+
el: ending[:el],
|
284
284
|
ec: ending[:ec]
|
285
285
|
}
|
286
286
|
end
|
@@ -292,9 +292,9 @@ class Prettier::Parser < Ripper
|
|
292
292
|
{
|
293
293
|
type: :args,
|
294
294
|
body: [],
|
295
|
-
|
295
|
+
sl: lineno,
|
296
296
|
sc: char_pos,
|
297
|
-
|
297
|
+
el: lineno,
|
298
298
|
ec: char_pos
|
299
299
|
}
|
300
300
|
end
|
@@ -307,7 +307,7 @@ class Prettier::Parser < Ripper
|
|
307
307
|
if args[:body].empty?
|
308
308
|
arg.merge(type: :args, body: [arg])
|
309
309
|
else
|
310
|
-
args.merge!(body: args[:body] << arg,
|
310
|
+
args.merge!(body: args[:body] << arg, el: arg[:el], ec: arg[:ec])
|
311
311
|
end
|
312
312
|
end
|
313
313
|
|
@@ -320,7 +320,7 @@ class Prettier::Parser < Ripper
|
|
320
320
|
args.merge(
|
321
321
|
type: :args_add_block,
|
322
322
|
body: [args, block],
|
323
|
-
|
323
|
+
el: ending[:el],
|
324
324
|
ec: ending[:ec]
|
325
325
|
)
|
326
326
|
end
|
@@ -335,9 +335,9 @@ class Prettier::Parser < Ripper
|
|
335
335
|
{
|
336
336
|
type: :args_add_star,
|
337
337
|
body: [args, part],
|
338
|
-
|
338
|
+
sl: beging[:sl],
|
339
339
|
sc: beging[:sc],
|
340
|
-
|
340
|
+
el: ending[:el],
|
341
341
|
ec: ending[:ec]
|
342
342
|
}
|
343
343
|
end
|
@@ -357,14 +357,14 @@ class Prettier::Parser < Ripper
|
|
357
357
|
# If the arguments exceed the ending of the parentheses, then we know we
|
358
358
|
# have a heredoc in the arguments, and we need to use the bounds of the
|
359
359
|
# arguments to determine how large the arg_paren is.
|
360
|
-
ending = (args && args[:
|
360
|
+
ending = (args && args[:el] > rparen[:el]) ? args : rparen
|
361
361
|
|
362
362
|
{
|
363
363
|
type: :arg_paren,
|
364
364
|
body: [args],
|
365
|
-
|
365
|
+
sl: beging[:sl],
|
366
366
|
sc: beging[:sc],
|
367
|
-
|
367
|
+
el: ending[:el],
|
368
368
|
ec: ending[:ec]
|
369
369
|
}
|
370
370
|
end
|
@@ -381,9 +381,9 @@ class Prettier::Parser < Ripper
|
|
381
381
|
{
|
382
382
|
type: :array,
|
383
383
|
body: [contents],
|
384
|
-
|
384
|
+
sl: beging[:sl],
|
385
385
|
sc: beging[:sc],
|
386
|
-
|
386
|
+
el: ending[:el],
|
387
387
|
ec: ending[:ec]
|
388
388
|
}
|
389
389
|
else
|
@@ -393,7 +393,7 @@ class Prettier::Parser < Ripper
|
|
393
393
|
ending.merge!(
|
394
394
|
type: :array,
|
395
395
|
body: [contents],
|
396
|
-
|
396
|
+
sl: contents[:sl],
|
397
397
|
sc: contents[:sc]
|
398
398
|
)
|
399
399
|
end
|
@@ -407,9 +407,9 @@ class Prettier::Parser < Ripper
|
|
407
407
|
{
|
408
408
|
type: :aryptn,
|
409
409
|
body: [const, preargs, splatarg, postargs],
|
410
|
-
|
410
|
+
sl: pieces[0][:sl],
|
411
411
|
sc: pieces[0][:sc],
|
412
|
-
|
412
|
+
el: pieces[-1][:el],
|
413
413
|
ec: pieces[-1][:ec]
|
414
414
|
}
|
415
415
|
end
|
@@ -421,7 +421,7 @@ class Prettier::Parser < Ripper
|
|
421
421
|
left.merge(
|
422
422
|
type: :assign,
|
423
423
|
body: [left, right],
|
424
|
-
|
424
|
+
el: right[:el],
|
425
425
|
ec: right[:ec]
|
426
426
|
)
|
427
427
|
end
|
@@ -433,9 +433,9 @@ class Prettier::Parser < Ripper
|
|
433
433
|
{
|
434
434
|
type: :assoc_new,
|
435
435
|
body: [key, value],
|
436
|
-
|
436
|
+
sl: key[:sl],
|
437
437
|
sc: key[:sc],
|
438
|
-
|
438
|
+
el: value[:el],
|
439
439
|
ec: value[:ec]
|
440
440
|
}
|
441
441
|
end
|
@@ -446,7 +446,7 @@ class Prettier::Parser < Ripper
|
|
446
446
|
find_scanner_event(:@op, '**').merge!(
|
447
447
|
type: :assoc_splat,
|
448
448
|
body: [contents],
|
449
|
-
|
449
|
+
el: contents[:el],
|
450
450
|
ec: contents[:ec]
|
451
451
|
)
|
452
452
|
end
|
@@ -459,9 +459,9 @@ class Prettier::Parser < Ripper
|
|
459
459
|
{
|
460
460
|
type: :assoclist_from_args,
|
461
461
|
body: assocs,
|
462
|
-
|
462
|
+
sl: assocs[0][:sl],
|
463
463
|
sc: assocs[0][:sc],
|
464
|
-
|
464
|
+
el: assocs[-1][:el],
|
465
465
|
ec: assocs[-1][:ec]
|
466
466
|
}
|
467
467
|
end
|
@@ -474,9 +474,9 @@ class Prettier::Parser < Ripper
|
|
474
474
|
{
|
475
475
|
type: :bare_assoc_hash,
|
476
476
|
body: assoc_news,
|
477
|
-
|
477
|
+
sl: assoc_news[0][:sl],
|
478
478
|
sc: assoc_news[0][:sc],
|
479
|
-
|
479
|
+
el: assoc_news[-1][:el],
|
480
480
|
ec: assoc_news[-1][:ec]
|
481
481
|
}
|
482
482
|
end
|
@@ -497,7 +497,7 @@ class Prettier::Parser < Ripper
|
|
497
497
|
beging.merge!(
|
498
498
|
type: :begin,
|
499
499
|
body: [bodystmt],
|
500
|
-
|
500
|
+
el: bodystmt[:el],
|
501
501
|
ec: bodystmt[:ec]
|
502
502
|
)
|
503
503
|
end
|
@@ -508,9 +508,9 @@ class Prettier::Parser < Ripper
|
|
508
508
|
{
|
509
509
|
type: :binary,
|
510
510
|
body: [left, oper, right],
|
511
|
-
|
511
|
+
sl: left[:sl],
|
512
512
|
sc: left[:sc],
|
513
|
-
|
513
|
+
el: right[:el],
|
514
514
|
ec: right[:ec]
|
515
515
|
}
|
516
516
|
end
|
@@ -530,9 +530,9 @@ class Prettier::Parser < Ripper
|
|
530
530
|
{
|
531
531
|
type: :block_var,
|
532
532
|
body: [params, locals],
|
533
|
-
|
533
|
+
sl: beging[:sl],
|
534
534
|
sc: beging[:sc],
|
535
|
-
|
535
|
+
el: ending[:el],
|
536
536
|
ec: ending[:ec]
|
537
537
|
}
|
538
538
|
end
|
@@ -543,7 +543,7 @@ class Prettier::Parser < Ripper
|
|
543
543
|
find_scanner_event(:@op, '&').merge!(
|
544
544
|
type: :blockarg,
|
545
545
|
body: [ident],
|
546
|
-
|
546
|
+
el: ident[:el],
|
547
547
|
ec: ident[:ec]
|
548
548
|
)
|
549
549
|
end
|
@@ -574,9 +574,9 @@ class Prettier::Parser < Ripper
|
|
574
574
|
BodyStmt.new(
|
575
575
|
type: :bodystmt,
|
576
576
|
body: [stmts, rescued, ensured, elsed],
|
577
|
-
|
577
|
+
sl: lineno,
|
578
578
|
sc: char_pos,
|
579
|
-
|
579
|
+
el: lineno,
|
580
580
|
ec: char_pos
|
581
581
|
)
|
582
582
|
end
|
@@ -594,9 +594,9 @@ class Prettier::Parser < Ripper
|
|
594
594
|
{
|
595
595
|
type: :brace_block,
|
596
596
|
body: [block_var, stmts],
|
597
|
-
|
597
|
+
sl: beging[:sl],
|
598
598
|
sc: beging[:sc],
|
599
|
-
|
599
|
+
el: ending[:el],
|
600
600
|
ec: ending[:ec]
|
601
601
|
}
|
602
602
|
end
|
@@ -617,7 +617,7 @@ class Prettier::Parser < Ripper
|
|
617
617
|
beging.merge!(
|
618
618
|
type: :break,
|
619
619
|
body: [args_add_block],
|
620
|
-
|
620
|
+
el: args_add_block[:el],
|
621
621
|
ec: args_add_block[:ec]
|
622
622
|
)
|
623
623
|
end
|
@@ -651,9 +651,9 @@ class Prettier::Parser < Ripper
|
|
651
651
|
{
|
652
652
|
type: :call,
|
653
653
|
body: [receiver, oper, sending],
|
654
|
-
|
654
|
+
sl: receiver[:sl],
|
655
655
|
sc: receiver[:sc],
|
656
|
-
|
656
|
+
el: ending[:el],
|
657
657
|
ec: ending[:ec]
|
658
658
|
}
|
659
659
|
end
|
@@ -672,7 +672,7 @@ class Prettier::Parser < Ripper
|
|
672
672
|
|
673
673
|
beging.merge!(
|
674
674
|
body: [switch, consequent],
|
675
|
-
|
675
|
+
el: consequent[:el],
|
676
676
|
ec: consequent[:ec]
|
677
677
|
)
|
678
678
|
end
|
@@ -714,9 +714,9 @@ class Prettier::Parser < Ripper
|
|
714
714
|
{
|
715
715
|
type: :class,
|
716
716
|
body: [const, superclass, bodystmt],
|
717
|
-
|
717
|
+
sl: beging[:sl],
|
718
718
|
sc: beging[:sc],
|
719
|
-
|
719
|
+
el: ending[:el],
|
720
720
|
ec: ending[:ec]
|
721
721
|
}
|
722
722
|
end
|
@@ -728,9 +728,9 @@ class Prettier::Parser < Ripper
|
|
728
728
|
{
|
729
729
|
type: :command,
|
730
730
|
body: [ident, args],
|
731
|
-
|
731
|
+
sl: ident[:sl],
|
732
732
|
sc: ident[:sc],
|
733
|
-
|
733
|
+
el: args[:el],
|
734
734
|
ec: args[:ec]
|
735
735
|
}
|
736
736
|
end
|
@@ -750,9 +750,9 @@ class Prettier::Parser < Ripper
|
|
750
750
|
{
|
751
751
|
type: :command_call,
|
752
752
|
body: [receiver, oper, ident, args],
|
753
|
-
|
753
|
+
sl: receiver[:sl],
|
754
754
|
sc: receiver[:sc],
|
755
|
-
|
755
|
+
el: ending[:el],
|
756
756
|
ec: ending[:ec]
|
757
757
|
}
|
758
758
|
end
|
@@ -767,9 +767,9 @@ class Prettier::Parser < Ripper
|
|
767
767
|
{
|
768
768
|
type: :const_path_field,
|
769
769
|
body: [left, const],
|
770
|
-
|
770
|
+
sl: left[:sl],
|
771
771
|
sc: left[:sc],
|
772
|
-
|
772
|
+
el: const[:el],
|
773
773
|
ec: const[:ec]
|
774
774
|
}
|
775
775
|
end
|
@@ -784,9 +784,9 @@ class Prettier::Parser < Ripper
|
|
784
784
|
{
|
785
785
|
type: :const_path_ref,
|
786
786
|
body: [left, const],
|
787
|
-
|
787
|
+
sl: left[:sl],
|
788
788
|
sc: left[:sc],
|
789
|
-
|
789
|
+
el: const[:el],
|
790
790
|
ec: const[:ec]
|
791
791
|
}
|
792
792
|
end
|
@@ -837,9 +837,9 @@ class Prettier::Parser < Ripper
|
|
837
837
|
{
|
838
838
|
type: :defsl,
|
839
839
|
body: [ident, params, bodystmt],
|
840
|
-
|
840
|
+
sl: beging[:sl],
|
841
841
|
sc: beging[:sc],
|
842
|
-
|
842
|
+
el: bodystmt[:el],
|
843
843
|
ec: bodystmt[:ec]
|
844
844
|
}
|
845
845
|
)
|
@@ -857,9 +857,9 @@ class Prettier::Parser < Ripper
|
|
857
857
|
{
|
858
858
|
type: :def,
|
859
859
|
body: [ident, params, bodystmt],
|
860
|
-
|
860
|
+
sl: beging[:sl],
|
861
861
|
sc: beging[:sc],
|
862
|
-
|
862
|
+
el: ending[:el],
|
863
863
|
ec: ending[:ec]
|
864
864
|
}
|
865
865
|
end
|
@@ -897,9 +897,9 @@ class Prettier::Parser < Ripper
|
|
897
897
|
{
|
898
898
|
type: :defs,
|
899
899
|
body: [target, oper, ident, params, bodystmt],
|
900
|
-
|
900
|
+
sl: beging[:sl],
|
901
901
|
sc: beging[:sc],
|
902
|
-
|
902
|
+
el: ending[:el],
|
903
903
|
ec: ending[:ec]
|
904
904
|
}
|
905
905
|
end
|
@@ -917,7 +917,7 @@ class Prettier::Parser < Ripper
|
|
917
917
|
beging.merge!(
|
918
918
|
type: :defined,
|
919
919
|
body: [value],
|
920
|
-
|
920
|
+
el: ending[:el],
|
921
921
|
ec: ending[:ec]
|
922
922
|
)
|
923
923
|
end
|
@@ -935,9 +935,9 @@ class Prettier::Parser < Ripper
|
|
935
935
|
{
|
936
936
|
type: :do_block,
|
937
937
|
body: [block_var, bodystmt],
|
938
|
-
|
938
|
+
sl: beging[:sl],
|
939
939
|
sc: beging[:sc],
|
940
|
-
|
940
|
+
el: ending[:el],
|
941
941
|
ec: ending[:ec]
|
942
942
|
}
|
943
943
|
end
|
@@ -954,9 +954,9 @@ class Prettier::Parser < Ripper
|
|
954
954
|
{
|
955
955
|
type: :dot2,
|
956
956
|
body: [left, right],
|
957
|
-
|
957
|
+
sl: beging[:sl],
|
958
958
|
sc: beging[:sc],
|
959
|
-
|
959
|
+
el: ending[:el],
|
960
960
|
ec: ending[:ec]
|
961
961
|
}
|
962
962
|
end
|
@@ -973,9 +973,9 @@ class Prettier::Parser < Ripper
|
|
973
973
|
{
|
974
974
|
type: :dot3,
|
975
975
|
body: [left, right],
|
976
|
-
|
976
|
+
sl: beging[:sl],
|
977
977
|
sc: beging[:sc],
|
978
|
-
|
978
|
+
el: ending[:el],
|
979
979
|
ec: ending[:ec]
|
980
980
|
}
|
981
981
|
end
|
@@ -1008,7 +1008,7 @@ class Prettier::Parser < Ripper
|
|
1008
1008
|
type: :dyna_symbol,
|
1009
1009
|
quote: beging[:body][1],
|
1010
1010
|
body: string[:body],
|
1011
|
-
|
1011
|
+
el: ending[:el],
|
1012
1012
|
ec: ending[:ec]
|
1013
1013
|
)
|
1014
1014
|
else
|
@@ -1019,9 +1019,9 @@ class Prettier::Parser < Ripper
|
|
1019
1019
|
string.merge!(
|
1020
1020
|
type: :dyna_symbol,
|
1021
1021
|
quote: ending[:body][0],
|
1022
|
-
|
1022
|
+
sl: beging[:sl],
|
1023
1023
|
sc: beging[:sc],
|
1024
|
-
|
1024
|
+
el: ending[:el],
|
1025
1025
|
ec: ending[:ec]
|
1026
1026
|
)
|
1027
1027
|
end
|
@@ -1052,9 +1052,9 @@ class Prettier::Parser < Ripper
|
|
1052
1052
|
{
|
1053
1053
|
type: :else,
|
1054
1054
|
body: [stmts],
|
1055
|
-
|
1055
|
+
sl: beging[:sl],
|
1056
1056
|
sc: beging[:sc],
|
1057
|
-
|
1057
|
+
el: ending[:el],
|
1058
1058
|
ec: ending[:ec]
|
1059
1059
|
}
|
1060
1060
|
end
|
@@ -1072,9 +1072,9 @@ class Prettier::Parser < Ripper
|
|
1072
1072
|
{
|
1073
1073
|
type: :elsif,
|
1074
1074
|
body: [predicate, stmts, consequent],
|
1075
|
-
|
1075
|
+
sl: beging[:sl],
|
1076
1076
|
sc: beging[:sc],
|
1077
|
-
|
1077
|
+
el: ending[:el],
|
1078
1078
|
ec: ending[:ec]
|
1079
1079
|
}
|
1080
1080
|
end
|
@@ -1085,7 +1085,7 @@ class Prettier::Parser < Ripper
|
|
1085
1085
|
# and add to it as we get content. It always starts with this scanner
|
1086
1086
|
# event, so here we'll initialize the current embdoc.
|
1087
1087
|
def on_embdoc_beg(value)
|
1088
|
-
@embdoc = { type: :@embdoc, value: value,
|
1088
|
+
@embdoc = { type: :@embdoc, value: value, sl: lineno, sc: char_pos }
|
1089
1089
|
end
|
1090
1090
|
|
1091
1091
|
# This is a scanner event that gets hit when we're inside an embdoc and
|
@@ -1104,7 +1104,7 @@ class Prettier::Parser < Ripper
|
|
1104
1104
|
@comments <<
|
1105
1105
|
@embdoc.merge!(
|
1106
1106
|
value: @embdoc[:value] << value.chomp,
|
1107
|
-
|
1107
|
+
el: lineno,
|
1108
1108
|
ec: char_pos + value.length - 1
|
1109
1109
|
)
|
1110
1110
|
|
@@ -1129,9 +1129,9 @@ class Prettier::Parser < Ripper
|
|
1129
1129
|
{
|
1130
1130
|
type: :ensure,
|
1131
1131
|
body: [beging, stmts],
|
1132
|
-
|
1132
|
+
sl: beging[:sl],
|
1133
1133
|
sc: beging[:sc],
|
1134
|
-
|
1134
|
+
el: ending[:el],
|
1135
1135
|
ec: ending[:ec]
|
1136
1136
|
}
|
1137
1137
|
end
|
@@ -1160,9 +1160,9 @@ class Prettier::Parser < Ripper
|
|
1160
1160
|
{
|
1161
1161
|
type: :field,
|
1162
1162
|
body: [left, oper, right],
|
1163
|
-
|
1163
|
+
sl: left[:sl],
|
1164
1164
|
sc: left[:sc],
|
1165
|
-
|
1165
|
+
el: right[:el],
|
1166
1166
|
ec: right[:ec]
|
1167
1167
|
}
|
1168
1168
|
end
|
@@ -1176,9 +1176,9 @@ class Prettier::Parser < Ripper
|
|
1176
1176
|
{
|
1177
1177
|
type: :fndptn,
|
1178
1178
|
body: [const, presplat, args, postsplat],
|
1179
|
-
|
1179
|
+
sl: beging[:sl],
|
1180
1180
|
sc: beging[:sc],
|
1181
|
-
|
1181
|
+
el: ending[:el],
|
1182
1182
|
ec: ending[:ec]
|
1183
1183
|
}
|
1184
1184
|
end
|
@@ -1196,9 +1196,9 @@ class Prettier::Parser < Ripper
|
|
1196
1196
|
{
|
1197
1197
|
type: :for,
|
1198
1198
|
body: [ident, enumerable, stmts],
|
1199
|
-
|
1199
|
+
sl: beging[:sl],
|
1200
1200
|
sc: beging[:sc],
|
1201
|
-
|
1201
|
+
el: ending[:el],
|
1202
1202
|
ec: ending[:ec]
|
1203
1203
|
}
|
1204
1204
|
end
|
@@ -1219,9 +1219,9 @@ class Prettier::Parser < Ripper
|
|
1219
1219
|
{
|
1220
1220
|
type: :hash,
|
1221
1221
|
body: [assoclist_from_args],
|
1222
|
-
|
1222
|
+
sl: beging[:sl],
|
1223
1223
|
sc: beging[:sc],
|
1224
|
-
|
1224
|
+
el: ending[:el],
|
1225
1225
|
ec: ending[:ec]
|
1226
1226
|
}
|
1227
1227
|
end
|
@@ -1234,8 +1234,8 @@ class Prettier::Parser < Ripper
|
|
1234
1234
|
# printer through our embed function.
|
1235
1235
|
def on_heredoc_beg(beging)
|
1236
1236
|
location = {
|
1237
|
-
|
1238
|
-
|
1237
|
+
sl: lineno,
|
1238
|
+
el: lineno,
|
1239
1239
|
sc: char_pos,
|
1240
1240
|
ec: char_pos + beging.length + 1
|
1241
1241
|
}
|
@@ -1259,7 +1259,7 @@ class Prettier::Parser < Ripper
|
|
1259
1259
|
|
1260
1260
|
# This is a scanner event that represents the end of the heredoc.
|
1261
1261
|
def on_heredoc_end(ending)
|
1262
|
-
@heredocs[-1].merge!(ending: ending.chomp,
|
1262
|
+
@heredocs[-1].merge!(ending: ending.chomp, el: lineno, ec: char_pos)
|
1263
1263
|
end
|
1264
1264
|
|
1265
1265
|
# hshptn is a parser event that represents matching against a hash pattern
|
@@ -1270,9 +1270,9 @@ class Prettier::Parser < Ripper
|
|
1270
1270
|
{
|
1271
1271
|
type: :hshptn,
|
1272
1272
|
body: [const, kw, kwrest],
|
1273
|
-
|
1273
|
+
sl: pieces[0][:sl],
|
1274
1274
|
sc: pieces[0][:sc],
|
1275
|
-
|
1275
|
+
el: pieces[-1][:el],
|
1276
1276
|
ec: pieces[-1][:ec]
|
1277
1277
|
}
|
1278
1278
|
end
|
@@ -1289,9 +1289,9 @@ class Prettier::Parser < Ripper
|
|
1289
1289
|
{
|
1290
1290
|
type: :if,
|
1291
1291
|
body: [predicate, stmts, consequent],
|
1292
|
-
|
1292
|
+
sl: beging[:sl],
|
1293
1293
|
sc: beging[:sc],
|
1294
|
-
|
1294
|
+
el: ending[:el],
|
1295
1295
|
ec: ending[:ec]
|
1296
1296
|
}
|
1297
1297
|
end
|
@@ -1303,7 +1303,7 @@ class Prettier::Parser < Ripper
|
|
1303
1303
|
predicate.merge(
|
1304
1304
|
type: :ifop,
|
1305
1305
|
body: [predicate, truthy, falsy],
|
1306
|
-
|
1306
|
+
el: falsy[:el],
|
1307
1307
|
ec: falsy[:ec]
|
1308
1308
|
)
|
1309
1309
|
end
|
@@ -1317,9 +1317,9 @@ class Prettier::Parser < Ripper
|
|
1317
1317
|
{
|
1318
1318
|
type: :if_mod,
|
1319
1319
|
body: [predicate, statement],
|
1320
|
-
|
1320
|
+
sl: statement[:sl],
|
1321
1321
|
sc: statement[:sc],
|
1322
|
-
|
1322
|
+
el: predicate[:el],
|
1323
1323
|
ec: predicate[:ec]
|
1324
1324
|
}
|
1325
1325
|
end
|
@@ -1339,7 +1339,7 @@ class Prettier::Parser < Ripper
|
|
1339
1339
|
beging.merge!(
|
1340
1340
|
type: :in,
|
1341
1341
|
body: [pattern, stmts, consequent],
|
1342
|
-
|
1342
|
+
el: ending[:el],
|
1343
1343
|
ec: ending[:ec]
|
1344
1344
|
)
|
1345
1345
|
end
|
@@ -1353,7 +1353,7 @@ class Prettier::Parser < Ripper
|
|
1353
1353
|
oper.merge!(
|
1354
1354
|
type: :kwrest_param,
|
1355
1355
|
body: [ident],
|
1356
|
-
|
1356
|
+
el: ident[:el],
|
1357
1357
|
ec: ident[:ec]
|
1358
1358
|
)
|
1359
1359
|
end
|
@@ -1381,9 +1381,9 @@ class Prettier::Parser < Ripper
|
|
1381
1381
|
{
|
1382
1382
|
type: :lambda,
|
1383
1383
|
body: [params, stmts],
|
1384
|
-
|
1384
|
+
sl: beging[:sl],
|
1385
1385
|
sc: beging[:sc],
|
1386
|
-
|
1386
|
+
el: closing[:el],
|
1387
1387
|
ec: closing[:ec]
|
1388
1388
|
}
|
1389
1389
|
end
|
@@ -1411,9 +1411,9 @@ class Prettier::Parser < Ripper
|
|
1411
1411
|
{
|
1412
1412
|
type: :massign,
|
1413
1413
|
body: [left, right],
|
1414
|
-
|
1414
|
+
sl: left[:sl],
|
1415
1415
|
sc: left[:sc],
|
1416
|
-
|
1416
|
+
el: right[:el],
|
1417
1417
|
ec: right[:ec]
|
1418
1418
|
}
|
1419
1419
|
end
|
@@ -1433,9 +1433,9 @@ class Prettier::Parser < Ripper
|
|
1433
1433
|
{
|
1434
1434
|
type: :method_add_arg,
|
1435
1435
|
body: [fcall, arg_paren],
|
1436
|
-
|
1436
|
+
sl: fcall[:sl],
|
1437
1437
|
sc: fcall[:sc],
|
1438
|
-
|
1438
|
+
el: arg_paren[:el],
|
1439
1439
|
ec: arg_paren[:ec]
|
1440
1440
|
}
|
1441
1441
|
end
|
@@ -1447,9 +1447,9 @@ class Prettier::Parser < Ripper
|
|
1447
1447
|
{
|
1448
1448
|
type: :method_add_block,
|
1449
1449
|
body: [method_add_arg, block],
|
1450
|
-
|
1450
|
+
sl: method_add_arg[:sl],
|
1451
1451
|
sc: method_add_arg[:sc],
|
1452
|
-
|
1452
|
+
el: block[:el],
|
1453
1453
|
ec: block[:ec]
|
1454
1454
|
}
|
1455
1455
|
end
|
@@ -1461,9 +1461,9 @@ class Prettier::Parser < Ripper
|
|
1461
1461
|
{
|
1462
1462
|
type: :mlhs,
|
1463
1463
|
body: [],
|
1464
|
-
|
1464
|
+
sl: lineno,
|
1465
1465
|
sc: char_pos,
|
1466
|
-
|
1466
|
+
el: lineno,
|
1467
1467
|
ec: char_pos
|
1468
1468
|
}
|
1469
1469
|
end
|
@@ -1475,7 +1475,7 @@ class Prettier::Parser < Ripper
|
|
1475
1475
|
if mlhs[:body].empty?
|
1476
1476
|
part.merge(type: :mlhs, body: [part])
|
1477
1477
|
else
|
1478
|
-
mlhs.merge!(body: mlhs[:body] << part,
|
1478
|
+
mlhs.merge!(body: mlhs[:body] << part, el: part[:el], ec: part[:ec])
|
1479
1479
|
end
|
1480
1480
|
end
|
1481
1481
|
|
@@ -1488,7 +1488,7 @@ class Prettier::Parser < Ripper
|
|
1488
1488
|
mlhs_add_star.merge(
|
1489
1489
|
type: :mlhs_add_post,
|
1490
1490
|
body: [mlhs_add_star, mlhs],
|
1491
|
-
|
1491
|
+
el: mlhs[:el],
|
1492
1492
|
ec: mlhs[:ec]
|
1493
1493
|
)
|
1494
1494
|
end
|
@@ -1504,9 +1504,9 @@ class Prettier::Parser < Ripper
|
|
1504
1504
|
{
|
1505
1505
|
type: :mlhs_add_star,
|
1506
1506
|
body: [mlhs, part],
|
1507
|
-
|
1507
|
+
sl: beging[:sl],
|
1508
1508
|
sc: beging[:sc],
|
1509
|
-
|
1509
|
+
el: ending[:el],
|
1510
1510
|
ec: ending[:ec]
|
1511
1511
|
}
|
1512
1512
|
end
|
@@ -1526,9 +1526,9 @@ class Prettier::Parser < Ripper
|
|
1526
1526
|
{
|
1527
1527
|
type: :mlhs_paren,
|
1528
1528
|
body: [contents],
|
1529
|
-
|
1529
|
+
sl: beging[:sl],
|
1530
1530
|
sc: beging[:sc],
|
1531
|
-
|
1531
|
+
el: ending[:el],
|
1532
1532
|
ec: ending[:ec]
|
1533
1533
|
}
|
1534
1534
|
end
|
@@ -1545,9 +1545,9 @@ class Prettier::Parser < Ripper
|
|
1545
1545
|
{
|
1546
1546
|
type: :module,
|
1547
1547
|
body: [const, bodystmt],
|
1548
|
-
|
1548
|
+
sl: beging[:sl],
|
1549
1549
|
sc: beging[:sc],
|
1550
|
-
|
1550
|
+
el: ending[:el],
|
1551
1551
|
ec: ending[:ec]
|
1552
1552
|
}
|
1553
1553
|
end
|
@@ -1560,9 +1560,9 @@ class Prettier::Parser < Ripper
|
|
1560
1560
|
{
|
1561
1561
|
type: :mrhs,
|
1562
1562
|
body: [],
|
1563
|
-
|
1563
|
+
sl: lineno,
|
1564
1564
|
sc: char_pos,
|
1565
|
-
|
1565
|
+
el: lineno,
|
1566
1566
|
ec: char_pos
|
1567
1567
|
}
|
1568
1568
|
end
|
@@ -1573,7 +1573,7 @@ class Prettier::Parser < Ripper
|
|
1573
1573
|
if mrhs[:body].empty?
|
1574
1574
|
part.merge(type: :mrhs, body: [part])
|
1575
1575
|
else
|
1576
|
-
mrhs.merge!(body: mrhs[:body] << part,
|
1576
|
+
mrhs.merge!(body: mrhs[:body] << part, el: part[:el], ec: part[:ec])
|
1577
1577
|
end
|
1578
1578
|
end
|
1579
1579
|
|
@@ -1587,9 +1587,9 @@ class Prettier::Parser < Ripper
|
|
1587
1587
|
{
|
1588
1588
|
type: :mrhs_add_star,
|
1589
1589
|
body: [mrhs, part],
|
1590
|
-
|
1590
|
+
sl: beging[:sl],
|
1591
1591
|
sc: beging[:sc],
|
1592
|
-
|
1592
|
+
el: ending[:el],
|
1593
1593
|
ec: ending[:ec]
|
1594
1594
|
}
|
1595
1595
|
end
|
@@ -1613,7 +1613,7 @@ class Prettier::Parser < Ripper
|
|
1613
1613
|
find_scanner_event(:@kw, 'next').merge!(
|
1614
1614
|
type: :next,
|
1615
1615
|
body: [args_add_block],
|
1616
|
-
|
1616
|
+
el: args_add_block[:el],
|
1617
1617
|
ec: args_add_block[:ec]
|
1618
1618
|
)
|
1619
1619
|
end
|
@@ -1626,7 +1626,7 @@ class Prettier::Parser < Ripper
|
|
1626
1626
|
left.merge(
|
1627
1627
|
type: :opassign,
|
1628
1628
|
body: [left, oper, right],
|
1629
|
-
|
1629
|
+
el: right[:el],
|
1630
1630
|
ec: right[:ec]
|
1631
1631
|
)
|
1632
1632
|
end
|
@@ -1641,13 +1641,13 @@ class Prettier::Parser < Ripper
|
|
1641
1641
|
location =
|
1642
1642
|
if flattened.any?
|
1643
1643
|
{
|
1644
|
-
|
1644
|
+
sl: flattened[0][:sl],
|
1645
1645
|
sc: flattened[0][:sc],
|
1646
|
-
|
1646
|
+
el: flattened[-1][:el],
|
1647
1647
|
ec: flattened[-1][:ec]
|
1648
1648
|
}
|
1649
1649
|
else
|
1650
|
-
{
|
1650
|
+
{ sl: lineno, sc: char_pos, el: lineno, ec: char_pos }
|
1651
1651
|
end
|
1652
1652
|
|
1653
1653
|
location.merge!(type: :params, body: types)
|
@@ -1657,12 +1657,17 @@ class Prettier::Parser < Ripper
|
|
1657
1657
|
# anywhere in a Ruby program. It accepts as arguments the contents, which
|
1658
1658
|
# can be either params or statements.
|
1659
1659
|
def on_paren(contents)
|
1660
|
+
beging = find_scanner_event(:@lparen)
|
1660
1661
|
ending = find_scanner_event(:@rparen)
|
1661
1662
|
|
1662
|
-
|
1663
|
+
if contents && contents[:type] == :params
|
1664
|
+
contents.merge!(sc: beging[:ec], ec: ending[:sc])
|
1665
|
+
end
|
1666
|
+
|
1667
|
+
beging.merge!(
|
1663
1668
|
type: :paren,
|
1664
1669
|
body: [contents],
|
1665
|
-
|
1670
|
+
el: ending[:el],
|
1666
1671
|
ec: ending[:ec]
|
1667
1672
|
)
|
1668
1673
|
end
|
@@ -1672,7 +1677,7 @@ class Prettier::Parser < Ripper
|
|
1672
1677
|
# source string. We'll also attach on the __END__ content if there was
|
1673
1678
|
# some found at the end of the source string.
|
1674
1679
|
def on_program(stmts)
|
1675
|
-
range = {
|
1680
|
+
range = { sl: 1, el: lines.length, sc: 0, ec: source.length }
|
1676
1681
|
|
1677
1682
|
stmts[:body] << @__end__ if @__end__
|
1678
1683
|
stmts.bind(0, source.length)
|
@@ -1694,7 +1699,7 @@ class Prettier::Parser < Ripper
|
|
1694
1699
|
def on_qsymbols_add(qsymbols, tstring_content)
|
1695
1700
|
qsymbols.merge!(
|
1696
1701
|
body: qsymbols[:body] << tstring_content,
|
1697
|
-
|
1702
|
+
el: tstring_content[:el],
|
1698
1703
|
ec: tstring_content[:ec]
|
1699
1704
|
)
|
1700
1705
|
end
|
@@ -1713,7 +1718,7 @@ class Prettier::Parser < Ripper
|
|
1713
1718
|
def on_qwords_add(qwords, tstring_content)
|
1714
1719
|
qwords.merge!(
|
1715
1720
|
body: qwords[:body] << tstring_content,
|
1716
|
-
|
1721
|
+
el: tstring_content[:el],
|
1717
1722
|
ec: tstring_content[:ec]
|
1718
1723
|
)
|
1719
1724
|
end
|
@@ -1739,7 +1744,7 @@ class Prettier::Parser < Ripper
|
|
1739
1744
|
def on_regexp_add(regexp, piece)
|
1740
1745
|
regexp.merge!(
|
1741
1746
|
body: regexp[:body] << piece,
|
1742
|
-
|
1747
|
+
el: regexp[:el],
|
1743
1748
|
ec: regexp[:ec]
|
1744
1749
|
)
|
1745
1750
|
end
|
@@ -1752,7 +1757,7 @@ class Prettier::Parser < Ripper
|
|
1752
1757
|
regexp.merge!(
|
1753
1758
|
type: :regexp_literal,
|
1754
1759
|
ending: ending[:body],
|
1755
|
-
|
1760
|
+
el: ending[:el],
|
1756
1761
|
ec: ending[:ec]
|
1757
1762
|
)
|
1758
1763
|
end
|
@@ -1791,7 +1796,7 @@ class Prettier::Parser < Ripper
|
|
1791
1796
|
beging.merge!(
|
1792
1797
|
type: :rescue,
|
1793
1798
|
body: [exceptions, variable, stmts, consequent],
|
1794
|
-
|
1799
|
+
el: lineno,
|
1795
1800
|
ec: char_pos
|
1796
1801
|
)
|
1797
1802
|
)
|
@@ -1806,9 +1811,9 @@ class Prettier::Parser < Ripper
|
|
1806
1811
|
{
|
1807
1812
|
type: :rescue_mod,
|
1808
1813
|
body: [statement, rescued],
|
1809
|
-
|
1814
|
+
sl: statement[:sl],
|
1810
1815
|
sc: statement[:sc],
|
1811
|
-
|
1816
|
+
el: rescued[:el],
|
1812
1817
|
ec: rescued[:ec]
|
1813
1818
|
}
|
1814
1819
|
end
|
@@ -1824,7 +1829,7 @@ class Prettier::Parser < Ripper
|
|
1824
1829
|
oper.merge!(
|
1825
1830
|
type: :rest_param,
|
1826
1831
|
body: [ident],
|
1827
|
-
|
1832
|
+
el: ident[:el],
|
1828
1833
|
ec: ident[:ec]
|
1829
1834
|
)
|
1830
1835
|
end
|
@@ -1842,7 +1847,7 @@ class Prettier::Parser < Ripper
|
|
1842
1847
|
find_scanner_event(:@kw, 'return').merge!(
|
1843
1848
|
type: :return,
|
1844
1849
|
body: [args_add_block],
|
1845
|
-
|
1850
|
+
el: args_add_block[:el],
|
1846
1851
|
ec: args_add_block[:ec]
|
1847
1852
|
)
|
1848
1853
|
end
|
@@ -1874,9 +1879,9 @@ class Prettier::Parser < Ripper
|
|
1874
1879
|
{
|
1875
1880
|
type: :sclass,
|
1876
1881
|
body: [target, bodystmt],
|
1877
|
-
|
1882
|
+
sl: beging[:sl],
|
1878
1883
|
sc: beging[:sc],
|
1879
|
-
|
1884
|
+
el: ending[:el],
|
1880
1885
|
ec: ending[:ec]
|
1881
1886
|
}
|
1882
1887
|
end
|
@@ -1903,9 +1908,9 @@ class Prettier::Parser < Ripper
|
|
1903
1908
|
|
1904
1909
|
def <<(statement)
|
1905
1910
|
if self[:body].any?
|
1906
|
-
merge!(statement.slice(:
|
1911
|
+
merge!(statement.slice(:el, :ec))
|
1907
1912
|
else
|
1908
|
-
merge!(statement.slice(:
|
1913
|
+
merge!(statement.slice(:sl, :el, :sc, :ec))
|
1909
1914
|
end
|
1910
1915
|
|
1911
1916
|
self[:body] << statement
|
@@ -1920,8 +1925,8 @@ class Prettier::Parser < Ripper
|
|
1920
1925
|
Stmts.new(
|
1921
1926
|
type: :stmts,
|
1922
1927
|
body: [],
|
1923
|
-
|
1924
|
-
|
1928
|
+
sl: lineno,
|
1929
|
+
el: lineno,
|
1925
1930
|
sc: char_pos,
|
1926
1931
|
ec: char_pos
|
1927
1932
|
)
|
@@ -1945,9 +1950,9 @@ class Prettier::Parser < Ripper
|
|
1945
1950
|
{
|
1946
1951
|
type: :string_concat,
|
1947
1952
|
body: [left, right],
|
1948
|
-
|
1953
|
+
sl: left[:sl],
|
1949
1954
|
sc: left[:sc],
|
1950
|
-
|
1955
|
+
el: right[:el],
|
1951
1956
|
ec: right[:ec]
|
1952
1957
|
}
|
1953
1958
|
end
|
@@ -1961,8 +1966,8 @@ class Prettier::Parser < Ripper
|
|
1961
1966
|
{
|
1962
1967
|
type: :string,
|
1963
1968
|
body: [],
|
1964
|
-
|
1965
|
-
|
1969
|
+
sl: lineno,
|
1970
|
+
el: lineno,
|
1966
1971
|
sc: char_pos,
|
1967
1972
|
ec: char_pos
|
1968
1973
|
}
|
@@ -1973,11 +1978,7 @@ class Prettier::Parser < Ripper
|
|
1973
1978
|
# It accepts as arguments the parent string node as well as the additional
|
1974
1979
|
# piece of the string.
|
1975
1980
|
def on_string_add(string, piece)
|
1976
|
-
string.merge!(
|
1977
|
-
body: string[:body] << piece,
|
1978
|
-
end: piece[:end],
|
1979
|
-
ec: piece[:ec]
|
1980
|
-
)
|
1981
|
+
string.merge!(body: string[:body] << piece, el: piece[:el], ec: piece[:ec])
|
1981
1982
|
end
|
1982
1983
|
|
1983
1984
|
# string_dvar is a parser event that represents a very special kind of
|
@@ -1989,7 +1990,7 @@ class Prettier::Parser < Ripper
|
|
1989
1990
|
find_scanner_event(:@embvar).merge!(
|
1990
1991
|
type: :string_dvar,
|
1991
1992
|
body: [var_ref],
|
1992
|
-
|
1993
|
+
el: var_ref[:el],
|
1993
1994
|
ec: var_ref[:ec]
|
1994
1995
|
)
|
1995
1996
|
end
|
@@ -2007,9 +2008,9 @@ class Prettier::Parser < Ripper
|
|
2007
2008
|
{
|
2008
2009
|
type: :string_embexpr,
|
2009
2010
|
body: [stmts],
|
2010
|
-
|
2011
|
+
sl: beging[:sl],
|
2011
2012
|
sc: beging[:sc],
|
2012
|
-
|
2013
|
+
el: ending[:el],
|
2013
2014
|
ec: ending[:ec]
|
2014
2015
|
}
|
2015
2016
|
end
|
@@ -2029,9 +2030,9 @@ class Prettier::Parser < Ripper
|
|
2029
2030
|
type: :string_literal,
|
2030
2031
|
body: string[:body],
|
2031
2032
|
quote: beging[:body],
|
2032
|
-
|
2033
|
+
sl: beging[:sl],
|
2033
2034
|
sc: beging[:sc],
|
2034
|
-
|
2035
|
+
el: ending[:el],
|
2035
2036
|
ec: ending[:ec]
|
2036
2037
|
}
|
2037
2038
|
end
|
@@ -2045,7 +2046,7 @@ class Prettier::Parser < Ripper
|
|
2045
2046
|
find_scanner_event(:@kw, 'super').merge!(
|
2046
2047
|
type: :super,
|
2047
2048
|
body: [contents],
|
2048
|
-
|
2049
|
+
el: contents[:el],
|
2049
2050
|
ec: contents[:ec]
|
2050
2051
|
)
|
2051
2052
|
end
|
@@ -2096,7 +2097,7 @@ class Prettier::Parser < Ripper
|
|
2096
2097
|
def on_symbols_add(symbols, word_add)
|
2097
2098
|
symbols.merge!(
|
2098
2099
|
body: symbols[:body] << word_add,
|
2099
|
-
|
2100
|
+
el: word_add[:el],
|
2100
2101
|
ec: word_add[:ec]
|
2101
2102
|
)
|
2102
2103
|
end
|
@@ -2125,7 +2126,7 @@ class Prettier::Parser < Ripper
|
|
2125
2126
|
const.merge(
|
2126
2127
|
type: :top_const_field,
|
2127
2128
|
body: [const],
|
2128
|
-
|
2129
|
+
sl: beging[:sl],
|
2129
2130
|
sc: beging[:sc]
|
2130
2131
|
)
|
2131
2132
|
end
|
@@ -2141,7 +2142,7 @@ class Prettier::Parser < Ripper
|
|
2141
2142
|
const.merge(
|
2142
2143
|
type: :top_const_ref,
|
2143
2144
|
body: [const],
|
2144
|
-
|
2145
|
+
sl: beging[:sl],
|
2145
2146
|
sc: beging[:sc]
|
2146
2147
|
)
|
2147
2148
|
end
|
@@ -2161,7 +2162,7 @@ class Prettier::Parser < Ripper
|
|
2161
2162
|
type: :unary,
|
2162
2163
|
oper: oper,
|
2163
2164
|
body: [value],
|
2164
|
-
|
2165
|
+
el: ending[:el],
|
2165
2166
|
ec: ending[:ec],
|
2166
2167
|
paren: paren
|
2167
2168
|
)
|
@@ -2181,7 +2182,7 @@ class Prettier::Parser < Ripper
|
|
2181
2182
|
type: :unary,
|
2182
2183
|
oper: oper[0],
|
2183
2184
|
body: [value],
|
2184
|
-
|
2185
|
+
el: value[:el],
|
2185
2186
|
ec: value[:ec]
|
2186
2187
|
)
|
2187
2188
|
end
|
@@ -2197,7 +2198,7 @@ class Prettier::Parser < Ripper
|
|
2197
2198
|
find_scanner_event(:@kw, 'undef').merge!(
|
2198
2199
|
type: :undef,
|
2199
2200
|
body: symbol_literals,
|
2200
|
-
|
2201
|
+
el: last[:el],
|
2201
2202
|
ec: last[:ec]
|
2202
2203
|
)
|
2203
2204
|
end
|
@@ -2215,9 +2216,9 @@ class Prettier::Parser < Ripper
|
|
2215
2216
|
{
|
2216
2217
|
type: :unless,
|
2217
2218
|
body: [predicate, stmts, consequent],
|
2218
|
-
|
2219
|
+
sl: beging[:sl],
|
2219
2220
|
sc: beging[:sc],
|
2220
|
-
|
2221
|
+
el: ending[:el],
|
2221
2222
|
ec: ending[:ec]
|
2222
2223
|
}
|
2223
2224
|
end
|
@@ -2231,9 +2232,9 @@ class Prettier::Parser < Ripper
|
|
2231
2232
|
{
|
2232
2233
|
type: :unless_mod,
|
2233
2234
|
body: [predicate, statement],
|
2234
|
-
|
2235
|
+
sl: statement[:sl],
|
2235
2236
|
sc: statement[:sc],
|
2236
|
-
|
2237
|
+
el: predicate[:el],
|
2237
2238
|
ec: predicate[:ec]
|
2238
2239
|
}
|
2239
2240
|
end
|
@@ -2257,9 +2258,9 @@ class Prettier::Parser < Ripper
|
|
2257
2258
|
{
|
2258
2259
|
type: :until,
|
2259
2260
|
body: [predicate, stmts],
|
2260
|
-
|
2261
|
+
sl: beging[:sl],
|
2261
2262
|
sc: beging[:sc],
|
2262
|
-
|
2263
|
+
el: ending[:el],
|
2263
2264
|
ec: ending[:ec]
|
2264
2265
|
}
|
2265
2266
|
end
|
@@ -2273,9 +2274,9 @@ class Prettier::Parser < Ripper
|
|
2273
2274
|
{
|
2274
2275
|
type: :until_mod,
|
2275
2276
|
body: [predicate, statement],
|
2276
|
-
|
2277
|
+
sl: statement[:sl],
|
2277
2278
|
sc: statement[:sc],
|
2278
|
-
|
2279
|
+
el: predicate[:el],
|
2279
2280
|
ec: predicate[:ec]
|
2280
2281
|
}
|
2281
2282
|
end
|
@@ -2293,9 +2294,9 @@ class Prettier::Parser < Ripper
|
|
2293
2294
|
{
|
2294
2295
|
type: :var_alias,
|
2295
2296
|
body: [left, right],
|
2296
|
-
|
2297
|
+
sl: beging[:sl],
|
2297
2298
|
sc: beging[:sc],
|
2298
|
-
|
2299
|
+
el: ending[:el],
|
2299
2300
|
ec: ending[:ec]
|
2300
2301
|
}
|
2301
2302
|
end
|
@@ -2348,7 +2349,7 @@ class Prettier::Parser < Ripper
|
|
2348
2349
|
# block of code. It often will have comments attached to it, so it requires
|
2349
2350
|
# some special handling.
|
2350
2351
|
def on_void_stmt
|
2351
|
-
{ type: :void_stmt,
|
2352
|
+
{ type: :void_stmt, sl: lineno, el: lineno, sc: char_pos, ec: char_pos }
|
2352
2353
|
end
|
2353
2354
|
|
2354
2355
|
# when is a parser event that represents another clause in a case chain.
|
@@ -2364,9 +2365,9 @@ class Prettier::Parser < Ripper
|
|
2364
2365
|
{
|
2365
2366
|
type: :when,
|
2366
2367
|
body: [predicate, stmts, consequent],
|
2367
|
-
|
2368
|
+
sl: beging[:sl],
|
2368
2369
|
sc: beging[:sc],
|
2369
|
-
|
2370
|
+
el: ending[:el],
|
2370
2371
|
ec: ending[:ec]
|
2371
2372
|
}
|
2372
2373
|
end
|
@@ -2390,9 +2391,9 @@ class Prettier::Parser < Ripper
|
|
2390
2391
|
{
|
2391
2392
|
type: :while,
|
2392
2393
|
body: [predicate, stmts],
|
2393
|
-
|
2394
|
+
sl: beging[:sl],
|
2394
2395
|
sc: beging[:sc],
|
2395
|
-
|
2396
|
+
el: ending[:el],
|
2396
2397
|
ec: ending[:ec]
|
2397
2398
|
}
|
2398
2399
|
end
|
@@ -2406,9 +2407,9 @@ class Prettier::Parser < Ripper
|
|
2406
2407
|
{
|
2407
2408
|
type: :while_mod,
|
2408
2409
|
body: [predicate, statement],
|
2409
|
-
|
2410
|
+
sl: statement[:sl],
|
2410
2411
|
sc: statement[:sc],
|
2411
|
-
|
2412
|
+
el: predicate[:el],
|
2412
2413
|
ec: predicate[:ec]
|
2413
2414
|
}
|
2414
2415
|
end
|
@@ -2439,7 +2440,7 @@ class Prettier::Parser < Ripper
|
|
2439
2440
|
# location information from the first piece.
|
2440
2441
|
piece.merge(type: :word, body: [piece])
|
2441
2442
|
else
|
2442
|
-
word.merge!(body: word[:body] << piece,
|
2443
|
+
word.merge!(body: word[:body] << piece, el: piece[:el], ec: piece[:ec])
|
2443
2444
|
end
|
2444
2445
|
end
|
2445
2446
|
|
@@ -2458,7 +2459,7 @@ class Prettier::Parser < Ripper
|
|
2458
2459
|
def on_words_add(words, word_add)
|
2459
2460
|
words.merge!(
|
2460
2461
|
body: words[:body] << word_add,
|
2461
|
-
|
2462
|
+
el: word_add[:el],
|
2462
2463
|
ec: word_add[:ec]
|
2463
2464
|
)
|
2464
2465
|
end
|
@@ -2492,7 +2493,7 @@ class Prettier::Parser < Ripper
|
|
2492
2493
|
def on_xstring_add(xstring, piece)
|
2493
2494
|
xstring.merge!(
|
2494
2495
|
body: xstring[:body] << piece,
|
2495
|
-
|
2496
|
+
el: piece[:el],
|
2496
2497
|
ec: piece[:ec]
|
2497
2498
|
)
|
2498
2499
|
end
|
@@ -2518,7 +2519,7 @@ class Prettier::Parser < Ripper
|
|
2518
2519
|
heredoc.merge!(body: xstring[:body])
|
2519
2520
|
else
|
2520
2521
|
ending = find_scanner_event(:@tstring_end)
|
2521
|
-
xstring.merge!(type: :xstring_literal,
|
2522
|
+
xstring.merge!(type: :xstring_literal, el: ending[:el], ec: ending[:ec])
|
2522
2523
|
end
|
2523
2524
|
end
|
2524
2525
|
|
@@ -2529,7 +2530,7 @@ class Prettier::Parser < Ripper
|
|
2529
2530
|
find_scanner_event(:@kw, 'yield').merge!(
|
2530
2531
|
type: :yield,
|
2531
2532
|
body: [args_add_block],
|
2532
|
-
|
2533
|
+
el: args_add_block[:el],
|
2533
2534
|
ec: args_add_block[:ec]
|
2534
2535
|
)
|
2535
2536
|
end
|