prettier 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -6
  3. data/README.md +16 -16
  4. data/exe/rbprettier +2 -2
  5. data/lib/prettier/rake/task.rb +5 -5
  6. data/lib/prettier.rb +11 -11
  7. data/package.json +9 -23
  8. data/rubocop.yml +6 -6
  9. data/{dist/parser → src}/getInfo.js +0 -1
  10. data/{dist/parser → src}/netcat.js +0 -1
  11. data/src/parseSync.js +212 -0
  12. data/src/plugin.js +161 -0
  13. data/{dist/parser → src}/server.rb +45 -31
  14. metadata +94 -78
  15. data/bin/console +0 -7
  16. data/dist/haml/embed.js +0 -53
  17. data/dist/haml/parser.js +0 -31
  18. data/dist/haml/parser.rb +0 -149
  19. data/dist/haml/printer.js +0 -336
  20. data/dist/parser/parseSync.js +0 -179
  21. data/dist/plugin.js +0 -143
  22. data/dist/prettier.js +0 -15
  23. data/dist/rbs/parser.js +0 -34
  24. data/dist/rbs/parser.rb +0 -155
  25. data/dist/rbs/printer.js +0 -525
  26. data/dist/ruby/embed.js +0 -115
  27. data/dist/ruby/location.js +0 -19
  28. data/dist/ruby/nodes/alias.js +0 -60
  29. data/dist/ruby/nodes/aref.js +0 -51
  30. data/dist/ruby/nodes/args.js +0 -138
  31. data/dist/ruby/nodes/arrays.js +0 -122
  32. data/dist/ruby/nodes/assign.js +0 -37
  33. data/dist/ruby/nodes/blocks.js +0 -90
  34. data/dist/ruby/nodes/calls.js +0 -263
  35. data/dist/ruby/nodes/case.js +0 -50
  36. data/dist/ruby/nodes/class.js +0 -54
  37. data/dist/ruby/nodes/commands.js +0 -138
  38. data/dist/ruby/nodes/conditionals.js +0 -246
  39. data/dist/ruby/nodes/constants.js +0 -35
  40. data/dist/ruby/nodes/flow.js +0 -59
  41. data/dist/ruby/nodes/hashes.js +0 -126
  42. data/dist/ruby/nodes/heredocs.js +0 -30
  43. data/dist/ruby/nodes/hooks.js +0 -35
  44. data/dist/ruby/nodes/ints.js +0 -27
  45. data/dist/ruby/nodes/lambdas.js +0 -70
  46. data/dist/ruby/nodes/loops.js +0 -75
  47. data/dist/ruby/nodes/massign.js +0 -60
  48. data/dist/ruby/nodes/methods.js +0 -50
  49. data/dist/ruby/nodes/operators.js +0 -68
  50. data/dist/ruby/nodes/params.js +0 -95
  51. data/dist/ruby/nodes/patterns.js +0 -119
  52. data/dist/ruby/nodes/regexp.js +0 -45
  53. data/dist/ruby/nodes/rescue.js +0 -86
  54. data/dist/ruby/nodes/return.js +0 -100
  55. data/dist/ruby/nodes/statements.js +0 -110
  56. data/dist/ruby/nodes/strings.js +0 -220
  57. data/dist/ruby/nodes/super.js +0 -26
  58. data/dist/ruby/nodes/undef.js +0 -31
  59. data/dist/ruby/nodes.js +0 -177
  60. data/dist/ruby/parser.js +0 -35
  61. data/dist/ruby/parser.rb +0 -9134
  62. data/dist/ruby/printer.js +0 -67
  63. data/dist/ruby/toProc.js +0 -91
  64. data/dist/types/haml.js +0 -4
  65. data/dist/types/plugin.js +0 -3
  66. data/dist/types/rbs.js +0 -4
  67. data/dist/types/ruby.js +0 -4
  68. data/dist/types/utils.js +0 -2
  69. data/dist/types.js +0 -34
  70. data/dist/utils/containsAssignment.js +0 -18
  71. data/dist/utils/getChildNodes.js +0 -305
  72. data/dist/utils/getTrailingComma.js +0 -6
  73. data/dist/utils/hasAncestor.js +0 -15
  74. data/dist/utils/inlineEnsureParens.js +0 -49
  75. data/dist/utils/isEmptyBodyStmt.js +0 -10
  76. data/dist/utils/isEmptyParams.js +0 -12
  77. data/dist/utils/isEmptyStmts.js +0 -10
  78. data/dist/utils/literal.js +0 -8
  79. data/dist/utils/literallineWithoutBreakParent.js +0 -8
  80. data/dist/utils/makeCall.js +0 -14
  81. data/dist/utils/noIndent.js +0 -11
  82. data/dist/utils/printEmptyCollection.js +0 -46
  83. data/dist/utils/skipAssignIndent.js +0 -19
  84. data/dist/utils.js +0 -32
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.printReturn0 = exports.printReturn = void 0;
7
- const prettier_1 = __importDefault(require("../../prettier"));
8
- const { group, ifBreak, indent, line, join, softline } = prettier_1.default;
9
- // You can't skip the parentheses if you have comments or certain operators with
10
- // lower precedence than the return keyword.
11
- function canSkipParens(paren) {
12
- const stmts = paren.cnts;
13
- // return(
14
- // foo
15
- // bar
16
- // )
17
- if (stmts.body.length !== 1) {
18
- return false;
19
- }
20
- // return(
21
- // # a
22
- // b
23
- // )
24
- if (stmts.comments) {
25
- return false;
26
- }
27
- const stmt = stmts.body[0];
28
- // return (a or b)
29
- if (stmt.type === "binary" && ["and", "or"].includes(stmt.op)) {
30
- return false;
31
- }
32
- // return (not a)
33
- if (stmt.type === "not") {
34
- return false;
35
- }
36
- return true;
37
- }
38
- const printReturn = (path, opts, print) => {
39
- const node = path.getValue();
40
- let parts = "";
41
- let joining = false;
42
- if (node.args.type === "args_add_block") {
43
- const args = node.args.args;
44
- const steps = ["args", "args"];
45
- if (args.type === "args" && args.parts.length === 1 && args.parts[0]) {
46
- // This is the first and only argument being passed to the return keyword.
47
- let arg = args.parts[0];
48
- steps.push("parts", 0);
49
- // If the body of the return contains parens, then just skip directly to
50
- // the content of the parens so that we can skip printing parens if we
51
- // don't want them.
52
- if (arg.type === "paren") {
53
- // If we can't skip over the parentheses, then we know we can just bail
54
- // out here and print the only argument as normal since it's a paren.
55
- if (!canSkipParens(arg)) {
56
- return ["return", path.call(print, "args")];
57
- }
58
- arg = arg.cnts.body[0];
59
- steps.push("cnts", "body", 0);
60
- }
61
- // If we're returning an array literal that isn't a special array that has
62
- // at least 2 elements, then we want to grab the arguments so that we can
63
- // print them out as if they were normal return arguments.
64
- if (arg.type === "array" && arg.cnts) {
65
- const contents = arg.cnts;
66
- if (contents.type === "args" && contents.parts.length > 1) {
67
- // If we have just regular arguments and we have more than 1.
68
- steps.push("cnts");
69
- }
70
- }
71
- }
72
- // We're doing this weird dance with the steps variable because it's
73
- // possible that you're printing an array nested under some parentheses, in
74
- // which case we still want to descend down that far. For example,
75
- // return([1, 2, 3]) should print as return 1, 2, 3.
76
- parts = path.call((targetPath) => {
77
- const target = targetPath.getValue();
78
- joining = target.type === "args" || target.type === "args_add_block";
79
- return print(targetPath);
80
- }, ...steps);
81
- }
82
- // If we didn't hit any of our special cases, then just print out the
83
- // arguments normally here.
84
- if (parts === "") {
85
- parts = path.call(print, "args");
86
- joining = true;
87
- }
88
- const useBrackets = Array.isArray(parts) && parts.length > 1;
89
- const value = joining ? join([",", line], parts) : parts;
90
- return group([
91
- "return",
92
- ifBreak(useBrackets ? " [" : "(", " "),
93
- indent([softline, value]),
94
- softline,
95
- ifBreak(useBrackets ? "]" : ")", "")
96
- ]);
97
- };
98
- exports.printReturn = printReturn;
99
- const printReturn0 = (path) => path.getValue().value;
100
- exports.printReturn0 = printReturn0;
@@ -1,110 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.printStatements = exports.printProgram = exports.printComment = exports.printEndContent = exports.printParen = exports.printBodyStmt = void 0;
7
- const prettier_1 = __importDefault(require("../../prettier"));
8
- const utils_1 = require("../../utils");
9
- const location_1 = require("../location");
10
- const { breakParent, dedent, group, hardline, indent, join, line, literalline, softline, trim } = prettier_1.default;
11
- const printBodyStmt = (path, opts, print) => {
12
- const node = path.getValue();
13
- const parts = [];
14
- if (!(0, utils_1.isEmptyStmts)(node.stmts)) {
15
- parts.push(path.call(print, "stmts"));
16
- }
17
- if (node.rsc) {
18
- parts.push(dedent([hardline, path.call(print, "rsc")]));
19
- }
20
- if (node.els) {
21
- // Before Ruby 2.6, this piece of bodystmt was an explicit "else" node
22
- /* istanbul ignore next */
23
- const stmts = node.els.type === "else"
24
- ? path.call(print, "els", "body", 0)
25
- : path.call(print, "els");
26
- parts.push([dedent([hardline, "else"]), hardline, stmts]);
27
- }
28
- if (node.ens) {
29
- parts.push(dedent([hardline, path.call(print, "ens")]));
30
- }
31
- return group(parts);
32
- };
33
- exports.printBodyStmt = printBodyStmt;
34
- const argNodeTypes = ["args", "args_add_block"];
35
- const printParen = (path, opts, print) => {
36
- const contentNode = path.getValue().cnts;
37
- if (!contentNode) {
38
- return [path.call(print, "lparen"), ")"];
39
- }
40
- let contentDoc = path.call(print, "cnts");
41
- // If the content is params, we're going to let it handle its own parentheses
42
- // so that it breaks nicely.
43
- if (contentNode.type === "params") {
44
- return contentDoc;
45
- }
46
- // If we have an arg type node as the contents, then it's going to return an
47
- // array, so we need to explicitly join that content here.
48
- if (argNodeTypes.includes(contentNode.type)) {
49
- contentDoc = join([",", line], contentDoc);
50
- }
51
- return group([
52
- path.call(print, "lparen"),
53
- indent([softline, contentDoc]),
54
- softline,
55
- ")"
56
- ]);
57
- };
58
- exports.printParen = printParen;
59
- const printEndContent = (path) => {
60
- const node = path.getValue();
61
- return [trim, "__END__", literalline, node.value];
62
- };
63
- exports.printEndContent = printEndContent;
64
- const printComment = (path, opts) => {
65
- return opts.printer.printComment(path, opts);
66
- };
67
- exports.printComment = printComment;
68
- const printProgram = (path, opts, print) => [path.call(print, "stmts"), hardline];
69
- exports.printProgram = printProgram;
70
- const printStatements = (path, opts, print) => {
71
- const stmts = path.getValue().body;
72
- // This is a special case where we have only comments inside a statement
73
- // list. In this case we want to avoid doing any kind of line number
74
- // tracking and just print out the comments.
75
- if (stmts.length === 1 &&
76
- stmts[0].type === "void_stmt" &&
77
- stmts[0].comments) {
78
- const nodePath = path;
79
- const comments = nodePath.map((commentPath) => {
80
- commentPath.getValue().printed = true;
81
- return opts.printer.printComment(commentPath, opts);
82
- }, "body", 0, "comments");
83
- return [breakParent, join(hardline, comments)];
84
- }
85
- const parts = [];
86
- let lineNo = null;
87
- stmts.forEach((stmt, index) => {
88
- if (stmt.type === "void_stmt") {
89
- return;
90
- }
91
- const printed = path.call(print, "body", index);
92
- if (lineNo === null) {
93
- parts.push(printed);
94
- }
95
- else if ((0, location_1.getStartLine)(stmt.loc) - lineNo > 1 ||
96
- [stmt.type, stmts[index - 1].type].includes("access_ctrl")) {
97
- parts.push(hardline, hardline, printed);
98
- }
99
- else if ((0, location_1.getStartLine)(stmt.loc) !== lineNo ||
100
- path.getParentNode().type !== "string_embexpr") {
101
- parts.push(hardline, printed);
102
- }
103
- else {
104
- parts.push("; ", printed);
105
- }
106
- lineNo = (0, location_1.getEndLine)(stmt.loc);
107
- });
108
- return parts;
109
- };
110
- exports.printStatements = printStatements;
@@ -1,220 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.printXStringLiteral = exports.printSymbolLiteral = exports.printStringLiteral = exports.printStringEmbExpr = exports.printStringDVar = exports.printStringConcat = exports.printDynaSymbol = exports.printChar = void 0;
7
- const prettier_1 = __importDefault(require("../../prettier"));
8
- const location_1 = require("../location");
9
- const { group, hardline, indent, literalline, removeLines, softline, join } = prettier_1.default;
10
- // If there is some part of this string that matches an escape sequence or that
11
- // contains the interpolation pattern ("#{"), then we are locked into whichever
12
- // quote the user chose. (If they chose single quotes, then double quoting
13
- // would activate the escape sequence, and if they chose double quotes, then
14
- // single quotes would deactivate it.)
15
- function isQuoteLocked(node) {
16
- return node.parts.some((part) => part.type === "tstring_content" &&
17
- (part.value.includes("#{") || part.value.includes("\\")));
18
- }
19
- // A string is considered to be able to use single quotes if it contains only
20
- // plain string content and that content does not contain a single quote.
21
- function isSingleQuotable(node) {
22
- return node.parts.every((part) => part.type === "tstring_content" && !part.value.includes("'"));
23
- }
24
- const quotePattern = new RegExp("\\\\([\\s\\S])|(['\"])", "g");
25
- function normalizeQuotes(content, enclosingQuote) {
26
- // Escape and unescape single and double quotes as needed to be able to
27
- // enclose `content` with `enclosingQuote`.
28
- return content.replace(quotePattern, (match, escaped, quote) => {
29
- if (quote === enclosingQuote) {
30
- return `\\${quote}`;
31
- }
32
- if (quote) {
33
- return quote;
34
- }
35
- return `\\${escaped}`;
36
- });
37
- }
38
- const quotePairs = {
39
- "(": ")",
40
- "[": "]",
41
- "{": "}",
42
- "<": ">"
43
- };
44
- function getClosingQuote(quote) {
45
- if (!quote.startsWith("%")) {
46
- return quote;
47
- }
48
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
49
- const boundary = /%[Qq]?(.)/.exec(quote)[1];
50
- if (boundary in quotePairs) {
51
- return quotePairs[boundary];
52
- }
53
- return boundary;
54
- }
55
- // Prints a @CHAR node. @CHAR nodes are special character strings that usually
56
- // are strings of length 1. If they're any longer than we'll try to apply the
57
- // correct quotes.
58
- const printChar = (path, opts) => {
59
- const { value } = path.getValue();
60
- if (value.length !== 2) {
61
- return value;
62
- }
63
- const quote = opts.rubySingleQuote ? "'" : '"';
64
- return [quote, value.slice(1), quote];
65
- };
66
- exports.printChar = printChar;
67
- const printPercentSDynaSymbol = (path, opts, print) => {
68
- const node = path.getValue();
69
- const parts = [];
70
- // Push on the quote, which includes the opening character.
71
- parts.push(node.quote);
72
- path.each((childPath) => {
73
- const childNode = childPath.getValue();
74
- if (childNode.type !== "tstring_content") {
75
- // Here we are printing an embedded variable or expression.
76
- parts.push(print(childPath));
77
- }
78
- else {
79
- // Here we are printing plain string content.
80
- parts.push(join(literalline, childNode.value.split("\n")));
81
- }
82
- }, "parts");
83
- // Push on the closing character, which is the opposite of the third
84
- // character from the opening.
85
- parts.push(quotePairs[node.quote[2]]);
86
- return parts;
87
- };
88
- // We don't actually want to print %s symbols, as they're much more rarely seen
89
- // in the wild. But we're going to be forced into it if it's a multi-line symbol
90
- // or if the quoting would get super complicated.
91
- function shouldPrintPercentSDynaSymbol(node) {
92
- // We shouldn't print a %s dyna symbol if it was not already that way in the
93
- // original source.
94
- if (node.quote[0] !== "%") {
95
- return false;
96
- }
97
- // Here we're going to check if there is a closing character, a new line, or a
98
- // quote in the content of the dyna symbol. If there is, then quoting could
99
- // get weird, so just bail out and stick to the original bounds in the source.
100
- const closing = quotePairs[node.quote[2]];
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('"')));
106
- }
107
- // Prints a dynamic symbol. Assumes there's a quote property attached to the
108
- // node that will tell us which quote to use when printing. We're just going to
109
- // use whatever quote was provided.
110
- //
111
- // In the case of a plain dyna symbol, node.quote will be either :" or :'
112
- // For %s dyna symbols, node.quote will be %s[, %s(, %s{, or %s<
113
- const printDynaSymbol = (path, opts, print) => {
114
- const node = path.getValue();
115
- if (shouldPrintPercentSDynaSymbol(node)) {
116
- return printPercentSDynaSymbol(path, opts, print);
117
- }
118
- const parts = [];
119
- let quote;
120
- if (isQuoteLocked(node)) {
121
- if (node.quote.startsWith("%")) {
122
- quote = opts.rubySingleQuote ? "'" : '"';
123
- }
124
- else if (node.quote.startsWith(":")) {
125
- quote = node.quote.slice(1);
126
- }
127
- else {
128
- quote = node.quote;
129
- }
130
- }
131
- else {
132
- quote = opts.rubySingleQuote && isSingleQuotable(node) ? "'" : '"';
133
- }
134
- parts.push(quote);
135
- path.each((childPath) => {
136
- const child = childPath.getValue();
137
- if (child.type !== "tstring_content") {
138
- parts.push(print(childPath));
139
- }
140
- else {
141
- parts.push(join(literalline, normalizeQuotes(child.value, quote).split("\n")));
142
- }
143
- }, "parts");
144
- parts.push(quote);
145
- // If we're inside of an assoc_new node as the key, then it will handle
146
- // printing the : on its own since it could change sides.
147
- const parentNode = path.getParentNode();
148
- if (parentNode.type !== "assoc" || parentNode.key !== node) {
149
- parts.unshift(":");
150
- }
151
- return parts;
152
- };
153
- exports.printDynaSymbol = printDynaSymbol;
154
- const printStringConcat = (path, opts, print) => {
155
- return group([
156
- path.call(print, "left"),
157
- " \\",
158
- indent([hardline, path.call(print, "right")])
159
- ]);
160
- };
161
- exports.printStringConcat = printStringConcat;
162
- // Prints out an interpolated variable in the string by converting it into an
163
- // embedded expression.
164
- const printStringDVar = (path, opts, print) => ["#{", path.call(print, "var"), "}"];
165
- exports.printStringDVar = printStringDVar;
166
- const printStringEmbExpr = (path, opts, print) => {
167
- const node = path.getValue();
168
- const doc = path.call(print, "stmts");
169
- // If the contents of this embedded expression were originally on the same
170
- // line in the source, then we're going to leave them in place and assume
171
- // that's the way the developer wanted this expression represented.
172
- if ((0, location_1.getStartLine)(node.loc) === (0, location_1.getEndLine)(node.loc)) {
173
- return ["#{", removeLines(doc), "}"];
174
- }
175
- return group(["#{", indent([softline, doc]), [softline, "}"]]);
176
- };
177
- exports.printStringEmbExpr = printStringEmbExpr;
178
- // Prints out a literal string. This function does its best to respect the
179
- // wishes of the user with regards to single versus double quotes, but if the
180
- // string contains any escape expressions then it will just keep the original
181
- // quotes.
182
- const printStringLiteral = (path, { rubySingleQuote }, print) => {
183
- const node = path.getValue();
184
- // If the string is empty, it will not have any parts, so just print out the
185
- // quotes corresponding to the config
186
- if (node.parts.length === 0) {
187
- return rubySingleQuote ? "''" : '""';
188
- }
189
- // Determine the quote that should enclose the new string
190
- let quote;
191
- if (isQuoteLocked(node)) {
192
- quote = node.quote;
193
- }
194
- else {
195
- quote = rubySingleQuote && isSingleQuotable(node) ? "'" : '"';
196
- }
197
- const parts = path.map((partPath) => {
198
- const part = partPath.getValue();
199
- // In this case, the part of the string is an embedded expression
200
- if (part.type !== "tstring_content") {
201
- return print(partPath);
202
- }
203
- // In this case, the part of the string is just regular string content
204
- return join(literalline, normalizeQuotes(part.value, quote).split("\n"));
205
- }, "parts");
206
- return [quote, ...parts, getClosingQuote(quote)];
207
- };
208
- exports.printStringLiteral = printStringLiteral;
209
- // Prints out a symbol literal. Its child will always be the ident that
210
- // represents the string content of the symbol.
211
- const printSymbolLiteral = (path, opts, print) => {
212
- return [":", path.call(print, "value")];
213
- };
214
- exports.printSymbolLiteral = printSymbolLiteral;
215
- // Prints out an xstring literal. Its child is an array of string parts,
216
- // including plain string content and interpolated content.
217
- const printXStringLiteral = (path, opts, print) => {
218
- return ["`", ...path.map(print, "parts"), "`"];
219
- };
220
- exports.printXStringLiteral = printXStringLiteral;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.printZSuper = exports.printSuper = void 0;
7
- const prettier_1 = __importDefault(require("../../prettier"));
8
- const { align, group, join, line } = prettier_1.default;
9
- const printSuper = (path, opts, print) => {
10
- const { args } = path.getValue();
11
- if (args.type === "arg_paren") {
12
- // In case there are explicitly no arguments but they are using parens,
13
- // we assume they are attempting to override a parent method and pass no
14
- // arguments up.
15
- return args.args === null ? "super()" : ["super", path.call(print, "args")];
16
- }
17
- const keyword = "super ";
18
- return group([
19
- keyword,
20
- align(keyword.length, group(join([",", line], path.call(print, "args"))))
21
- ]);
22
- };
23
- exports.printSuper = printSuper;
24
- // Version of super without any parens or args.
25
- const printZSuper = (path) => path.getValue().value;
26
- exports.printZSuper = printZSuper;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.printUndef = void 0;
7
- const prettier_1 = __importDefault(require("../../prettier"));
8
- const { addTrailingComment, align, group, join, line } = prettier_1.default;
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");
28
- const keyword = "undef ";
29
- return group([keyword, align(keyword.length, join([",", line], symsDocs))]);
30
- };
31
- exports.printUndef = printUndef;
data/dist/ruby/nodes.js DELETED
@@ -1,177 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const alias_1 = require("./nodes/alias");
4
- const aref_1 = require("./nodes/aref");
5
- const args_1 = require("./nodes/args");
6
- const arrays_1 = require("./nodes/arrays");
7
- const assign_1 = require("./nodes/assign");
8
- const blocks_1 = require("./nodes/blocks");
9
- const calls_1 = require("./nodes/calls");
10
- const case_1 = require("./nodes/case");
11
- const class_1 = require("./nodes/class");
12
- const commands_1 = require("./nodes/commands");
13
- const conditionals_1 = require("./nodes/conditionals");
14
- const constants_1 = require("./nodes/constants");
15
- const flow_1 = require("./nodes/flow");
16
- const hashes_1 = require("./nodes/hashes");
17
- const heredocs_1 = require("./nodes/heredocs");
18
- const hooks_1 = require("./nodes/hooks");
19
- const ints_1 = require("./nodes/ints");
20
- const lambdas_1 = require("./nodes/lambdas");
21
- const loops_1 = require("./nodes/loops");
22
- const massign_1 = require("./nodes/massign");
23
- const methods_1 = require("./nodes/methods");
24
- const operators_1 = require("./nodes/operators");
25
- const params_1 = require("./nodes/params");
26
- const patterns_1 = require("./nodes/patterns");
27
- const regexp_1 = require("./nodes/regexp");
28
- const rescue_1 = require("./nodes/rescue");
29
- const return_1 = require("./nodes/return");
30
- const statements_1 = require("./nodes/statements");
31
- const strings_1 = require("./nodes/strings");
32
- const super_1 = require("./nodes/super");
33
- const undef_1 = require("./nodes/undef");
34
- const printToken = (path) => path.getValue().value;
35
- const printVoidStmt = () => "";
36
- const nodes = {
37
- BEGIN: hooks_1.printBEGIN,
38
- CHAR: strings_1.printChar,
39
- END: hooks_1.printEND,
40
- __end__: statements_1.printEndContent,
41
- access_ctrl: methods_1.printAccessControl,
42
- alias: alias_1.printAlias,
43
- aref: aref_1.printAref,
44
- aref_field: aref_1.printArefField,
45
- arg_paren: args_1.printArgParen,
46
- args: args_1.printArgs,
47
- args_add_block: args_1.printArgsAddBlock,
48
- args_forward: params_1.printArgsForward,
49
- arg_star: args_1.printArgStar,
50
- array: arrays_1.printArray,
51
- aryptn: patterns_1.printAryPtn,
52
- assign: assign_1.printAssign,
53
- assoc: hashes_1.printAssoc,
54
- assoc_splat: hashes_1.printAssocSplat,
55
- assoclist_from_args: hashes_1.printHashContents,
56
- backref: printToken,
57
- backtick: printToken,
58
- bare_assoc_hash: hashes_1.printHashContents,
59
- begin: rescue_1.printBegin,
60
- binary: operators_1.printBinary,
61
- block_var: blocks_1.printBlockVar,
62
- blockarg: args_1.printBlockArg,
63
- bodystmt: statements_1.printBodyStmt,
64
- brace_block: blocks_1.printBraceBlock,
65
- break: flow_1.printBreak,
66
- call: calls_1.printCall,
67
- case: case_1.printCase,
68
- class: class_1.printClass,
69
- command: commands_1.printCommand,
70
- command_call: commands_1.printCommandCall,
71
- comment: statements_1.printComment,
72
- const: printToken,
73
- const_path_field: constants_1.printConstPath,
74
- const_path_ref: constants_1.printConstPath,
75
- const_ref: constants_1.printConstRef,
76
- cvar: printToken,
77
- def: methods_1.printDef,
78
- def_endless: methods_1.printDefEndless,
79
- defined: constants_1.printDefined,
80
- defs: methods_1.printDef,
81
- do_block: blocks_1.printDoBlock,
82
- dot2: operators_1.printDot2,
83
- dot3: operators_1.printDot3,
84
- dyna_symbol: strings_1.printDynaSymbol,
85
- else: conditionals_1.printElse,
86
- elsif: conditionals_1.printElsif,
87
- embdoc: statements_1.printComment,
88
- ensure: rescue_1.printEnsure,
89
- excessed_comma: params_1.printExcessedComma,
90
- fcall: calls_1.printCallContainer,
91
- field: constants_1.printField,
92
- float: printToken,
93
- fndptn: patterns_1.printFndPtn,
94
- for: loops_1.printFor,
95
- gvar: printToken,
96
- hash: hashes_1.printHash,
97
- heredoc: heredocs_1.printHeredoc,
98
- heredoc_beg: printToken,
99
- hshptn: patterns_1.printHshPtn,
100
- ident: printToken,
101
- if: conditionals_1.printIf,
102
- if_mod: conditionals_1.printIfModifier,
103
- ifop: conditionals_1.printTernary,
104
- imaginary: printToken,
105
- in: patterns_1.printIn,
106
- int: ints_1.printInt,
107
- ivar: printToken,
108
- kw: printToken,
109
- kwrest_param: params_1.printKeywordRestParam,
110
- label: printToken,
111
- lambda: lambdas_1.printLambda,
112
- lbrace: printToken,
113
- lparen: printToken,
114
- massign: massign_1.printMAssign,
115
- method_add_arg: calls_1.printMethodAddArg,
116
- method_add_block: calls_1.printMethodAddBlock,
117
- mlhs: massign_1.printMLHS,
118
- mlhs_paren: massign_1.printMLHSParen,
119
- module: class_1.printModule,
120
- mrhs: massign_1.printMRHS,
121
- mrhs_add_star: massign_1.printMRHSAddStar,
122
- mrhs_new_from_args: massign_1.printMRHSNewFromArgs,
123
- next: flow_1.printNext,
124
- not: operators_1.printNot,
125
- op: printToken,
126
- opassign: assign_1.printOpAssign,
127
- params: params_1.printParams,
128
- paren: statements_1.printParen,
129
- period: printToken,
130
- program: statements_1.printProgram,
131
- qsymbols: arrays_1.printQsymbols,
132
- qwords: arrays_1.printQwords,
133
- rassign: patterns_1.printRAssign,
134
- rational: printToken,
135
- redo: rescue_1.printRedo,
136
- regexp_literal: regexp_1.printRegexpLiteral,
137
- rescue: rescue_1.printRescue,
138
- rescue_ex: rescue_1.printRescueEx,
139
- rescue_mod: rescue_1.printRescueMod,
140
- rest_param: params_1.printRestParam,
141
- retry: rescue_1.printRetry,
142
- return0: return_1.printReturn0,
143
- return: return_1.printReturn,
144
- sclass: class_1.printSClass,
145
- statements: statements_1.printStatements,
146
- string_concat: strings_1.printStringConcat,
147
- string_dvar: strings_1.printStringDVar,
148
- string_embexpr: strings_1.printStringEmbExpr,
149
- string_literal: strings_1.printStringLiteral,
150
- super: super_1.printSuper,
151
- symbol_literal: strings_1.printSymbolLiteral,
152
- symbols: arrays_1.printSymbols,
153
- top_const_field: constants_1.printTopConst,
154
- top_const_ref: constants_1.printTopConst,
155
- tstring_content: printToken,
156
- unary: operators_1.printUnary,
157
- undef: undef_1.printUndef,
158
- unless: conditionals_1.printUnless,
159
- unless_mod: conditionals_1.printUnlessModifier,
160
- until: loops_1.printUntil,
161
- until_mod: loops_1.printUntil,
162
- var_alias: alias_1.printAlias,
163
- var_field: assign_1.printVarField,
164
- var_ref: assign_1.printVarRef,
165
- vcall: calls_1.printCallContainer,
166
- void_stmt: printVoidStmt,
167
- when: case_1.printWhen,
168
- while: loops_1.printWhile,
169
- while_mod: loops_1.printWhile,
170
- word: arrays_1.printWord,
171
- words: arrays_1.printWords,
172
- xstring_literal: strings_1.printXStringLiteral,
173
- yield0: flow_1.printYield0,
174
- yield: flow_1.printYield,
175
- zsuper: super_1.printZSuper
176
- };
177
- exports.default = nodes;