prettier 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -1
  3. data/dist/haml/parser.rb +6 -0
  4. data/dist/parser/getInfo.js +9 -2
  5. data/dist/parser/server.rb +6 -2
  6. data/dist/rbs/parser.rb +59 -2
  7. data/dist/rbs/printer.js +14 -6
  8. data/dist/ruby/embed.js +10 -5
  9. data/dist/ruby/location.js +19 -0
  10. data/dist/ruby/nodes/alias.js +6 -5
  11. data/dist/ruby/nodes/aref.js +4 -6
  12. data/dist/ruby/nodes/args.js +29 -56
  13. data/dist/ruby/nodes/arrays.js +31 -35
  14. data/dist/ruby/nodes/assign.js +19 -23
  15. data/dist/ruby/nodes/blocks.js +18 -15
  16. data/dist/ruby/nodes/calls.js +33 -30
  17. data/dist/ruby/nodes/case.js +8 -8
  18. data/dist/ruby/nodes/class.js +13 -13
  19. data/dist/ruby/nodes/commands.js +36 -22
  20. data/dist/ruby/nodes/conditionals.js +56 -52
  21. data/dist/ruby/nodes/constants.js +10 -13
  22. data/dist/ruby/nodes/flow.js +39 -46
  23. data/dist/ruby/nodes/hashes.js +26 -30
  24. data/dist/ruby/nodes/heredocs.js +9 -9
  25. data/dist/ruby/nodes/hooks.js +2 -2
  26. data/dist/ruby/nodes/ints.js +5 -5
  27. data/dist/ruby/nodes/lambdas.js +7 -6
  28. data/dist/ruby/nodes/loops.js +26 -24
  29. data/dist/ruby/nodes/massign.js +22 -35
  30. data/dist/ruby/nodes/methods.js +20 -40
  31. data/dist/ruby/nodes/operators.js +26 -28
  32. data/dist/ruby/nodes/params.js +31 -25
  33. data/dist/ruby/nodes/patterns.js +34 -37
  34. data/dist/ruby/nodes/regexp.js +6 -6
  35. data/dist/ruby/nodes/rescue.js +23 -22
  36. data/dist/ruby/nodes/return.js +61 -36
  37. data/dist/ruby/nodes/statements.js +24 -25
  38. data/dist/ruby/nodes/strings.js +36 -34
  39. data/dist/ruby/nodes/super.js +6 -10
  40. data/dist/ruby/nodes/undef.js +19 -14
  41. data/dist/ruby/nodes.js +47 -21
  42. data/dist/ruby/parser.js +3 -2
  43. data/dist/ruby/parser.rb +8470 -2972
  44. data/dist/ruby/printer.js +9 -71
  45. data/dist/ruby/toProc.js +33 -35
  46. data/dist/types.js +5 -1
  47. data/dist/utils/containsAssignment.js +5 -2
  48. data/dist/utils/getChildNodes.js +305 -0
  49. data/dist/utils/inlineEnsureParens.js +1 -1
  50. data/dist/utils/isEmptyBodyStmt.js +1 -1
  51. data/dist/utils/isEmptyParams.js +12 -0
  52. data/dist/utils/isEmptyStmts.js +1 -1
  53. data/dist/utils/makeCall.js +5 -4
  54. data/dist/utils/printEmptyCollection.js +3 -1
  55. data/dist/utils/skipAssignIndent.js +6 -2
  56. data/dist/utils.js +5 -3
  57. data/lib/prettier.rb +2 -1
  58. data/node_modules/prettier/bin-prettier.js +48 -18924
  59. data/node_modules/prettier/cli.js +12335 -0
  60. data/node_modules/prettier/doc.js +1306 -4755
  61. data/node_modules/prettier/index.js +37468 -57614
  62. data/node_modules/prettier/package.json +3 -2
  63. data/node_modules/prettier/parser-angular.js +2 -66
  64. data/node_modules/prettier/parser-babel.js +27 -22
  65. data/node_modules/prettier/parser-espree.js +26 -22
  66. data/node_modules/prettier/parser-flow.js +26 -22
  67. data/node_modules/prettier/parser-glimmer.js +27 -1
  68. data/node_modules/prettier/parser-graphql.js +15 -1
  69. data/node_modules/prettier/parser-html.js +21 -117
  70. data/node_modules/prettier/parser-markdown.js +61 -19
  71. data/node_modules/prettier/parser-meriyah.js +19 -22
  72. data/node_modules/prettier/parser-postcss.js +76 -22
  73. data/node_modules/prettier/parser-typescript.js +280 -22
  74. data/node_modules/prettier/parser-yaml.js +150 -15
  75. data/node_modules/prettier/third-party.js +8660 -11030
  76. data/package.json +7 -7
  77. metadata +7 -3
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.printXStringLiteral = exports.printSymbolLiteral = exports.printStringLiteral = exports.printStringEmbExpr = exports.printStringDVar = exports.printStringConcat = exports.printDynaSymbol = exports.printChar = void 0;
7
7
  const prettier_1 = __importDefault(require("../../prettier"));
