prettier 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1247c9f95d56f0bd5171d119a1376dc155670f372dcf2d09d8c082f35d89903a
4
- data.tar.gz: f85697402fa353f3355312e70b267b4e53b9edf9540fa2ace6ea31dbe84ddacb
3
+ metadata.gz: 2c23f6803729e7a50ce180a31626443c85d3a622b16b2c49d4d0b80e8a89eb99
4
+ data.tar.gz: ba8d7d3939ac37e7ed8bb4b2c5efa68c06ac2cb9b217bac839779ee0901f1321
5
5
  SHA512:
6
- metadata.gz: dd77c84b3f038ff3026814fd347602588d0bc5170c756873adb4dee7630aed45305f0e9353718e006b41eca8b10798a383e804a4f77993635e74a34b699a5522
7
- data.tar.gz: 6836a386fccfbc80916b2abe99f23d4a44e1c52f859f7aaed7d8a3f8b27c104a3222c547860e09f198f4310988666e6f205751c1ae5f6afaed0950968338d459
6
+ metadata.gz: e8bb12d0468a507b63049340ab4709ac4cf001f9cb2941a3f83b4e22d265158b12efcc24f2a6e342b0e20eee39d6125549be9b224e76472be2c34c286d82b1af
7
+ data.tar.gz: 1187d27608c659d69f8e7c2d966002f451a0e43245110506814fcc5c6d54e865ef2d382bc6a66fabf4818994d0f82eff3e1c02c9108492026d44314ce85c34d4
data/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ 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.5.4] - 2021-03-17
10
+
11
+ ### Changed
12
+
13
+ - [#835](https://github.com/prettier/plugin-ruby/issues/835) - valscion, kddeisz - Array splat operator should not get moved by leading comments.
14
+ - [#836](https://github.com/prettier/plugin-ruby/issues/836) - valscion, kddeisz - Array splat operator should not get moved by trailing comments.
15
+ - [#821](https://github.com/prettier/plugin-ruby/issues/821) - jscheid, kddeisz - Better error handling when using GNU netcat.
16
+
9
17
  ## [1.5.3] - 2021-02-28
10
18
 
11
19
  ### Changed
@@ -1085,7 +1093,9 @@ would previously result in `array[]`, but now prints properly.
1085
1093
 
1086
1094
  - Initial release 🎉
1087
1095
 
1088
- [unreleased]: https://github.com/prettier/plugin-ruby/compare/v1.5.2...HEAD
1096
+ [unreleased]: https://github.com/prettier/plugin-ruby/compare/v1.5.4...HEAD
1097
+ [1.5.4]: https://github.com/prettier/plugin-ruby/compare/v1.5.3...v1.5.4
1098
+ [1.5.3]: https://github.com/prettier/plugin-ruby/compare/v1.5.2...v1.5.3
1089
1099
  [1.5.2]: https://github.com/prettier/plugin-ruby/compare/v1.5.1...v1.5.2
1090
1100
  [1.5.1]: https://github.com/prettier/plugin-ruby/compare/v1.5.0...v1.5.1
1091
1101
  [1.5.0]: https://github.com/prettier/plugin-ruby/compare/v1.4.0...v1.5.0
data/README.md CHANGED
@@ -128,17 +128,19 @@ The `prettier` executable is now installed and ready for use:
128
128
 
129
129
  Below are the options (from [`src/plugin.js`](src/plugin.js)) that `@prettier/plugin-ruby` currently supports:
130
130
 
131
- | API Option | CLI Option | Default | Description |
132
- | ------------------ | ---------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------ |
133
- | `printWidth` | `--print-width` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)). |
134
- | `requirePragma` | `--require-pragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)). |
135
- | `rubyArrayLiteral` | `--ruby-array-literal` | `true` | When possible, favor the use of string and symbol array literals. |
136
- | `rubyHashLabel` | `--ruby-hash-label` | `true` | When possible, uses the shortened hash key syntax, as opposed to hash rockets. |
137
- | `rubyModifier` | `--ruby-modifier` | `true` | When it fits on one line, allows while and until statements to use the modifier form. |
138
- | `rubySingleQuote` | `--ruby-single-quote` | `true` | When double quotes are not necessary for interpolation, prefers the use of single quotes for string literals. |
139
- | `rubyToProc` | `--ruby-to-proc` | `false` | When possible, convert blocks to the more concise `Symbol#to_proc` syntax. |
140
- | `tabWidth` | `--tab-width` | `2` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)). |
141
- | `trailingComma` | `--trailing-comma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#trailing-comma)). `"es5"` is equivalent to `true`. |
131
+ | API Option | CLI Option | Default | Description |
132
+ | ------------------- | ----------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
133
+ | `printWidth` | `--print-width` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)). |
134
+ | `requirePragma` | `--require-pragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)). |
135
+ | `rubyArrayLiteral` | `--ruby-array-literal` | `true` | When possible, favor the use of string and symbol array literals. |
136
+ | `rubyHashLabel` | `--ruby-hash-label` | `true` | When possible, uses the shortened hash key syntax, as opposed to hash rockets. |
137
+ | `rubyModifier` | `--ruby-modifier` | `true` | When it fits on one line, allows while and until statements to use the modifier form. |
138
+ | `rubyNetcatCommand` | `--ruby-netcat-command` | | The prefix of the command to execute to communicate between the node.js process and the Ruby process. (For example, `"nc -U"` or `"telnet -u"`) Normally you should not set this option. |
139
+
140
+ | `rubySingleQuote` | `--ruby-single-quote` | `true` | When double quotes are not necessary for interpolation, prefers the use of single quotes for string literals. |
141
+ | `rubyToProc` | `--ruby-to-proc` | `false` | When possible, convert blocks to the more concise `Symbol#to_proc` syntax. |
142
+ | `tabWidth` | `--tab-width` | `2` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)). |
143
+ | `trailingComma` | `--trailing-comma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#trailing-comma)). `"es5"` is equivalent to `true`. |
142
144
 
143
145
  Any of these can be added to your existing [prettier configuration
144
146
  file](https://prettier.io/docs/en/configuration.html). For example:
@@ -163,11 +165,20 @@ with some of RuboCop's functionality.
163
165
  Prettier provides a RuboCop configuration file to disable the rules which clash.
164
166
  To enable, add the following config at the top of your project's `.rubocop.yml`:
165
167
 
168
+ #### Ruby gem
169
+
166
170
  ```yaml
