prettier 3.0.0 → 3.1.2
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 +22 -1
- data/README.md +8 -7
- data/package.json +3 -3
- data/rubocop.yml +27 -7
- data/src/parseSync.js +13 -9
- data/src/plugin.js +15 -6
- data/src/server.rb +20 -4
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 69429c1f7b0cc5b82babb8463afcdacbb30026b0c9a77afcf8f6c4dbddd5b545
|
|
4
|
+
data.tar.gz: f81d934981c3086071371a9013184fbb19543dd7a86ca4258addd5870defbe73
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e6e612eb427b6c244c365b4595d1cefb0987e43255a541accd4843cadd4c73c0c5dd96268cf6ed8444afe2c2008e4792e3ad3155474d6ec20ffb880f65c23fb7
|
|
7
|
+
data.tar.gz: f825fb2f339e52c9c9dae9b287b5f21436fadaaea29ed0e93b14ee0ebb97bfaaac9aa1e16eaa2549b4a66e513c1007a3f48e1aa587efe6032568f77afd85d77f
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,24 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [3.1.2] - 2022-05-13
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- [#1127](https://github.com/prettier/plugin-ruby/issues/1227) - mscrivo, kddnewton - Support passing the `printWidth` option.
|
|
14
|
+
|
|
15
|
+
## [3.1.1] - 2022-05-12
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- [#1125](https://github.com/prettier/plugin-ruby/pull/1225) - kddnewton - Update the bundled rubocop config to be in sync with Syntax Tree.
|
|
20
|
+
|
|
21
|
+
## [3.1.0] - 2022-05-12
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- [#1224](https://github.com/prettier/plugin-ruby/pull/1224) - kddnewton - Support passing the `rubyPlugins` option to configure Syntax Tree.
|
|
26
|
+
|
|
9
27
|
## [3.0.0] - 2022-05-04
|
|
10
28
|
|
|
11
29
|
### Added
|
|
@@ -1225,7 +1243,10 @@ would previously result in `array[]`, but now prints properly.
|
|
|
1225
1243
|
|
|
1226
1244
|
- Initial release 🎉
|
|
1227
1245
|
|
|
1228
|
-
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v3.
|
|
1246
|
+
[unreleased]: https://github.com/prettier/plugin-ruby/compare/v3.1.2...HEAD
|
|
1247
|
+
[3.1.2]: https://github.com/prettier/plugin-ruby/compare/v3.1.1...v3.1.2
|
|
1248
|
+
[3.1.1]: https://github.com/prettier/plugin-ruby/compare/v3.1.0...v3.1.1
|
|
1249
|
+
[3.1.0]: https://github.com/prettier/plugin-ruby/compare/v3.0.0...v3.1.0
|
|
1229
1250
|
[3.0.0]: https://github.com/prettier/plugin-ruby/compare/v2.1.0...v3.0.0
|
|
1230
1251
|
[2.1.0]: https://github.com/prettier/plugin-ruby/compare/v2.0.0...v2.1.0
|
|
1231
1252
|
[2.0.0]: https://github.com/prettier/plugin-ruby/compare/v2.0.0-rc4...v2.0.0
|
data/README.md
CHANGED
|
@@ -68,7 +68,7 @@ end
|
|
|
68
68
|
|
|
69
69
|
## Getting started
|
|
70
70
|
|
|
71
|
-
To run `prettier` with the Ruby plugin, you're going to need [`ruby`](https://www.ruby-lang.org/en/documentation/installation/) (version `2.
|
|
71
|
+
To run `prettier` with the Ruby plugin, you're going to need [`ruby`](https://www.ruby-lang.org/en/documentation/installation/) (version `2.7.3` or newer) and [`node`](https://nodejs.org/en/download/) (version `8.3` or newer). If you're integrating with a project that is not already using `prettier`, you should use the Ruby gem. Otherwise you can use the `npm` package directly.
|
|
72
72
|
|
|
73
73
|
Note that currently the editor integrations work best with the `npm` package, as most of the major editor plugins expect a `node_modules` directory. You can get them to work with the Ruby gem, but it requires manually configuring the paths.
|
|
74
74
|
|
|
@@ -121,7 +121,7 @@ yarn add --dev prettier @prettier/plugin-ruby
|
|
|
121
121
|
You'll also need to add the necessary Ruby dependencies. You can do this by running:
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
|
-
gem install syntax_tree syntax_tree-haml syntax_tree-rbs
|
|
124
|
+
gem install bundler prettier_print syntax_tree syntax_tree-haml syntax_tree-rbs
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
The `prettier` executable is now installed and ready for use:
|
|
@@ -134,11 +134,12 @@ The `prettier` executable is now installed and ready for use:
|
|
|
134
134
|
|
|
135
135
|
Below are the options (from [`src/plugin.js`](src/plugin.js)) that `@prettier/plugin-ruby` currently supports:
|
|
136
136
|
|
|
137
|
-
| API Option | CLI Option | Default | Description
|
|
138
|
-
| --------------- | ------------------ | :-----: |
|
|
139
|
-
| `printWidth` | `--print-width` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)).
|
|
140
|
-
| `requirePragma` | `--require-pragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)).
|
|
141
|
-
| `
|
|
137
|
+
| API Option | CLI Option | Default | Description |
|
|
138
|
+
| --------------- | ------------------ | :-----: | --------------------------------------------------------------------------------------------------------------------------- |
|
|
139
|
+
| `printWidth` | `--print-width` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)). |
|
|
140
|
+
| `requirePragma` | `--require-pragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)). |
|
|
141
|
+
| `rubyPlugins` | `--ruby-plugins` | `""` | The comma-separated list of plugins to require. See [Syntax Tree](https://github.com/ruby-syntax-tree/syntax_tree#plugins). |
|
|
142
|
+
| `tabWidth` | `--tab-width` | `2` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)). |
|
|
142
143
|
|
|
143
144
|
Any of these can be added to your existing [prettier configuration
|
|
144
145
|
file](https://prettier.io/docs/en/configuration.html). For example:
|
data/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prettier/plugin-ruby",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.2",
|
|
4
4
|
"description": "prettier plugin for the Ruby programming language",
|
|
5
5
|
"main": "src/plugin.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"prettier": ">=2.3.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"eslint": "^8.
|
|
25
|
+
"eslint": "^8.15.0",
|
|
26
26
|
"eslint-config-prettier": "^8.0.0",
|
|
27
|
-
"husky": "^
|
|
27
|
+
"husky": "^8.0.1",
|
|
28
28
|
"jest": "^28.0.1",
|
|
29
29
|
"pretty-quick": "^3.1.2"
|
|
30
30
|
},
|
data/rubocop.yml
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# Disabling all Layout/* rules, as they're unnecessary when the user is using
|
|
2
|
-
#
|
|
3
|
-
|
|
2
|
+
# Syntax Tree to handle all of the formatting.
|
|
4
3
|
Layout:
|
|
5
4
|
Enabled: false
|
|
6
5
|
|
|
@@ -16,6 +15,16 @@ Layout/LineLength:
|
|
|
16
15
|
Style/MultilineIfModifier:
|
|
17
16
|
Enabled: false
|
|
18
17
|
|
|
18
|
+
# Syntax Tree will expand empty methods to put the end keyword on the subsequent
|
|
19
|
+
# line to reduce git diff noise.
|
|
20
|
+
Style/EmptyMethod:
|
|
21
|
+
EnforcedStyle: expanded
|
|
22
|
+
|
|
23
|
+
# lambdas that are constructed with the lambda method call cannot be safely
|
|
24
|
+
# turned into lambda literals without removing a method call.
|
|
25
|
+
Style/Lambda:
|
|
26
|
+
Enabled: false
|
|
27
|
+
|
|
19
28
|
# When method chains with multiple blocks are chained together, rubocop will let
|
|
20
29
|
# them pass if they're using braces but not if they're using do and end
|
|
21
30
|
# keywords. Because we will break individual blocks down to using keywords if
|
|
@@ -23,12 +32,28 @@ Style/MultilineIfModifier:
|
|
|
23
32
|
Style/MultilineBlockChain:
|
|
24
33
|
Enabled: false
|
|
25
34
|
|
|
35
|
+
# Syntax Tree by default uses double quotes, so changing the configuration here
|
|
36
|
+
# to match that.
|
|
37
|
+
Style/StringLiterals:
|
|
38
|
+
EnforcedStyle: double_quotes
|
|
39
|
+
|
|
40
|
+
Style/StringLiteralsInInterpolation:
|
|
41
|
+
EnforcedStyle: double_quotes
|
|
42
|
+
|
|
43
|
+
Style/QuotedSymbols:
|
|
44
|
+
EnforcedStyle: double_quotes
|
|
45
|
+
|
|
46
|
+
# We let users have a little more freedom with symbol and words arrays. If the
|
|
47
|
+
# user only has an individual item like ["value"] then we don't bother
|
|
48
|
+
# converting it because it ends up being just noise.
|
|
26
49
|
Style/SymbolArray:
|
|
27
50
|
Enabled: false
|
|
28
51
|
|
|
29
52
|
Style/WordArray:
|
|
30
53
|
Enabled: false
|
|
31
54
|
|
|
55
|
+
# We don't support trailing commas in Syntax Tree by default, so just turning
|
|
56
|
+
# these off for now.
|
|
32
57
|
Style/TrailingCommaInArguments:
|
|
33
58
|
Enabled: false
|
|
34
59
|
|
|
@@ -37,8 +62,3 @@ Style/TrailingCommaInArrayLiteral:
|
|
|
37
62
|
|
|
38
63
|
Style/TrailingCommaInHashLiteral:
|
|
39
64
|
Enabled: false
|
|
40
|
-
|
|
41
|
-
# lambdas that are constructed with the lambda method call cannot be safely
|
|
42
|
-
# turned into lambda literals without removing a method call.
|
|
43
|
-
Style/Lambda:
|
|
44
|
-
Enabled: false
|
data/src/parseSync.js
CHANGED
|
@@ -63,7 +63,7 @@ function getInfoFilepath() {
|
|
|
63
63
|
// server with that filepath as an argument, then spawn another process that
|
|
64
64
|
// will read that information in order to enable us to connect to it in the
|
|
65
65
|
// spawnSync function.
|
|
66
|
-
function spawnServer() {
|
|
66
|
+
function spawnServer(opts) {
|
|
67
67
|
const tempDir = mkdtempSync(path.join(os.tmpdir(), "prettier-plugin-ruby-"));
|
|
68
68
|
const filepath = getInfoFilepath();
|
|
69
69
|
|
|
@@ -114,11 +114,15 @@ function spawnServer() {
|
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
const server = spawn(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
const server = spawn(
|
|
118
|
+
"ruby",
|
|
119
|
+
[serverRbPath, `--plugins=${opts.rubyPlugins}`, filepath],
|
|
120
|
+
{
|
|
121
|
+
env: Object.assign({}, process.env, { LANG: getLang() }),
|
|
122
|
+
detached: true,
|
|
123
|
+
stdio: "inherit"
|
|
124
|
+
}
|
|
125
|
+
);
|
|
122
126
|
|
|
123
127
|
server.unref();
|
|
124
128
|
process.on("exit", () => {
|
|
@@ -171,13 +175,13 @@ function runningInPnPZip() {
|
|
|
171
175
|
// like it) here since Prettier requires the results of `parse` to be
|
|
172
176
|
// synchronous and Node.js does not offer a mechanism for synchronous socket
|
|
173
177
|
// requests.
|
|
174
|
-
function parseSync(parser, source) {
|
|
178
|
+
function parseSync(parser, source, opts) {
|
|
175
179
|
if (!parserArgs) {
|
|
176
|
-
parserArgs = spawnServer();
|
|
180
|
+
parserArgs = spawnServer(opts);
|
|
177
181
|
}
|
|
178
182
|
|
|
179
183
|
const response = spawnSync(parserArgs.cmd, parserArgs.args, {
|
|
180
|
-
input: `${parser}|${source}`,
|
|
184
|
+
input: `${parser}|${opts.printWidth}|${source}`,
|
|
181
185
|
maxBuffer: 15 * 1024 * 1024
|
|
182
186
|
});
|
|
183
187
|
|
data/src/plugin.js
CHANGED
|
@@ -81,8 +81,8 @@ const plugin = {
|
|
|
81
81
|
],
|
|
82
82
|
parsers: {
|
|
83
83
|
ruby: {
|
|
84
|
-
parse(text) {
|
|
85
|
-
return parseSync("ruby", text);
|
|
84
|
+
parse(text, _parsers, opts) {
|
|
85
|
+
return parseSync("ruby", text, opts);
|
|
86
86
|
},
|
|
87
87
|
astFormat: "ruby",
|
|
88
88
|
hasPragma(text) {
|
|
@@ -96,8 +96,8 @@ const plugin = {
|
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
rbs: {
|
|
99
|
-
parse(text) {
|
|
100
|
-
return parseSync("rbs", text);
|
|
99
|
+
parse(text, _parsers, opts) {
|
|
100
|
+
return parseSync("rbs", text, opts);
|
|
101
101
|
},
|
|
102
102
|
astFormat: "rbs",
|
|
103
103
|
hasPragma(text) {
|
|
@@ -111,8 +111,8 @@ const plugin = {
|
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
113
|
haml: {
|
|
114
|
-
parse(text) {
|
|
115
|
-
return parseSync("haml", text);
|
|
114
|
+
parse(text, _parsers, opts) {
|
|
115
|
+
return parseSync("haml", text, opts);
|
|
116
116
|
},
|
|
117
117
|
astFormat: "haml",
|
|
118
118
|
hasPragma(text) {
|
|
@@ -152,6 +152,15 @@ const plugin = {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
},
|
|
155
|
+
options: {
|
|
156
|
+
rubyPlugins: {
|
|
157
|
+
type: "string",
|
|
158
|
+
category: "Ruby",
|
|
159
|
+
default: "",
|
|
160
|
+
description: "The comma-separated list of plugins to require",
|
|
161
|
+
since: "3.1.0"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
155
164
|
defaultOptions: {
|
|
156
165
|
printWidth: 80,
|
|
157
166
|
tabWidth: 2
|
data/src/server.rb
CHANGED
|
@@ -6,10 +6,16 @@ require "json"
|
|
|
6
6
|
require "fileutils"
|
|
7
7
|
require "open3"
|
|
8
8
|
|
|
9
|
+
require "prettier_print"
|
|
9
10
|
require "syntax_tree"
|
|
10
11
|
require "syntax_tree/haml"
|
|
11
12
|
require "syntax_tree/rbs"
|
|
12
13
|
|
|
14
|
+
# First, require all of the plugins that the user specified.
|
|
15
|
+
ARGV.shift[/^--plugins=(.*)$/, 1]
|
|
16
|
+
.split(",")
|
|
17
|
+
.each { |plugin| require "syntax_tree/#{plugin}" }
|
|
18
|
+
|
|
13
19
|
# Make sure we trap these signals to be sure we get the quit command coming from
|
|
14
20
|
# the parent node process
|
|
15
21
|
quit = false
|
|
@@ -68,7 +74,8 @@ listener =
|
|
|
68
74
|
|
|
69
75
|
# Start up a new thread that will handle each successive connection.
|
|
70
76
|
Thread.new(server.accept_nonblock) do |socket|
|
|
71
|
-
parser, source =
|
|
77
|
+
parser, width, source =
|
|
78
|
+
socket.read.force_encoding("UTF-8").split("|", 3)
|
|
72
79
|
|
|
73
80
|
source.each_line do |line|
|
|
74
81
|
case line
|
|
@@ -85,16 +92,25 @@ listener =
|
|
|
85
92
|
end
|
|
86
93
|
end
|
|
87
94
|
|
|
95
|
+
maxwidth = width.to_i
|
|
88
96
|
response =
|
|
89
97
|
case parser
|
|
90
98
|
when "ping"
|
|
91
99
|
"pong"
|
|
92
100
|
when "ruby"
|
|
93
|
-
SyntaxTree.
|
|
101
|
+
formatter = SyntaxTree::Formatter.new(source, [], maxwidth)
|
|
102
|
+
SyntaxTree.parse(source).format(formatter)
|
|
103
|
+
formatter.flush
|
|
104
|
+
formatter.output.join
|
|
94
105
|
when "rbs"
|
|
95
|
-
SyntaxTree::RBS.
|
|
106
|
+
formatter = SyntaxTree::RBS::Formatter.new(source, [], maxwidth)
|
|
107
|
+
SyntaxTree::RBS.parse(source).format(formatter)
|
|
108
|
+
formatter.flush
|
|
109
|
+
formatter.output.join
|
|
96
110
|
when "haml"
|
|
97
|
-
|
|
111
|
+
PrettierPrint.format(+"", maxwidth) do |q|
|
|
112
|
+
SyntaxTree::Haml.parse(source).format(q)
|
|
113
|
+
end
|
|
98
114
|
end
|
|
99
115
|
|
|
100
116
|
if response
|
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: 3.
|
|
4
|
+
version: 3.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kevin Newton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-05-
|
|
11
|
+
date: 2022-05-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: syntax_tree
|