prettier 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/package.json +1 -1
- data/src/nodes/arrays.js +2 -21
- data/src/nodes/hashes.js +8 -31
- data/src/nodes/statements.js +2 -2
- data/src/utils.js +2 -0
- data/src/utils/printEmptyCollection.js +42 -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: 2b3f385a13ce2aae0cef657abc5d33e5d3d2fbfb59edf1fb39193ded2828cf87
|
4
|
+
data.tar.gz: 1049cb733eb60e3221a7df64110f5841f39288f8e91cb589f08cc1c23a0ddfbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef14696b55d0dd1a544bba5fd45d88e3ab322ab9d2ae34d89b4b6bf84748ac35100022d5e050ed4ef0e5cf5ad93049c1782243cda27e4bae5b7dc87a2f951614
|
7
|
+
data.tar.gz: 1bedee0f2b091bc7b7b10ceb645d183271dcea847f8b843c79cd6db5ebf078bb94d7d91fd255127f77c71eb9edd185dcfa166ffe9c442f315f64beb9ba57f4ee
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.0.1] - 2020-12-12
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- [@steobrien], [@kddeisz] - Ensure leading comments in empty array and hash literals do not duplicate.
|
14
|
+
|
9
15
|
## [1.0.0] - 2020-12-11
|
10
16
|
|
11
17
|
### Changed
|
@@ -951,7 +957,8 @@ would previously result in `array[]`, but now prints properly.
|
|
951
957
|
|
952
958
|
- Initial release 🎉
|
953
959
|
|
954
|
-
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v1.0.
|
960
|
+
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v1.0.1...HEAD
|
961
|
+
[1.0.1]: https://github.com/prettier/plugin-ruby/compare/v1.0.0...v1.0.1
|
955
962
|
[1.0.0]: https://github.com/prettier/plugin-ruby/compare/v1.0.0-rc2...v1.0.0
|
956
963
|
[1.0.0-rc2]: https://github.com/prettier/plugin-ruby/compare/v1.0.0-rc1...v1.0.0-rc2
|
957
964
|
[1.0.0-rc1]: https://github.com/prettier/plugin-ruby/compare/v0.22.0...v1.0.0-rc1
|
data/package.json
CHANGED
data/src/nodes/arrays.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
const {
|
2
2
|
concat,
|
3
3
|
group,
|
4
|
-
hardline,
|
5
4
|
ifBreak,
|
6
5
|
indent,
|
7
6
|
join,
|
@@ -9,7 +8,7 @@ const {
|
|
9
8
|
softline
|
10
9
|
} = require("../prettier");
|
11
10
|
|
12
|
-
const { getTrailingComma } = require("../utils");
|
11
|
+
const { getTrailingComma, printEmptyCollection } = require("../utils");
|
13
12
|
|
14
13
|
// Checks that every argument within this args node is a string_literal node
|
15
14
|
// that has no spaces or interpolations. This means we're dealing with an array
|
@@ -93,24 +92,6 @@ function printSpecialArray(start) {
|
|
93
92
|
};
|
94
93
|
}
|
95
94
|
|
96
|
-
function printEmptyArrayWithComments(path, opts) {
|
97
|
-
const arrayNode = path.getValue();
|
98
|
-
|
99
|
-
const printComment = (commentPath, index) => {
|
100
|
-
arrayNode.comments[index].printed = true;
|
101
|
-
return opts.printer.printComment(commentPath);
|
102
|
-
};
|
103
|
-
|
104
|
-
return concat([
|
105
|
-
"[",
|
106
|
-
indent(
|
107
|
-
concat([hardline, join(hardline, path.map(printComment, "comments"))])
|
108
|
-
),
|
109
|
-
line,
|
110
|
-
"]"
|
111
|
-
]);
|
112
|
-
}
|
113
|
-
|
114
95
|
// An array node is any literal array in Ruby. This includes all of the special
|
115
96
|
// array literals as well as regular arrays. If it is a special array literal
|
116
97
|
// then it will have one child that represents the special array, otherwise it
|
@@ -122,7 +103,7 @@ function printArray(path, opts, print) {
|
|
122
103
|
// If there is no inner arguments node, then we're dealing with an empty
|
123
104
|
// array, so we can go ahead and return.
|
124
105
|
if (args === null) {
|
125
|
-
return
|
106
|
+
return printEmptyCollection(path, opts, "[", "]");
|
126
107
|
}
|
127
108
|
|
128
109
|
// If we have an array that contains only simple string literals with no
|
data/src/nodes/hashes.js
CHANGED
@@ -1,14 +1,11 @@
|
|
1
|
-
const {
|
2
|
-
concat,
|
3
|
-
group,
|
4
|
-
hardline,
|
5
|
-
ifBreak,
|
6
|
-
indent,
|
7
|
-
join,
|
8
|
-
line
|
9
|
-
} = require("../prettier");
|
1
|
+
const { concat, group, ifBreak, indent, join, line } = require("../prettier");
|
10
2
|
|
11
|
-
const {
|
3
|
+
const {
|
4
|
+
getTrailingComma,
|
5
|
+
prefix,
|
6
|
+
printEmptyCollection,
|
7
|
+
skipAssignIndent
|
8
|
+
} = require("../utils");
|
12
9
|
|
13
10
|
// When attempting to convert a hash rocket into a hash label, you need to take
|
14
11
|
// care because only certain patterns are allowed. Ruby source says that they
|
@@ -96,26 +93,6 @@ function printHashContents(path, opts, print) {
|
|
96
93
|
return join(concat([",", line]), path.map(print, "body"));
|
97
94
|
}
|
98
95
|
|
99
|
-
function printEmptyHashWithComments(path, opts) {
|
100
|
-
const hashNode = path.getValue();
|
101
|
-
|
102
|
-
const printComment = (commentPath, index) => {
|
103
|
-
hashNode.comments[index].printed = true;
|
104
|
-
return opts.printer.printComment(commentPath);
|
105
|
-
};
|
106
|
-
|
107
|
-
return group(
|
108
|
-
concat([
|
109
|
-
"{",
|
110
|
-
indent(
|
111
|
-
concat([hardline, join(hardline, path.map(printComment, "comments"))])
|
112
|
-
),
|
113
|
-
line,
|
114
|
-
"}"
|
115
|
-
])
|
116
|
-
);
|
117
|
-
}
|
118
|
-
|
119
96
|
function printHash(path, opts, print) {
|
120
97
|
const hashNode = path.getValue();
|
121
98
|
|
@@ -123,7 +100,7 @@ function printHash(path, opts, print) {
|
|
123
100
|
// missing, then it means we're dealing with an empty hash, so we can just
|
124
101
|
// exit here and print.
|
125
102
|
if (hashNode.body[0] === null) {
|
126
|
-
return
|
103
|
+
return printEmptyCollection(path, opts, "{", "}");
|
127
104
|
}
|
128
105
|
|
129
106
|
return group(
|
data/src/nodes/statements.js
CHANGED
@@ -98,8 +98,8 @@ module.exports = {
|
|
98
98
|
stmts[0].comments
|
99
99
|
) {
|
100
100
|
const comments = path.map(
|
101
|
-
(commentPath
|
102
|
-
|
101
|
+
(commentPath) => {
|
102
|
+
commentPath.getValue().printed = true;
|
103
103
|
return opts.printer.printComment(commentPath);
|
104
104
|
},
|
105
105
|
"body",
|
data/src/utils.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
const { concat } = require("./prettier");
|
2
2
|
const isEmptyStmts = require("./utils/isEmptyStmts");
|
3
3
|
const literalLineNoBreak = require("./utils/literalLineNoBreak");
|
4
|
+
const printEmptyCollection = require("./utils/printEmptyCollection");
|
4
5
|
|
5
6
|
// If the node is a type of assignment or if the node is a paren and nested
|
6
7
|
// inside that paren is a node that is a type of assignment.
|
@@ -89,5 +90,6 @@ module.exports = {
|
|
89
90
|
makeCall,
|
90
91
|
noIndent,
|
91
92
|
prefix,
|
93
|
+
printEmptyCollection,
|
92
94
|
skipAssignIndent
|
93
95
|
};
|
@@ -0,0 +1,42 @@
|
|
1
|
+
const { concat, group, hardline, indent, join, line } = require("../prettier");
|
2
|
+
|
3
|
+
// Empty collections are array or hash literals that do not contain any
|
4
|
+
// contents. They can, however, have comments inside the body. You can solve
|
5
|
+
// this by having a child node inside the array that gets the comments attached
|
6
|
+
// to it, but that requires modifying the parser. Instead, we can just manually
|
7
|
+
// print out the non-leading comments here.
|
8
|
+
function printEmptyCollection(path, opts, startToken, endToken) {
|
9
|
+
const node = path.getValue();
|
10
|
+
|
11
|
+
// If there are no comments or only leading comments, then we can just print
|
12
|
+
// out the start and end token and be done, as there are no comments inside
|
13
|
+
// the body of this node.
|
14
|
+
if (!node.comments || !node.comments.some((comment) => !comment.leading)) {
|
15
|
+
return `${startToken}${endToken}`;
|
16
|
+
}
|
17
|
+
|
18
|
+
const comments = [];
|
19
|
+
|
20
|
+
// For each comment, go through its path and print it out manually.
|
21
|
+
const printComment = (commentPath) => {
|
22
|
+
const comment = commentPath.getValue();
|
23
|
+
|
24
|
+
if (!comment.leading) {
|
25
|
+
comment.printed = true;
|
26
|
+
comments.push(opts.printer.printComment(commentPath));
|
27
|
+
}
|
28
|
+
};
|
29
|
+
|
30
|
+
path.each(printComment, "comments");
|
31
|
+
|
32
|
+
return group(
|
33
|
+
concat([
|
34
|
+
startToken,
|
35
|
+
indent(concat([hardline, join(hardline, comments)])),
|
36
|
+
line,
|
37
|
+
endToken
|
38
|
+
])
|
39
|
+
);
|
40
|
+
}
|
41
|
+
|
42
|
+
module.exports = printEmptyCollection;
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Deisz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- src/utils/inlineEnsureParens.js
|
74
74
|
- src/utils/isEmptyStmts.js
|
75
75
|
- src/utils/literalLineNoBreak.js
|
76
|
+
- src/utils/printEmptyCollection.js
|
76
77
|
homepage: https://github.com/prettier/plugin-ruby#readme
|
77
78
|
licenses:
|
78
79
|
- MIT
|