8
+ const location_1 = require("../location");
8
9
  const { group, hardline, indent, literalline, removeLines, softline, join } = prettier_1.default;
9
10
  // If there is some part of this string that matches an escape sequence or that
10
11
  // contains the interpolation pattern ("#{"), then we are locked into whichever
@@ -12,13 +13,13 @@ const { group, hardline, indent, literalline, removeLines, softline, join } = pr
12
13
  // would activate the escape sequence, and if they chose double quotes, then
13
14
  // single quotes would deactivate it.)
14
15
  function isQuoteLocked(node) {
15
- return node.body.some((part) => part.type === "@tstring_content" &&
16
- (part.body.includes("#{") || part.body.includes("\\")));
16
+ return node.parts.some((part) => part.type === "tstring_content" &&
17
+ (part.value.includes("#{") || part.value.includes("\\")));
17
18
  }
18
19
  // A string is considered to be able to use single quotes if it contains only
19
20
  // plain string content and that content does not contain a single quote.
20
21
  function isSingleQuotable(node) {
21
- return node.body.every((part) => part.type === "@tstring_content" && !part.body.includes("'"));
22
+ return node.parts.every((part) => part.type === "tstring_content" && !part.value.includes("'"));
22
23
  }
23
24
  const quotePattern = new RegExp("\\\\([\\s\\S])|(['\"])", "g");
