prettier 0.17.0 → 0.18.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.
@@ -2,10 +2,14 @@ const { spawnSync } = require("child_process");
2
2
  const path = require("path");
3
3
 
4
4
  module.exports = (text, _parsers, _opts) => {
5
- const child = spawnSync("ruby", [path.join(__dirname, "./ripper.rb")], {
6
- input: text,
7
- maxBuffer: 10 * 1024 * 1024 // 10MB
8
- });
5
+ const child = spawnSync(
6
+ "ruby",
7
+ ["--disable-gems", path.join(__dirname, "./ripper.rb")],
8
+ {
9
+ input: text,
10
+ maxBuffer: 10 * 1024 * 1024 // 10MB
11
+ }
12
+ );
9
13
 
10
14
  const error = child.stderr.toString();
11
15
  if (error) {
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- REQUIRED_VERSION = Gem::Version.new('2.5')
4
- if Gem::Version.new(RUBY_VERSION) < REQUIRED_VERSION
3
+ # We implement our own version checking here instead of using Gem::Version so
4
+ # that we can use the --disable-gems flag.
5
+ major, minor, * = RUBY_VERSION.split('.').map(&:to_i)
6
+ if (major < 2) || ((major == 2) && (minor < 5))
5
7
  warn(
6
- "Ruby version #{RUBY_VERSION} not supported. " \
7
- "Please upgrade to #{REQUIRED_VERSION} or above."
8
+ "Ruby version #{current_version} not supported. " \
9
+ "Please upgrade to #{required_version} or above."
8
10
  )
9
11
 
10
12
  exit 1
@@ -166,6 +168,7 @@ class RipperJS < Ripper
166
168
  assoc_splat: [:@op, '**'],
167
169
  arg_paren: :@lparen,
168
170
  args_add_star: [:@op, '*'],
171
+ args_forward: [:@op, '...'],
169
172
  begin: [:@kw, 'begin'],
170
173
  blockarg: [:@op, '&'],
171
174
  brace_block: :@lbrace,
@@ -290,7 +293,8 @@ class RipperJS < Ripper
290
293
  super(*body).merge!(
291
294
  start: node[:start],
292
295
  char_start: node[:char_start],
293
- char_end: char_pos
296
+ char_end: char_pos,
297
+ quote: node[:body]
294
298
  )
295
299
  end
296
300
  end
@@ -319,14 +323,28 @@ class RipperJS < Ripper
319
323
  # child node.
320
324
  %i[dyna_symbol symbol_literal].each do |event|
321
325
  define_method(:"on_#{event}") do |*body|
322
- char_start =
326
+ options =
323
327
  if scanner_events.any? { |sevent| sevent[:type] == :@symbeg }
324
- find_scanner_event(:@symbeg)[:char_start]
328
+ symbeg = find_scanner_event(:@symbeg)
329
+
330
+ {
331
+ char_start: symbeg[:char_start],
332
+ char_end: char_pos,
333
+ quote: symbeg[:body][1]
334
+ }
335
+ elsif scanner_events.any? { |sevent| sevent[:type] == :@label_end }
336
+ label_end = find_scanner_event(:@label_end)
337
+
338
+ {
339
+ char_start: char_start_for(body),
340
+ char_end: char_pos,
341
+ quote: label_end[:body][0]
342
+ }
325
343
  else
326
- char_start_for(body)
344
+ { char_start: char_start_for(body), char_end: char_pos }
327
345
  end
328
346
 
329
- super(*body).merge!(char_start: char_start, char_end: char_pos)
347
+ super(*body).merge!(options)
330
348
  end
331
349
  end
332
350
 
@@ -630,6 +648,8 @@ class RipperJS < Ripper
630
648
  end
631
649
  )
632
650
 
651
+ # This module contains miscellaneous fixes required to get the right
652
+ # structure.
633
653
  prepend(
634
654
  Module.new do
635
655
  private
@@ -660,18 +680,6 @@ class RipperJS < Ripper
660
680
  super(*body).tap { |node| node[:body][0][:body] << __end__ if __end__ }
661
681
  end
662
682
 
663
- # Adds the used quote type onto string nodes. This is necessary because
664
- # we're going to have to stick to whatever quote the user chose if there
665
- # are escape sequences within the string. For example, if you have '\n'
666
- # we can't switch to double quotes without changing what it means.
667
- def on_tstring_end(quote)
668
- last_sexp.merge!(quote: quote)
669
- end
670
-
671
- def on_label_end(quote)
672
- last_sexp.merge!(quote: quote[0]) # quote is ": or ':
673
- end
674
-
675
683
  # Normally access controls are reported as vcall nodes. This creates a
676
684
  # new node type to explicitly track those nodes instead, so that the
677
685
  # printer can add new lines as necessary.
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prettier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.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-12-12 00:00:00.000000000 Z
11
+ date: 2020-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +72,6 @@ files:
72
72
  - node_modules/prettier/index.js
73
73
  - node_modules/prettier/third-party.js
74
74
  - package.json
75
- - src/escapePattern.js
76
75
  - src/haml.js
77
76
  - src/haml/embed.js
78
77
  - src/haml/nodes/comment.js
@@ -139,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
138
  - !ruby/object:Gem::Version
140
139
  version: '0'
141
140
  requirements: []
142
- rubygems_version: 3.0.6
141
+ rubygems_version: 3.1.2
143
142
  signing_key:
144
143
  specification_version: 4
145
144
  summary: prettier plugin for the Ruby programming language
@@ -1,45 +0,0 @@
1
- /**
2
- * String literal syntax documentation from Ruby source (2.7.0-dev)
3
- *
4
- * Double-quote strings allow escaped characters such as <tt>\n</tt> for
5
- * newline, <tt>\t</tt> for tab, etc. The full list of supported escape
6
- * sequences are as follows:
7
- *
8
- * \a bell, ASCII 07h (BEL)
9
- * \b backspace, ASCII 08h (BS)
10
- * \t horizontal tab, ASCII 09h (TAB)
11
- * \n newline (line feed), ASCII 0Ah (LF)
12
- * \v vertical tab, ASCII 0Bh (VT)
13
- * \f form feed, ASCII 0Ch (FF)
14
- * \r carriage return, ASCII 0Dh (CR)
15
- * \e escape, ASCII 1Bh (ESC)
16
- * \s space, ASCII 20h (SPC)
17
- * \\ backslash, \
18
- * \nnn octal bit pattern, where nnn is 1-3 octal digits ([0-7])
19
- * \xnn hexadecimal bit pattern, where nn is 1-2 hexadecimal digits ([0-9a-fA-F])
20
- * \unnnn Unicode character, where nnnn is exactly 4 hexadecimal digits ([0-9a-fA-F])
21
- * \u{nnnn ...} Unicode character(s), where each nnnn is 1-6 hexadecimal digits ([0-9a-fA-F])
22
- * \cx or \C-x control character, where x is an ASCII printable character
23
- * \M-x meta character, where x is an ASCII printable character
24
- * \M-\C-x meta control character, where x is an ASCII printable character
25
- * \M-\cx same as above
26
- * \c\M-x same as above
27
- * \c? or \C-? delete, ASCII 7Fh (DEL)
28
- *
29
- * In addition to disabling interpolation, single-quoted strings also disable all
30
- * escape sequences except for the single-quote (<tt>\'</tt>) and backslash
31
- * (<tt>\\\\</tt>).
32
- */
33
- const patterns = [
34
- "[abtnvfres\\\\]", // simple
35
- "[0-7]{1,3}", // octal bits
36
- "x[0-9a-fA-F]{1,2}", // hex bit
37
- "u[0-9a-fA-F]{4}", // unicode char
38
- "u\\{[0-9a-fA-F ]+\\}", // unicode chars
39
- "c[ -~]|C\\-[ -~]", // control
40
- "M\\-[ -~]", // meta
41
- "M\\-\\\\C\\-[ -~]|M\\-\\\\c[ -~]|c\\\\M\\-[ -~]", // meta control
42
- "c\\?|C\\-\\?" // delete
43
- ];
44
-
45
- module.exports = new RegExp(`\\\\(${patterns.join("|")})`);