prettier 2.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +52 -6
  3. data/README.md +17 -16
  4. data/exe/rbprettier +2 -2
  5. data/lib/prettier/rake/task.rb +5 -5
  6. data/lib/prettier.rb +12 -11
  7. data/node_modules/prettier/bin-prettier.js +48 -18924
  8. data/node_modules/prettier/cli.js +12335 -0
  9. data/node_modules/prettier/doc.js +1306 -4755
  10. data/node_modules/prettier/index.js +37468 -57614
  11. data/node_modules/prettier/package.json +3 -2
  12. data/node_modules/prettier/parser-angular.js +2 -66
  13. data/node_modules/prettier/parser-babel.js +27 -22
  14. data/node_modules/prettier/parser-espree.js +26 -22
  15. data/node_modules/prettier/parser-flow.js +26 -22
  16. data/node_modules/prettier/parser-glimmer.js +27 -1
  17. data/node_modules/prettier/parser-graphql.js +15 -1
  18. data/node_modules/prettier/parser-html.js +21 -117
  19. data/node_modules/prettier/parser-markdown.js +61 -19
  20. data/node_modules/prettier/parser-meriyah.js +19 -22
  21. data/node_modules/prettier/parser-postcss.js +76 -22
  22. data/node_modules/prettier/parser-typescript.js +280 -22
  23. data/node_modules/prettier/parser-yaml.js +150 -15
  24. data/node_modules/prettier/third-party.js +8660 -11030
  25. data/package.json +11 -25
  26. data/rubocop.yml +6 -6
  27. data/src/getInfo.js +23 -0
  28. data/{dist/parser → src}/netcat.js +0 -1
  29. data/src/parseSync.js +216 -0
  30. data/src/plugin.js +170 -0
  31. data/{dist/parser → src}/server.rb +50 -27
  32. metadata +95 -75
  33. data/bin/console +0 -7
  34. data/dist/haml/embed.js +0 -53
  35. data/dist/haml/parser.js +0 -31
  36. data/dist/haml/parser.rb +0 -143
  37. data/dist/haml/printer.js +0 -336
  38. data/dist/parser/getInfo.js +0 -17
  39. data/dist/parser/parseSync.js +0 -179
  40. data/dist/plugin.js +0 -143
  41. data/dist/prettier.js +0 -15
  42. data/dist/rbs/parser.js +0 -34
  43. data/dist/rbs/parser.rb +0 -98
  44. data/dist/rbs/printer.js +0 -517
  45. data/dist/ruby/embed.js +0 -110
  46. data/dist/ruby/nodes/alias.js +0 -59
  47. data/dist/ruby/nodes/aref.js +0 -53
  48. data/dist/ruby/nodes/args.js +0 -165
  49. data/dist/ruby/nodes/arrays.js +0 -126
  50. data/dist/ruby/nodes/assign.js +0 -41
  51. data/dist/ruby/nodes/blocks.js +0 -87
  52. data/dist/ruby/nodes/calls.js +0 -260
  53. data/dist/ruby/nodes/case.js +0 -50
  54. data/dist/ruby/nodes/class.js +0 -54
  55. data/dist/ruby/nodes/commands.js +0 -124
  56. data/dist/ruby/nodes/conditionals.js +0 -242
  57. data/dist/ruby/nodes/constants.js +0 -38
  58. data/dist/ruby/nodes/flow.js +0 -66
  59. data/dist/ruby/nodes/hashes.js +0 -130
  60. data/dist/ruby/nodes/heredocs.js +0 -30
  61. data/dist/ruby/nodes/hooks.js +0 -35
  62. data/dist/ruby/nodes/ints.js +0 -27
  63. data/dist/ruby/nodes/lambdas.js +0 -69
  64. data/dist/ruby/nodes/loops.js +0 -73
  65. data/dist/ruby/nodes/massign.js +0 -73
  66. data/dist/ruby/nodes/methods.js +0 -70
  67. data/dist/ruby/nodes/operators.js +0 -70
  68. data/dist/ruby/nodes/params.js +0 -89
  69. data/dist/ruby/nodes/patterns.js +0 -122
  70. data/dist/ruby/nodes/regexp.js +0 -45
  71. data/dist/ruby/nodes/rescue.js +0 -85
  72. data/dist/ruby/nodes/return.js +0 -75
  73. data/dist/ruby/nodes/statements.js +0 -111
  74. data/dist/ruby/nodes/strings.js +0 -218
  75. data/dist/ruby/nodes/super.js +0 -30
  76. data/dist/ruby/nodes/undef.js +0 -26
  77. data/dist/ruby/nodes.js +0 -151
  78. data/dist/ruby/parser.js +0 -34
  79. data/dist/ruby/parser.rb +0 -3636
  80. data/dist/ruby/printer.js +0 -129
  81. data/dist/ruby/toProc.js +0 -93
  82. data/dist/types/haml.js +0 -4
  83. data/dist/types/plugin.js +0 -3
  84. data/dist/types/rbs.js +0 -4
  85. data/dist/types/ruby.js +0 -4
  86. data/dist/types/utils.js +0 -2
  87. data/dist/types.js +0 -30
  88. data/dist/utils/containsAssignment.js +0 -15
  89. data/dist/utils/getTrailingComma.js +0 -6
  90. data/dist/utils/hasAncestor.js +0 -15
  91. data/dist/utils/inlineEnsureParens.js +0 -49
  92. data/dist/utils/isEmptyBodyStmt.js +0 -10
  93. data/dist/utils/isEmptyStmts.js +0 -10
  94. data/dist/utils/literal.js +0 -8
  95. data/dist/utils/literallineWithoutBreakParent.js +0 -8
  96. data/dist/utils/makeCall.js +0 -13
  97. data/dist/utils/noIndent.js +0 -11
  98. data/dist/utils/printEmptyCollection.js +0 -44
  99. data/dist/utils/skipAssignIndent.js +0 -15
  100. data/dist/utils.js +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8393d82622bcce83298aa8e2833b37bccf9742b0a67e81cd3b730e57e6795b8
4
- data.tar.gz: a66af4efc73854f143e0faa288fdde112bf87ba45364af3efd862a179734453c
3
+ metadata.gz: 5f4a11b3b694651795ea82803d2b9efaafc70bc811409eeba50a76d48aff55bd
4
+ data.tar.gz: '0039c5cd3d89db3dbff1e0b5c4cfb2f307838f77faec7c6a9c3d23781f22bb4a'
5
5
  SHA512:
6
- metadata.gz: f780174b5b038bfd9583c637caefff23e442f4aef626e9e33769811c15afd7c267bb78f20c4eb223ab4b50f3c0b6664123c6ce00d997ff0a571b0d57228f5070
7
- data.tar.gz: bdfbd3f42b4db020059b511b3176ee7b5393a5a008136dd06a584c26df69afbcfe7d937e6151e22029858d71bad68e8c68eb07241e67771debd802cf733c282d
6
+ metadata.gz: 73dfee52bf2aaa09c15c6dc23f167ecf20ef983b368a0bac4ad3fb8d193044bb4109469a0eae06c93909ee0a5aef6e926035c083efe4fec9c696a2286efe3470
7
+ data.tar.gz: 02bded0e2c06e9153a16391671886f695f433c0a035b00116dc9e4fdae01a309b66d8f9147431491e81979e135c1abe6e796bf5e4c0005ebd00579d85ca9df0c
data/CHANGELOG.md CHANGED
@@ -6,6 +6,50 @@ 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.0] - 2022-05-12
10
+
11
+ ### Added
12
+
13
+ - [#1224](https://github.com/prettier/plugin-ruby/pull/1224) - kddnewton - Support passing the `rubyPlugins` option to configure Syntax Tree.
14
+
15
+ ## [3.0.0] - 2022-05-04
16
+
17
+ ### Added
18
+
19
+ - [#1190](https://github.com/prettier/plugin-ruby/pull/1190) - kddnewton - Encoding for source files is now guessed in a much better way.
20
+
21
+ ### Changed
22
+
23
+ - [#1198](https://github.com/prettier/plugin-ruby/issues/1198) - pas-f, kddnewton - Fix crashes on JRuby with do blocks.
24
+ - [#1131](https://github.com/prettier/plugin-ruby/issues/1131) - hyrious, kddnewton - Ensure zombie processes are not left around when the server exits.
25
+ - [#1206](https://github.com/prettier/plugin-ruby/pull/1206) - kddnewton - Switch back to plain JavaScript for development.
26
+ - [#1190](https://github.com/prettier/plugin-ruby/pull/1190) - kddnewton - Switch over to using Syntax Tree for the backend.
27
+
28
+ ### Removed
29
+
30
+ - [#1190](https://github.com/prettier/plugin-ruby/pull/1190) - kddnewton - The configuration options have been removed. Instead, configuration is to be done through modifying Syntax Tree.
31
+
32
+ ## [2.1.0] - 2022-04-04
33
+
34
+ ### Added
35
+
36
+ - [#1065](https://github.com/prettier/plugin-ruby/issues/1065) - langalex, kddnewton - The ability to set the `PRETTIER_RUBY_TIMEOUT_MS` environment variable to control how long to wait for the parser server to spin up.
37
+ - [#1173](https://github.com/prettier/plugin-ruby/pull/1173) - dleavitt - Support for RBS 2.x on Ruby 3.1.
38
+
39
+ ### Changed
40
+
41
+ - [#1028](https://github.com/prettier/plugin-ruby/issues/1028) - levymetal, kddnewton - Fix up some nested formatting with very complicated RSpec assertions.
42
+ - [#1035](https://github.com/prettier/plugin-ruby/issues/1035) - qcn, kddnewton - Ensure we don't try to print `return` incorrectly when multiple statements are contained within parentheses.
43
+ - [#1048](https://github.com/prettier/plugin-ruby/pull/1048) - kddnewton - Completely refactor the Ruby parser to use classes instead of hashes. Also remove a lot of the `body` keys are replace them with actual names.
44
+ - [#1042](https://github.com/prettier/plugin-ruby/issues/1042) - JoshuaKGoldberg, kddnewton - Ensure blocks are printed correctly when there are trailing comments on the `do` keyword.
45
+ - [#1134](https://github.com/prettier/plugin-ruby/pull/1134) - mhssmnn - Fix piping for STDIN to the gem process.
46
+ - [#1167](https://github.com/prettier/plugin-ruby/pull/1167) - dleavitt - More consistent assignment indentation.
47
+ - [#1074](https://github.com/prettier/plugin-ruby/issues/1074) - wagenet, kddnewton - Fix up `return` when nodes return arrays of docs.
48
+
49
+ ### Removed
50
+
51
+ - [#1048](https://github.com/prettier/plugin-ruby/pull/1048) - kddnewton - Drop support for Ruby 2.5.
52
+
9
53
  ## [2.0.0] - 2021-10-28
10
54
 
11
55
  ### Changed
@@ -295,7 +339,6 @@ The comment in the above example should stay in place.
295
339
 
296
340
  ```ruby
297
341
  begin
298
-
299
342
  rescue Foo, Bar
300
343
  # comment
301
344
  end
@@ -451,7 +494,8 @@ return (a or b) if c?
451
494
  - kddnewton - Support for the `nokw_param` node for specifying when methods should no accept keywords, as in:
452
495
 
453
496
  ```ruby
454
- def foo(**nil); end
497
+ def foo(**nil)
498
+ end
455
499
  ```
456
500
 
457
501
  - kddnewton - Support for the `args_forward` node for forwarding all types of arguments, as in:
@@ -497,9 +541,9 @@ will now be printed as:
497
541
 
498
542
  ```ruby
499
543
  Config::Download.new(
500
- 'prettier',
501
- filename: 'prettier.yml',
502
- url: 'https://raw.githubusercontent.com/...'
544
+ "prettier",
545
+ filename: "prettier.yml",
546
+ url: "https://raw.githubusercontent.com/..."
503
547
  ).perform
504
548
  ```
505
549
 
@@ -1187,7 +1231,9 @@ would previously result in `array[]`, but now prints properly.
1187
1231
 
1188
1232
  - Initial release 🎉
1189
1233
 
1190
- [unreleased]: https://github.com/prettier/plugin-ruby/compare/v2.0.0...HEAD
1234
+ [unreleased]: https://github.com/prettier/plugin-ruby/compare/v3.0.0...HEAD
1235
+ [3.0.0]: https://github.com/prettier/plugin-ruby/compare/v2.1.0...v3.0.0
1236
+ [2.1.0]: https://github.com/prettier/plugin-ruby/compare/v2.0.0...v2.1.0
1191
1237
  [2.0.0]: https://github.com/prettier/plugin-ruby/compare/v2.0.0-rc4...v2.0.0
1192
1238
  [2.0.0-rc4]: https://github.com/prettier/plugin-ruby/compare/v2.0.0-rc3...v2.0.0-rc4
1193
1239
  [2.0.0-rc3]: https://github.com/prettier/plugin-ruby/compare/v2.0.0-rc2...v2.0.0-rc3
data/README.md CHANGED
@@ -59,9 +59,9 @@ d = [
59
59
  30_643_069_058
60
60
  ]
61
61
  a, s = [], $*[0]
62
- s.each_byte { |b| a << ('%036b' % d[b.chr.to_i]).scan(/\d{6}/) }
62
+ s.each_byte { |b| a << ("%036b" % d[b.chr.to_i]).scan(/\d{6}/) }
63
63
  a.transpose.each do |a|
64
- a.join.each_byte { |i| print i == 49 ? ($*[1] || '#') : 32.chr }
64
+ a.join.each_byte { |i| print i == 49 ? ($*[1] || "#") : 32.chr }
65
65
  puts
66
66
  end
67
67
  ```
@@ -83,7 +83,7 @@ This plugin currently supports formatting the following kinds of files:
83
83
  Add this line to your application's Gemfile:
84
84
 
85
85
  ```ruby
86
- gem 'prettier'
86
+ gem "prettier"
87
87
  ```
88
88
 
89
89
  And then execute:
@@ -118,6 +118,12 @@ Or if you're using `yarn`, then add the plugin by:
118
118
  yarn add --dev prettier @prettier/plugin-ruby
119
119
  ```
120
120
 
121
+ You'll also need to add the necessary Ruby dependencies. You can do this by running:
122
+
123
+ ```bash
124
+ gem install bundler syntax_tree syntax_tree-haml syntax_tree-rbs
125
+ ```
126
+
121
127
  The `prettier` executable is now installed and ready for use:
122
128
 
123
129
  ```bash
@@ -128,31 +134,26 @@ The `prettier` executable is now installed and ready for use:
128
134
 
129
135
  Below are the options (from [`src/plugin.js`](src/plugin.js)) that `@prettier/plugin-ruby` currently supports:
130
136
 
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` | `"none"` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#trailing-comma)). `"es5"` is equivalent to `true`. |
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:
145
146
 
146
147
  ```json
147
148
  {
148
- "rubySingleQuote": false
149
+ "tabWidth": 4
149
150
  }
150
151
  ```
151
152
 
152
153
  Or, they can be passed to `prettier` as arguments:
153
154
 
154
155
  ```bash
155
- bundle exec rbprettier --ruby-single-quote false --write '**/*'
156
+ bundle exec rbprettier --tab-width 4 --write '**/*'
156
157
  ```
157
158
 
158
159
  ### Usage with RuboCop
data/exe/rbprettier CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- $:.unshift(File.expand_path(File.join('..', 'lib'), __dir__))
5
- require 'prettier'
4
+ $:.unshift(File.expand_path(File.join("..", "lib"), __dir__))
5
+ require "prettier"
6
6
 
7
7
  exit(Prettier.run(ARGV))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rake'
4
- require 'rake/tasklib'
3
+ require "rake"
4
+ require "rake/tasklib"
5
5
 
6
6
  module Prettier
7
7
  module Rake
@@ -35,7 +35,7 @@ module Prettier
35
35
  def initialize(name = :prettier)
36
36
  @name = name
37
37
  @write = true
38
- @source_files = 'lib/**/*.rb'
38
+ @source_files = "lib/**/*.rb"
39
39
 
40
40
  yield self if block_given?
41
41
  define_task
@@ -44,12 +44,12 @@ module Prettier
44
44
  private
45
45
 
46
46
  def define_task
47
- desc 'Runs prettier over source files'
47
+ desc "Runs prettier over source files"
48
48
  task(name) { run_task }
49
49
  end
50
50
 
51
51
  def run_task
52
- Prettier.run([('--write' if write), source_files].compact)
52
+ Prettier.run([("--write" if write), source_files].compact)
53
53
  exit($?.exitstatus) if $?&.exited?
54
54
  end
55
55
  end
data/lib/prettier.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json' unless defined?(JSON)
4
- require 'open3'
3
+ require "json" unless defined?(JSON)
4
+ require "open3"
5
5
 
6
6
  module Prettier
7
- PLUGIN = -File.expand_path('..', __dir__)
8
- BINARY = -File.join(PLUGIN, 'node_modules', 'prettier', 'bin-prettier.js')
9
- VERSION = -JSON.parse(File.read(File.join(PLUGIN, 'package.json')))['version']
7
+ PLUGIN = -File.expand_path("..", __dir__)
8
+ BINARY = -File.join(PLUGIN, "node_modules", "prettier", "bin-prettier.js")
9
+ VERSION = -JSON.parse(File.read(File.join(PLUGIN, "package.json")))["version"]
10
10
 
11
11
  def self.run(args)
12
- quoted = args.map { |arg| arg.start_with?('-') ? arg : "\"#{arg}\"" }
13
- command = "node #{BINARY} --plugin \"#{PLUGIN}\" #{quoted.join(' ')}"
12
+ quoted = args.map { |arg| arg.start_with?("-") ? arg : "\"#{arg}\"" }
13
+ command = "node #{BINARY} --plugin \"#{PLUGIN}\" #{quoted.join(" ")}"
14
14
 
15
- stdout, stderr, status = Open3.capture3({ 'RBPRETTIER' => '1' }, command)
15
+ stdout, stderr, status =
16
+ Open3.capture3({ "RBPRETTIER" => "1" }, command, stdin_data: STDIN)
16
17
  STDOUT.puts(stdout)
17
18
 
18
19
  # If we completed successfully, then just exit out.
@@ -29,11 +30,11 @@ module Prettier
29
30
  If you installed this dependency through git instead of from rubygems,
30
31
  it does not install the necessary files by default. To fix this you can
31
32
  either install them yourself by cd-ing into the directory where this gem
32
- is located (#{File.expand_path('..', __dir__)}) and running:
33
+ is located (#{File.expand_path("..", __dir__)}) and running:
33
34
 
34
- `yarn && yarn prepublishOnly`
35
+ `yarn install`
35
36
  or
36
- `npm install && npm run prepublishOnly`
37
+ `npm install`
37
38
  or
38
39
  you can change the source in your Gemfile to point directly to rubygems.
39
40
  MSG