24
25
  function normalizeQuotes(content, enclosingQuote) {
@@ -55,12 +56,12 @@ function getClosingQuote(quote) {
55
56
  // are strings of length 1. If they're any longer than we'll try to apply the
56
57
  // correct quotes.
57
58
  const printChar = (path, opts) => {
58
- const { body } = path.getValue();
59
- if (body.length !== 2) {
60
- return body;
59
+ const { value } = path.getValue();
60
+ if (value.length !== 2) {
61
+ return value;
61
62
  }
62
63
  const quote = opts.rubySingleQuote ? "'" : '"';
63
- return [quote, body.slice(1), quote];
64
+ return [quote, value.slice(1), quote];
64
65
  };
65
66
  exports.printChar = printChar;
66
67
  const printPercentSDynaSymbol = (path, opts, print) => {
@@ -70,15 +71,15 @@ const printPercentSDynaSymbol = (path, opts, print) => {
70
71
  parts.push(node.quote);
71
72
  path.each((childPath) => {
72
73
  const childNode = childPath.getValue();
73
- if (childNode.type !== "@tstring_content") {
74
+ if (childNode.type !== "tstring_content") {
74
75
  // Here we are printing an embedded variable or expression.
75
76
  parts.push(print(childPath));
76
77
  }
77
78
  else {
78
79
  // Here we are printing plain string content.
79
- parts.push(join(literalline, childNode.body.split("\n")));
80
+ parts.push(join(literalline, childNode.value.split("\n")));
80
81
  }
81
- }, "body");
82
+ }, "parts");
82
83
  // Push on the closing character, which is the opposite of the third
83
84
  // character from the opening.
84
85
  parts.push(quotePairs[node.quote[2]]);
@@ -97,11 +98,11 @@ function shouldPrintPercentSDynaSymbol(node) {
97
98
  // quote in the content of the dyna symbol. If there is, then quoting could
98
99
  // get weird, so just bail out and stick to the original bounds in the source.
99
100
  const closing = quotePairs[node.quote[2]];
100
- return node.body.some((child) => child.type === "@tstring_content" &&
101
- (child.body.includes("\n") ||
102
- child.body.includes(closing) ||
103
- child.body.includes("'") ||
104
- child.body.includes('"')));
101
+ return node.parts.some((child) => child.type === "tstring_content" &&
102
+ (child.value.includes("\n") ||
103
+ child.value.includes(closing) ||
104
+ child.value.includes("'") ||
105
+ child.value.includes('"')));
105
106
  }
106
107
  // Prints a dynamic symbol. Assumes there's a quote property attached to the
107
108
  // node that will tell us which quote to use when printing. We're just going to
@@ -133,44 +134,45 @@ const printDynaSymbol = (path, opts, print) => {
133
134
  parts.push(quote);
134
135
  path.each((childPath) => {
135
136
  const child = childPath.getValue();
136
- if (child.type !== "@tstring_content") {
137
+ if (child.type !== "tstring_content") {
137
138
  parts.push(print(childPath));
138
139
  }
139
140
  else {
140
- parts.push(join(literalline, normalizeQuotes(child.body, quote).split("\n")));
141
+ parts.push(join(literalline, normalizeQuotes(child.value, quote).split("\n")));
141
142
  }
142
- }, "body");
143
+ }, "parts");
143
144
  parts.push(quote);
144
145
  // If we're inside of an assoc_new node as the key, then it will handle
145
146
  // printing the : on its own since it could change sides.
146
147
  const parentNode = path.getParentNode();
147
- if (parentNode.type !== "assoc_new" || parentNode.body[0] !== node) {
148
+ if (parentNode.type !== "assoc" || parentNode.key !== node) {
148
149
  parts.unshift(":");
149
150
  }
150
151
  return parts;
151
152
  };
152
153
  exports.printDynaSymbol = printDynaSymbol;
153
154
  const printStringConcat = (path, opts, print) => {
154
- const [leftDoc, rightDoc] = path.map(print, "body");
155
- return group([leftDoc, " \\", indent([hardline, rightDoc])]);
155
+ return group([
156
+ path.call(print, "left"),
157
+ " \\",
158
+ indent([hardline, path.call(print, "right")])
159
+ ]);
156
160
  };
157
161
  exports.printStringConcat = printStringConcat;
158
162
  // Prints out an interpolated variable in the string by converting it into an
159
163
  // embedded expression.
160
- const printStringDVar = (path, opts, print) => {
161
- return ["#{", path.call(print, "body", 0), "}"];
162
- };
164
+ const printStringDVar = (path, opts, print) => ["#{", path.call(print, "var"), "}"];
163
165
  exports.printStringDVar = printStringDVar;
164
166
  const printStringEmbExpr = (path, opts, print) => {
165
167
  const node = path.getValue();
166
- const parts = path.call(print, "body", 0);
168
+ const doc = path.call(print, "stmts");
167
169
  // If the contents of this embedded expression were originally on the same
168
170
  // line in the source, then we're going to leave them in place and assume
169
171
  // that's the way the developer wanted this expression represented.
170
- if (node.sl === node.el) {
171
- return ["#{", removeLines(parts), "}"];
172
+ if ((0, location_1.getStartLine)(node.loc) === (0, location_1.getEndLine)(node.loc)) {
173
+ return ["#{", removeLines(doc), "}"];
172
174
  }
173
- return group(["#{", indent([softline, parts]), [softline, "}"]]);
175
+ return group(["#{", indent([softline, doc]), [softline, "}"]]);
174
176
  };
175
177
  exports.printStringEmbExpr = printStringEmbExpr;
176
178
  // Prints out a literal string. This function does its best to respect the
@@ -181,7 +183,7 @@ const printStringLiteral = (path, { rubySingleQuote }, print) => {
181
183
  const node = path.getValue();
182
184
  // If the string is empty, it will not have any parts, so just print out the
183
185
  // quotes corresponding to the config
184
- if (node.body.length === 0) {
186
+ if (node.parts.length === 0) {
185
187
  return rubySingleQuote ? "''" : '""';
186
188
  }
187
189
  // Determine the quote that should enclose the new string
@@ -195,24 +197,24 @@ const printStringLiteral = (path, { rubySingleQuote }, print) => {
195
197
  const parts = path.map((partPath) => {
196
198
  const part = partPath.getValue();
197
199
  // In this case, the part of the string is an embedded expression
198
- if (part.type !== "@tstring_content") {
200
+ if (part.type !== "tstring_content") {
199
201
  return print(partPath);
200
202
  }
201
203
  // In this case, the part of the string is just regular string content
202
- return join(literalline, normalizeQuotes(part.body, quote).split("\n"));
203
- }, "body");
204
+ return join(literalline, normalizeQuotes(part.value, quote).split("\n"));
205
+ }, "parts");
204
206
  return [quote, ...parts, getClosingQuote(quote)];
205
207
  };
206
208
  exports.printStringLiteral = printStringLiteral;
207
209
  // Prints out a symbol literal. Its child will always be the ident that
208
210
  // represents the string content of the symbol.
209
211
  const printSymbolLiteral = (path, opts, print) => {
210
- return [":", path.call(print, "body", 0)];
212
+ return [":", path.call(print, "value")];
211
213
  };
212
214
  exports.printSymbolLiteral = printSymbolLiteral;
213
215
  // Prints out an xstring literal. Its child is an array of string parts,
214
216
  // including plain string content and interpolated content.
215
217
  const printXStringLiteral = (path, opts, print) => {
216
- return ["`", ...path.map(print, "body"), "`"];
218
+ return ["`", ...path.map(print, "parts"), "`"];
217
219
  };
218
220
  exports.printXStringLiteral = printXStringLiteral;
@@ -5,26 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.printZSuper = exports.printSuper = void 0;
7
7
  const prettier_1 = __importDefault(require("../../prettier"));
8
- const utils_1 = require("../../utils");
9
8
  const { align, group, join, line } = prettier_1.default;
10
9
  const printSuper = (path, opts, print) => {
11
- const args = path.getValue().body[0];
10
+ const { args } = path.getValue();
12
11
  if (args.type === "arg_paren") {
13
12
  // In case there are explicitly no arguments but they are using parens,
14
- // we assume they are attempting to override the initializer and pass no
13
+ // we assume they are attempting to override a parent method and pass no
15
14
  // arguments up.
16
- if (args.body[0] === null) {
17
- return "super()";
18
- }
19
- return ["super", path.call(print, "body", 0)];
15
+ return args.args === null ? "super()" : ["super", path.call(print, "args")];
20
16
  }
21
17
  const keyword = "super ";
22
- const argsDocs = path.call(print, "body", 0);
23
18
  return group([
24
19
  keyword,
25
- align(keyword.length, group(join([",", line], argsDocs)))
20
+ align(keyword.length, group(join([",", line], path.call(print, "args"))))
26
21
  ]);
27
22
  };
28
23
  exports.printSuper = printSuper;
29
24
  // Version of super without any parens or args.
30
- exports.printZSuper = (0, utils_1.literal)("super");
25
+ const printZSuper = (path) => path.getValue().value;
26
+ exports.printZSuper = printZSuper;
@@ -6,21 +6,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.printUndef = void 0;
7
7
  const prettier_1 = __importDefault(require("../../prettier"));
8
8
  const { addTrailingComment, align, group, join, line } = prettier_1.default;
9
- const printUndefSymbol = (path, opts, print) => {
10
- const node = path.getValue();
11
- // Since we're going to descend into the symbol literal to grab out the ident
12
- // node, then we need to make sure we copy over any comments as well,
13
- // otherwise we could accidentally skip printing them.
14
- if (node.comments) {
15
- node.comments.forEach((comment) => {
16
- addTrailingComment(node.body[0], comment);
17
- });
18
- }
19
- return path.call(print, "body", 0);
20
- };
21
9
  const printUndef = (path, opts, print) => {
10
+ const symsDocs = path.map((symbolPath) => {
11
+ const symbolNode = symbolPath.getValue();
12
+ // If we're not printing a symbol literal then it's a dyna symbol, so
13
+ // we're just going to print that node on its own.
14
+ if (symbolNode.type !== "symbol_literal") {
15
+ return print(symbolPath);
16
+ }
17
+ // We need to make sure we copy over any comments before we do the
18
+ // printing so they get printed as well.
19
+ if (symbolNode.comments) {
20
+ symbolNode.comments.forEach((comment) => {
21
+ addTrailingComment(symbolNode.value, comment);
22
+ });
23
+ }
24
+ // If we're printing a symbol literal, then we want to descend into it and
25
+ // just print the underlying contents so that it prints as a bare word.
26
+ return symbolPath.call(print, "value");
27
+ }, "syms");
22
28
  const keyword = "undef ";
23
- const argNodes = path.map((symbolPath) => printUndefSymbol(symbolPath, opts, print), "body");
24
- return group([keyword, align(keyword.length, join([",", line], argNodes))]);
29
+ return group([keyword, align(keyword.length, join([",", line], symsDocs))]);
25
30
  };
26
31
  exports.printUndef = printUndef;
data/dist/ruby/nodes.js CHANGED
@@ -31,11 +31,13 @@ const statements_1 = require("./nodes/statements");
31
31
  const strings_1 = require("./nodes/strings");
32
32
  const super_1 = require("./nodes/super");
33
33
  const undef_1 = require("./nodes/undef");
34
+ const printToken = (path) => path.getValue().value;
35
+ const printVoidStmt = () => "";
34
36
  const nodes = {
35
- "@__end__": statements_1.printEndContent,
36
- "@CHAR": strings_1.printChar,
37
- "@comment": statements_1.printComment,
38
- "@int": ints_1.printInt,
37
+ BEGIN: hooks_1.printBEGIN,
38
+ CHAR: strings_1.printChar,
39
+ END: hooks_1.printEND,
40
+ __end__: statements_1.printEndContent,
39
41
  access_ctrl: methods_1.printAccessControl,
40
42
  alias: alias_1.printAlias,
41
43
  aref: aref_1.printAref,
@@ -43,20 +45,21 @@ const nodes = {
43
45
  arg_paren: args_1.printArgParen,
44
46
  args: args_1.printArgs,
45
47
  args_add_block: args_1.printArgsAddBlock,
46
- args_add_star: args_1.printArgsAddStar,
47
48
  args_forward: params_1.printArgsForward,
49
+ arg_star: args_1.printArgStar,
48
50
  array: arrays_1.printArray,
49
51
  aryptn: patterns_1.printAryPtn,
50
52
  assign: assign_1.printAssign,
51
- assoc_new: hashes_1.printAssocNew,
53
+ assoc: hashes_1.printAssoc,
52
54
  assoc_splat: hashes_1.printAssocSplat,
53
55
  assoclist_from_args: hashes_1.printHashContents,
56
+ backref: printToken,
57
+ backtick: printToken,
54
58
  bare_assoc_hash: hashes_1.printHashContents,
55
- BEGIN: hooks_1.printBEGIN,
56
59
  begin: rescue_1.printBegin,
57
60
  binary: operators_1.printBinary,
58
- blockarg: args_1.printBlockArg,
59
61
  block_var: blocks_1.printBlockVar,
62
+ blockarg: args_1.printBlockArg,
60
63
  bodystmt: statements_1.printBodyStmt,
61
64
  brace_block: blocks_1.printBraceBlock,
62
65
  break: flow_1.printBreak,
@@ -65,51 +68,70 @@ const nodes = {
65
68
  class: class_1.printClass,
66
69
  command: commands_1.printCommand,
67
70
  command_call: commands_1.printCommandCall,
71
+ comment: statements_1.printComment,
72
+ const: printToken,
68
73
  const_path_field: constants_1.printConstPath,
69
74
  const_path_ref: constants_1.printConstPath,
70
75
  const_ref: constants_1.printConstRef,
76
+ cvar: printToken,
71
77
  def: methods_1.printDef,
72
- defs: methods_1.printDef,
73
- defsl: methods_1.printSingleLineMethod,
78
+ def_endless: methods_1.printDefEndless,
74
79
  defined: constants_1.printDefined,
80
+ defs: methods_1.printDef,
75
81
  do_block: blocks_1.printDoBlock,
76
82
  dot2: operators_1.printDot2,
77
83
  dot3: operators_1.printDot3,
78
84
  dyna_symbol: strings_1.printDynaSymbol,
79
85
  else: conditionals_1.printElse,
80
86
  elsif: conditionals_1.printElsif,
81
- END: hooks_1.printEND,
87
+ embdoc: statements_1.printComment,
82
88
  ensure: rescue_1.printEnsure,
89
+ excessed_comma: params_1.printExcessedComma,
83
90
  fcall: calls_1.printCallContainer,
84
- fndptn: patterns_1.printFndPtn,
85
91
  field: constants_1.printField,
92
+ float: printToken,
93
+ fndptn: patterns_1.printFndPtn,
86
94
  for: loops_1.printFor,
95
+ gvar: printToken,
87
96
  hash: hashes_1.printHash,
88
97
  heredoc: heredocs_1.printHeredoc,
98
+ heredoc_beg: printToken,
89
99
  hshptn: patterns_1.printHshPtn,
100
+ ident: printToken,
90
101
  if: conditionals_1.printIf,
91
- ifop: conditionals_1.printTernary,
92
102
  if_mod: conditionals_1.printIfModifier,
103
+ ifop: conditionals_1.printTernary,
104
+ imaginary: printToken,
93
105
  in: patterns_1.printIn,
106
+ int: ints_1.printInt,
107
+ ivar: printToken,
108
+ kw: printToken,
94
109
  kwrest_param: params_1.printKeywordRestParam,
110
+ label: printToken,
95
111
  lambda: lambdas_1.printLambda,
112
+ lbrace: printToken,
113
+ lparen: printToken,
96
114
  massign: massign_1.printMAssign,
97
115
  method_add_arg: calls_1.printMethodAddArg,
98
116
  method_add_block: calls_1.printMethodAddBlock,
99
117
  mlhs: massign_1.printMLHS,
100
- mlhs_add_post: massign_1.printMLHSAddPost,
101
- mlhs_add_star: massign_1.printMLHSAddStar,
102
118
  mlhs_paren: massign_1.printMLHSParen,
119
+ module: class_1.printModule,
103
120
  mrhs: massign_1.printMRHS,
104
121
  mrhs_add_star: massign_1.printMRHSAddStar,
105
122
  mrhs_new_from_args: massign_1.printMRHSNewFromArgs,
106
- module: class_1.printModule,
107
123
  next: flow_1.printNext,
124
+ not: operators_1.printNot,
125
+ op: printToken,
108
126
  opassign: assign_1.printOpAssign,
109
127
  params: params_1.printParams,
110
128
  paren: statements_1.printParen,
129
+ period: printToken,
111
130
  program: statements_1.printProgram,
131
+ qsymbols: arrays_1.printQsymbols,
132
+ qwords: arrays_1.printQwords,
112
133
  rassign: patterns_1.printRAssign,
134
+ rational: printToken,
113
135
  redo: rescue_1.printRedo,
114
136
  regexp_literal: regexp_1.printRegexpLiteral,
115
137
  rescue: rescue_1.printRescue,
@@ -117,35 +139,39 @@ const nodes = {
117
139
  rescue_mod: rescue_1.printRescueMod,
118
140
  rest_param: params_1.printRestParam,
119
141
  retry: rescue_1.printRetry,
120
- return: return_1.printReturn,
121
142
  return0: return_1.printReturn0,
143
+ return: return_1.printReturn,
122
144
  sclass: class_1.printSClass,
123
- stmts: statements_1.printStmts,
145
+ statements: statements_1.printStatements,
124
146
  string_concat: strings_1.printStringConcat,
125
147
  string_dvar: strings_1.printStringDVar,
126
148
  string_embexpr: strings_1.printStringEmbExpr,
127
149
  string_literal: strings_1.printStringLiteral,
128
150
  super: super_1.printSuper,
129
151
  symbol_literal: strings_1.printSymbolLiteral,
152
+ symbols: arrays_1.printSymbols,
130
153
  top_const_field: constants_1.printTopConst,
131
154
  top_const_ref: constants_1.printTopConst,
155
+ tstring_content: printToken,
132
156
  unary: operators_1.printUnary,
133
157
  undef: undef_1.printUndef,
134
158
  unless: conditionals_1.printUnless,
135
159
  unless_mod: conditionals_1.printUnlessModifier,
136
160
  until: loops_1.printUntil,
137
- until_mod: loops_1.printUntilModifer,
161
+ until_mod: loops_1.printUntil,
138
162
  var_alias: alias_1.printAlias,
139
163
  var_field: assign_1.printVarField,
140
164
  var_ref: assign_1.printVarRef,
141
165
  vcall: calls_1.printCallContainer,
166
+ void_stmt: printVoidStmt,
142
167
  when: case_1.printWhen,
143
168
  while: loops_1.printWhile,
144
- while_mod: loops_1.printWhileModifier,
169
+ while_mod: loops_1.printWhile,
145
170
  word: arrays_1.printWord,
171
+ words: arrays_1.printWords,
146
172
  xstring_literal: strings_1.printXStringLiteral,
147
- yield: flow_1.printYield,
148
173
  yield0: flow_1.printYield0,
174
+ yield: flow_1.printYield,
149
175
  zsuper: super_1.printZSuper
150
176
  };
151
177
  exports.default = nodes;
data/dist/ruby/parser.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const parseSync_1 = __importDefault(require("../parser/parseSync"));
7
+ const location_1 = require("./location");
7
8
  const parser = {
8
9
  // This function is responsible for taking an input string of text and
9
10
  // returning to prettier a JavaScript object that is the equivalent AST that
@@ -22,13 +23,13 @@ const parser = {
22
23
  // responsible for returning the index of the character within the source
23
24
  // string that is the beginning of the given node.
24
25
  locStart(node) {
25
- return node.sc;
26
+ return (0, location_1.getStartChar)(node.loc);
26
27
  },
27
28
  // This function is critical for comments and cursor support, and is
28
29
  // responsible for returning the index of the character within the source
29
30
  // string that is the ending of the given node.
30
31
  locEnd(node) {
31
- return node.ec;
32
+ return (0, location_1.getEndChar)(node.loc);
32
33
  }
33
34
  };
34
35
  exports.default = parser;