167
171
  inherit_gem:
168
172
  prettier: rubocop.yml
169
173
  ```
170
174
 
175
+ #### `npm` package
176
+
177
+ ```yaml
178
+ inherit_from:
179
+ - node_modules/@prettier/plugin-ruby/rubocop.yml
180
+ ```
181
+
171
182
  ## Contributing
172
183
 
173
184
  Check out our [contributing guide](CONTRIBUTING.md). Bug reports and pull requests are welcome on GitHub at https://github.com/prettier/plugin-ruby.
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prettier/plugin-ruby",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "description": "prettier plugin for the Ruby programming language",
5
5
  "main": "src/plugin.js",
6
6
  "scripts": {
@@ -22,7 +22,7 @@
22
22
  "prettier": ">=1.10"
23
23
  },
24
24
  "devDependencies": {
25
- "eslint": "^7.21.0",
25
+ "eslint": "^7.22.0",
26
26
  "eslint-config-prettier": "^8.0.0",
27
27
  "husky": "^5.0.9",
28
28
  "jest": "^26.0.0",
data/src/haml/parser.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const parseSync = require("../parser/parseSync");
2
2
 
3
- const parse = (text, _parsers, _opts) => {
4
- return parseSync("haml", text);
3
+ const parse = (text, _parsers, opts) => {
4
+ return parseSync("haml", text, opts);
5
5
  };
6
6
 
7
7
  const pragmaPattern = /^\s*-#\s*@(prettier|format)/;
@@ -16,35 +16,42 @@ function hasCommand(name) {
16
16
 
17
17
  // Finds an netcat-like adapter to use for sending data to a socket. We order
18
18
  // these by likelihood of being found so we can avoid some shell-outs.
19
- function getCommandAndArg() {
19
+ function getCommandAndArgs() {
20
20
  if (hasCommand("nc")) {
21
- return ["nc", "-U"];
21
+ return ["nc", ["-U"]];
22
22
  }
23
23
 
24
24
  if (hasCommand("telnet")) {
25
- return ["telnet", "-u"];
25
+ return ["telnet", ["-u"]];
26
26
  }
27
27
 
28
28
  if (hasCommand("ncat")) {
29
- return ["ncat", "-U"];
29
+ return ["ncat", ["-U"]];
30
30
  }
31
31
 
32
32
  if (hasCommand("socat")) {
33
- return ["socat", "-"];
33
+ return ["socat", ["-"]];
34
34
  }
35
35
 
36
- return ["node", require.resolve("./netcat.js")];
36
+ return ["node", [require.resolve("./netcat.js")]];
37
37
  }
38
38
 
39
39
  let command;
40
- let arg;
40
+ let args;
41
41
 
42
- function getNetcat() {
42
+ function getNetcat(opts) {
43
43
  if (!command) {
44
- [command, arg] = getCommandAndArg();
44
+ if (opts.rubyNetcatCommand) {
45
+ const splits = opts.rubyNetcatCommand.split(" ");
46
+
47
+ command = splits[0];
48
+ args = splits.slice(1);
49
+ } else {
50
+ [command, args] = getCommandAndArgs();
51
+ }
45
52
  }
46
53
 
47
- return { command, arg };
54
+ return { command, args };
48
55
  }
49
56
 
50
57
  module.exports = getNetcat;
data/src/parser/netcat.js CHANGED
@@ -5,11 +5,9 @@
5
5
  const { createConnection } = require("net");
6
6
 
7
7
  const sock = process.argv[process.argv.length - 1];
8
-
9
8
  const client = createConnection(sock, () => process.stdin.pipe(client));
10
9
 
11
10
  client.on("data", (data) => process.stdout.write(data));
12
-
13
11
  client.on("error", (error) => {
14
12
  console.error(error);
15
13
  });
@@ -4,9 +4,24 @@ const requestParse = require("./requestParse");
4
4
  // like it) here since Prettier requires the results of `parse` to be
5
5
  // synchronous and Node.js does not offer a mechanism for synchronous socket
6
6
  // requests.
7
- function parseSync(parser, source) {
8
- const { stdout, stderr, status } = requestParse(parser, source);
7
+ function parseSync(parser, source, opts) {
8
+ const { stdout, stderr, status } = requestParse(parser, source, opts);
9
9
 
10
+ // We need special handling in case the user's version of nc doesn't support
11
+ // using unix sockets.
12
+ if (stderr.includes("invalid option -- U")) {
13
+ throw new Error(`
14
+ @prettier/plugin-ruby uses netcat to communicate over unix sockets between
15
+ the node.js process running prettier and an underlying Ruby process used
16
+ for parsing. Unfortunately the version of netcat that you have installed
17
+ (GNU netcat) does not support unix sockets. To solve this either uninstall
18
+ GNU netcat and use a different implementation, or change the value of the
19
+ rubyNetcatCommand option in your prettier configuration.
20
+ `);
21
+ }
22
+
23
+ // If we didn't receive anything over stdout or we have a bad exit status,
24
+ // then throw whatever we can.
10
25
  if (stdout.length === 0 || (status !== null && status !== 0)) {
11
26
  throw new Error(stderr || "An unknown error occurred");
12
27
  }
@@ -54,11 +54,11 @@ function ensureParseServer() {
54
54
  }
55
55
 
56
56
  // Sends a request to the parse server to parse the given content.
57
- function requestParse(parser, source) {
57
+ function requestParse(parser, source, opts) {
58
58
  ensureParseServer();
59
59
 
60
- const { command, arg } = getNetcat();
61
- const { stdout, stderr, status } = spawnSync(command, [arg, sockfile], {
60
+ const { command, args } = getNetcat(opts);
61
+ const { stdout, stderr, status } = spawnSync(command, args.concat(sockfile), {
62
62
  input: `${parser}|${source}`,
63
63
  maxBuffer: 15 * 1024 * 1024
64
64
  });
data/src/plugin.js CHANGED
@@ -119,6 +119,12 @@ module.exports = {
119
119
  description:
120
120
  "When it fits on one line, allows if, unless, while, and until statements to use the modifier form."
121
121
  },
122
+ rubyNetcatCommand: {
123
+ type: "string",
124
+ category: "Ruby",
125
+ description:
126
+ 'The prefix of the command to execute to communicate between the node.js process and the Ruby process. (For example, "nc -U" or "telnet -u") Normally you should not set this option.'
127
+ },
122
128
  rubySingleQuote: {
123
129
  type: "boolean",
124
130
  category: "Ruby",
data/src/rbs/parser.js CHANGED
@@ -4,8 +4,8 @@ const parseSync = require("../parser/parseSync");
4
4
  // to prettier a JavaScript object that is the equivalent AST that represents
5
5
  // the code stored in that string. We accomplish this by spawning a new Ruby
6
6
  // process of parser.rb and reading JSON off STDOUT.
7
- function parse(text, _parsers, _opts) {
8
- return parseSync("rbs", text);
7
+ function parse(text, _parsers, opts) {
8
+ return parseSync("rbs", text, opts);
9
9
  }
10
10
 
11
11
  const pragmaPattern = /#\s*@(prettier|format)/;
@@ -147,9 +147,16 @@ function printArgsAddStar(path, opts, print) {
147
147
  // *values
148
148
  // ]
149
149
  //
150
+ // or if we have an array like:
151
+ //
152
+ // [
153
+ // *values # comment
154
+ // ]
155
+ //
150
156
  // then we need to make sure we don't accidentally prepend the operator
151
157
  // before the comment.
152
- docs[1].parts[2] = concat(["*", docs[1].parts[2]]);
158
+ const index = node.body[1].comments.filter(({ leading }) => leading).length;
159
+ docs[1].parts[index] = concat(["*", docs[1].parts[index]]);
153
160
  } else {
154
161
  // If we don't have any comments, we can just prepend the operator
155
162
  docs[1] = concat(["*", docs[1]]);
data/src/ruby/parser.js CHANGED
@@ -4,8 +4,8 @@ const parseSync = require("../parser/parseSync");
4
4
  // to prettier a JavaScript object that is the equivalent AST that represents
5
5
  // the code stored in that string. We accomplish this by spawning a new Ruby
6
6
  // process of parser.rb and reading JSON off STDOUT.
7
- function parse(text, _parsers, _opts) {
8
- return parseSync("ruby", text);
7
+ function parse(text, _parsers, opts) {
8
+ return parseSync("ruby", text, opts);
9
9
  }
10
10
 
11
11
  const pragmaPattern = /#\s*@(prettier|format)/;
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.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Deisz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-28 00:00:00.000000000 Z
11
+ date: 2021-03-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: