prettier 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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("|")})`);