prettier 0.13.0 → 0.14.0
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 +42 -1
- data/README.md +2 -0
- data/package.json +1 -1
- data/src/nodes.js +1 -0
- data/src/nodes/calls.js +1 -1
- data/src/nodes/conditionals.js +13 -10
- data/src/nodes/patterns.js +43 -0
- data/src/ripper.rb +17 -9
- 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: b8e2166de3bdb098137b5445e9db41d9c6eb1f1677fe8edfd9bbb7fb25704091
|
4
|
+
data.tar.gz: 8284b60434648ad65daae6a2d24677ec197cde21b986e69e88adcbc0560592bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d94d15c6f8c4b295596bfd821884937954ebc854cc6d2c292a8ea77a8ba23d99bf3c80cda43bcd8c5fb60b72e334b7f90ae18729b884c8c2a7eab6b44bda0d3
|
7
|
+
data.tar.gz: 563ab1b61b66e0ade505742063c9c949c16087942d68853eb07ec9ee4b4d56ec69219355ab80a230028efa44af1c9012a30c1556743f19025ffe625c8f2affbd
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,46 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [0.14.0] - 2019-07-17
|
10
|
+
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- Support for pattern matching for variables and array patterns. Currently waiting on Ripper support for hash patterns. For examples, check out the [test/js/patterns.test.js](test/js/patterns.test.js) file.
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- if/else blocks that had method calls on the end of them that were also transformed into ternaries need to have parens added to them. For example,
|
18
|
+
|
19
|
+
<!-- prettier-ignore -->
|
20
|
+
```ruby
|
21
|
+
if foo
|
22
|
+
1
|
23
|
+
else
|
24
|
+
2
|
25
|
+
end.to_s
|
26
|
+
```
|
27
|
+
|
28
|
+
now correctly gets transformed into:
|
29
|
+
|
30
|
+
<!-- prettier-ignore -->
|
31
|
+
```ruby
|
32
|
+
(foo ? 1 : 2).to_s
|
33
|
+
```
|
34
|
+
|
35
|
+
(Thanks to @jviney for the report.)
|
36
|
+
|
37
|
+
- Fixed a bug where multiple newlines at the end of the file would cause a crash. (Thanks to @acrewdson for the report.)
|
38
|
+
- If a variable is assigned inside of the predicate of a conditional, then we can't change it into the single-line version as this breaks. For example,
|
39
|
+
|
40
|
+
<!-- prettier-ignore -->
|
41
|
+
```ruby
|
42
|
+
if foo = 1
|
43
|
+
foo
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
must stay the same. (Thanks to @jviney for the report.)
|
48
|
+
|
9
49
|
## [0.13.0] - 2019-07-05
|
10
50
|
|
11
51
|
### Added
|
@@ -423,7 +463,8 @@ would previously result in `array[]`, but now prints properly. (Thanks to @xipgr
|
|
423
463
|
|
424
464
|
- Initial release 🎉
|
425
465
|
|
426
|
-
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v0.
|
466
|
+
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v0.14.0...HEAD
|
467
|
+
[0.14.0]: https://github.com/prettier/plugin-ruby/compare/v0.13.0...v0.14.0
|
427
468
|
[0.13.0]: https://github.com/prettier/plugin-ruby/compare/v0.12.3...v0.13.0
|
428
469
|
[0.12.3]: https://github.com/prettier/plugin-ruby/compare/v0.12.2...v0.12.3
|
429
470
|
[0.12.2]: https://github.com/prettier/plugin-ruby/compare/v0.12.1...v0.12.2
|
data/README.md
CHANGED
@@ -182,6 +182,8 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
182
182
|
<tr>
|
183
183
|
<td align="center"><a href="https://janpiotrowski.de"><img src="https://avatars0.githubusercontent.com/u/183673?v=4" width="100px;" alt="Jan Piotrowski"/><br /><sub><b>Jan Piotrowski</b></sub></a><br /><a href="https://github.com/prettier/plugin-ruby/commits?author=janpio" title="Documentation">📖</a></td>
|
184
184
|
<td align="center"><a href="https://www.andywaite.com"><img src="https://avatars1.githubusercontent.com/u/13400?v=4" width="100px;" alt="Andy Waite"/><br /><sub><b>Andy Waite</b></sub></a><br /><a href="https://github.com/prettier/plugin-ruby/commits?author=andyw8" title="Documentation">📖</a></td>
|
185
|
+
<td align="center"><a href="https://github.com/jviney"><img src="https://avatars3.githubusercontent.com/u/7051?v=4" width="100px;" alt="Jonathan Viney"/><br /><sub><b>Jonathan Viney</b></sub></a><br /><a href="https://github.com/prettier/plugin-ruby/issues?q=author%3Ajviney" title="Bug reports">🐛</a></td>
|
186
|
+
<td align="center"><a href="https://github.com/acrewdson"><img src="https://avatars0.githubusercontent.com/u/10353074?v=4" width="100px;" alt="acrewdson"/><br /><sub><b>acrewdson</b></sub></a><br /><a href="https://github.com/prettier/plugin-ruby/issues?q=author%3Aacrewdson" title="Bug reports">🐛</a></td>
|
185
187
|
</tr>
|
186
188
|
</table>
|
187
189
|
|
data/package.json
CHANGED
data/src/nodes.js
CHANGED
data/src/nodes/calls.js
CHANGED
@@ -2,7 +2,7 @@ const { concat, group, indent, softline } = require("../prettier");
|
|
2
2
|
const toProc = require("../toProc");
|
3
3
|
const { concatBody, first, makeCall } = require("../utils");
|
4
4
|
|
5
|
-
const noIndent = ["array", "hash", "method_add_block", "xstring_literal"];
|
5
|
+
const noIndent = ["array", "hash", "if", "method_add_block", "xstring_literal"];
|
6
6
|
|
7
7
|
module.exports = {
|
8
8
|
call: (path, opts, print) => {
|
data/src/nodes/conditionals.js
CHANGED
@@ -113,11 +113,11 @@ const printSingle = keyword => (path, { inlineConditionals }, print) => {
|
|
113
113
|
concat([softline, "end"])
|
114
114
|
]);
|
115
115
|
|
116
|
-
const stmts = path.getValue().body
|
116
|
+
const [predicate, stmts] = path.getValue().body;
|
117
117
|
const hasComments =
|
118
118
|
stmts.type === "stmts" && stmts.body.some(stmt => stmt.type === "@comment");
|
119
119
|
|
120
|
-
if (!inlineConditionals || hasComments) {
|
120
|
+
if (!inlineConditionals || hasComments || predicate.type === "assign") {
|
121
121
|
return multiline;
|
122
122
|
}
|
123
123
|
|
@@ -154,17 +154,20 @@ const canTernary = path => {
|
|
154
154
|
// A normalized print function for both `if` and `unless` nodes.
|
155
155
|
const printConditional = keyword => (path, { inlineConditionals }, print) => {
|
156
156
|
if (canTernary(path)) {
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
157
|
+
let ternaryParts = [path.call(print, "body", 0), " ? "].concat(
|
158
|
+
printTernaryClauses(
|
159
|
+
keyword,
|
160
|
+
path.call(print, "body", 1),
|
161
|
+
path.call(print, "body", 2, "body", 0)
|
162
|
+
)
|
161
163
|
);
|
162
164
|
|
165
|
+
if (["binary", "call"].includes(path.getParentNode().type)) {
|
166
|
+
ternaryParts = ["("].concat(ternaryParts).concat(")");
|
167
|
+
}
|
168
|
+
|
163
169
|
return group(
|
164
|
-
ifBreak(
|
165
|
-
printWithAddition(keyword, path, print),
|
166
|
-
concat([path.call(print, "body", 0), " ? "].concat(ternaryConditions))
|
167
|
-
)
|
170
|
+
ifBreak(printWithAddition(keyword, path, print), concat(ternaryParts))
|
168
171
|
);
|
169
172
|
}
|
170
173
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
const { concat, group, hardline, indent, join, line } = require("../prettier");
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
aryptn: (path, opts, print) => {
|
5
|
+
const [constant, preargs, splatarg, postargs] = path.getValue().body;
|
6
|
+
let args = [];
|
7
|
+
|
8
|
+
if (preargs) {
|
9
|
+
args = args.concat(path.map(print, "body", 1));
|
10
|
+
}
|
11
|
+
|
12
|
+
if (splatarg) {
|
13
|
+
args.push(concat(["*", path.call(print, "body", 2)]));
|
14
|
+
}
|
15
|
+
|
16
|
+
if (postargs) {
|
17
|
+
args = args.concat(path.map(print, "body", 3));
|
18
|
+
}
|
19
|
+
|
20
|
+
args = group(join(concat([",", line]), args));
|
21
|
+
|
22
|
+
if (constant || path.getParentNode().type === "binary") {
|
23
|
+
args = concat(["[", args, "]"]);
|
24
|
+
}
|
25
|
+
|
26
|
+
if (constant) {
|
27
|
+
return concat([path.call(print, "body", 0), args]);
|
28
|
+
}
|
29
|
+
|
30
|
+
return args;
|
31
|
+
},
|
32
|
+
hshptn: () => {
|
33
|
+
throw new Error(
|
34
|
+
"Hash pattern not currently supported (https://bugs.ruby-lang.org/issues/16008)"
|
35
|
+
);
|
36
|
+
},
|
37
|
+
in: (path, opts, print) =>
|
38
|
+
concat([
|
39
|
+
"in ",
|
40
|
+
path.call(print, "body", 0),
|
41
|
+
indent(concat([hardline, path.call(print, "body", 1)]))
|
42
|
+
])
|
43
|
+
};
|
data/src/ripper.rb
CHANGED
@@ -123,9 +123,7 @@ class RipperJS < Ripper
|
|
123
123
|
@scanner_events = []
|
124
124
|
@line_counts = [0]
|
125
125
|
|
126
|
-
source.
|
127
|
-
line_counts << line_counts.last + line.size + 1
|
128
|
-
end
|
126
|
+
source.lines.each { |line| line_counts << line_counts.last + line.size }
|
129
127
|
end
|
130
128
|
|
131
129
|
def self.prepended(base)
|
@@ -156,12 +154,6 @@ class RipperJS < Ripper
|
|
156
154
|
scanner_events.delete_at(index)
|
157
155
|
end
|
158
156
|
|
159
|
-
# :backref, :const, :embdoc, :embdoc_beg, :embdoc_end,
|
160
|
-
# :embexpr_beg, :embexpr_end, :embvar, :heredoc_beg, :heredoc_end,
|
161
|
-
# :ident, :lbrace, :lbracket, :lparen, :op, :period, :regexp_beg,
|
162
|
-
# :regexp_end, :rparen, :symbeg, :symbols_beg, :tlambda, :tlambeg,
|
163
|
-
# :tstring_beg, :tstring_content, :tstring_end
|
164
|
-
|
165
157
|
events = {
|
166
158
|
BEGIN: [:@kw, 'BEGIN'],
|
167
159
|
END: [:@kw, 'END'],
|
@@ -186,6 +178,7 @@ class RipperJS < Ripper
|
|
186
178
|
for: [:@kw, 'for'],
|
187
179
|
hash: :@lbrace,
|
188
180
|
if: [:@kw, 'if'],
|
181
|
+
in: [:@kw, 'in'],
|
189
182
|
kwrest_param: [:@op, '**'],
|
190
183
|
lambda: :@tlambda,
|
191
184
|
mlhs_paren: :@lparen,
|
@@ -253,6 +246,21 @@ class RipperJS < Ripper
|
|
253
246
|
end
|
254
247
|
end
|
255
248
|
|
249
|
+
# Array pattern nodes contain an odd mix of potential child nodes based on
|
250
|
+
# which kind of pattern is being used.
|
251
|
+
def on_aryptn(*body)
|
252
|
+
char_start, char_end = char_pos, char_pos
|
253
|
+
|
254
|
+
body.flatten(1).each do |part|
|
255
|
+
next unless part
|
256
|
+
|
257
|
+
char_start = [char_start, part[:char_start]].min
|
258
|
+
char_end = [char_end, part[:char_end]].max
|
259
|
+
end
|
260
|
+
|
261
|
+
super(*body).merge!(char_start: char_start, char_end: char_end)
|
262
|
+
end
|
263
|
+
|
256
264
|
# Params have a somewhat interesting structure in that they are an array
|
257
265
|
# of arrays where the position in the top-level array indicates the type
|
258
266
|
# of param and the subarray is the list of parameters of that type. We
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prettier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Deisz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- src/nodes/methods.js
|
95
95
|
- src/nodes/operators.js
|
96
96
|
- src/nodes/params.js
|
97
|
+
- src/nodes/patterns.js
|
97
98
|
- src/nodes/regexp.js
|
98
99
|
- src/nodes/rescue.js
|
99
100
|
- src/nodes/scopes.js
|