babel-schmooze-sprockets 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/bin/console +14 -0
  3. data/bin/export-external-helpers +3 -0
  4. data/bin/setup +6 -0
  5. data/bin/update-npm-deps +8 -0
  6. data/examples/myapp/Gemfile +4 -5
  7. data/examples/myapp/Gemfile.lock +69 -93
  8. data/examples/myapp/app/assets/javascripts/code/hello.es6 +5 -1
  9. data/examples/myapp/app/views/layouts/application.html.erb +1 -0
  10. data/examples/myapp/app/views/site/home.html.erb +0 -1
  11. data/lib/babel-schmooze-sprockets/babel_processor.rb +6 -4
  12. data/lib/babel-schmooze-sprockets/engine.rb +1 -4
  13. data/lib/babel-schmooze-sprockets/version.rb +1 -1
  14. data/node_modules/amdefine/package.json +8 -1
  15. data/node_modules/babel-core/node_modules/babel-runtime/package.json +9 -5
  16. data/node_modules/babel-core/node_modules/babel-traverse/.npmignore +3 -0
  17. data/node_modules/babel-core/node_modules/babel-traverse/README.md +1 -0
  18. data/node_modules/babel-core/node_modules/babel-traverse/lib/cache.js +20 -0
  19. data/node_modules/babel-core/node_modules/babel-traverse/lib/context.js +219 -0
  20. data/node_modules/babel-core/node_modules/babel-traverse/lib/hub.js +19 -0
  21. data/node_modules/babel-core/node_modules/babel-traverse/lib/index.js +250 -0
  22. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/ancestry.js +317 -0
  23. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/comments.js +55 -0
  24. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js +297 -0
  25. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/conversion.js +48 -0
  26. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/evaluation.js +406 -0
  27. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/family.js +168 -0
  28. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/index.js +245 -0
  29. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/index.js +151 -0
  30. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferer-reference.js +225 -0
  31. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferers.js +198 -0
  32. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/introspection.js +518 -0
  33. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/hoister.js +166 -0
  34. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/removal-hooks.js +64 -0
  35. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/virtual-types.js +141 -0
  36. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/modification.js +293 -0
  37. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/removal.js +72 -0
  38. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/replacement.js +302 -0
  39. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/binding.js +105 -0
  40. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/index.js +1222 -0
  41. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/lib/renamer.js +154 -0
  42. data/node_modules/babel-core/node_modules/babel-traverse/lib/visitors.js +360 -0
  43. data/node_modules/babel-core/node_modules/babel-traverse/package.json +107 -0
  44. data/node_modules/babel-core/node_modules/core-js/package.json +20 -2
  45. data/node_modules/babel-core/package.json +31 -24
  46. data/node_modules/babel-generator/lib/buffer.js +69 -70
  47. data/node_modules/babel-generator/lib/generators/base.js +16 -12
  48. data/node_modules/babel-generator/lib/generators/classes.js +28 -19
  49. data/node_modules/babel-generator/lib/generators/expressions.js +76 -99
  50. data/node_modules/babel-generator/lib/generators/flow.js +178 -119
  51. data/node_modules/babel-generator/lib/generators/jsx.js +38 -29
  52. data/node_modules/babel-generator/lib/generators/methods.js +34 -25
  53. data/node_modules/babel-generator/lib/generators/modules.js +67 -40
  54. data/node_modules/babel-generator/lib/generators/statements.js +93 -76
  55. data/node_modules/babel-generator/lib/generators/template-literals.js +12 -11
  56. data/node_modules/babel-generator/lib/generators/types.js +56 -49
  57. data/node_modules/babel-generator/lib/index.js +52 -39
  58. data/node_modules/babel-generator/lib/node/index.js +12 -18
  59. data/node_modules/babel-generator/lib/node/parentheses.js +23 -27
  60. data/node_modules/babel-generator/lib/node/whitespace.js +20 -26
  61. data/node_modules/babel-generator/lib/position.js +5 -5
  62. data/node_modules/babel-generator/lib/printer.js +52 -81
  63. data/node_modules/babel-generator/lib/source-map.js +9 -11
  64. data/node_modules/babel-generator/lib/whitespace.js +13 -13
  65. data/node_modules/babel-generator/node_modules/babel-runtime/package.json +19 -6
  66. data/node_modules/babel-generator/node_modules/babel-types/.npmignore +3 -0
  67. data/node_modules/babel-generator/node_modules/babel-types/README.md +1141 -0
  68. data/node_modules/babel-generator/node_modules/babel-types/lib/constants.js +40 -0
  69. data/node_modules/babel-generator/node_modules/babel-types/lib/converters.js +378 -0
  70. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/core.js +704 -0
  71. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/es2015.js +354 -0
  72. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/experimental.js +85 -0
  73. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/flow.js +319 -0
  74. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/index.js +247 -0
  75. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/init.js +15 -0
  76. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/jsx.js +137 -0
  77. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/misc.js +21 -0
  78. data/node_modules/babel-generator/node_modules/babel-types/lib/flow.js +129 -0
  79. data/node_modules/babel-generator/node_modules/babel-types/lib/index.js +848 -0
  80. data/node_modules/babel-generator/node_modules/babel-types/lib/react.js +83 -0
  81. data/node_modules/babel-generator/node_modules/babel-types/lib/retrievers.js +123 -0
  82. data/node_modules/babel-generator/node_modules/babel-types/lib/validators.js +276 -0
  83. data/node_modules/babel-generator/node_modules/babel-types/package.json +103 -0
  84. data/node_modules/babel-generator/node_modules/core-js/package.json +10 -5
  85. data/node_modules/babel-generator/package.json +19 -16
  86. data/node_modules/babel-helpers/node_modules/babel-runtime/package.json +19 -3
  87. data/node_modules/babel-helpers/node_modules/core-js/package.json +20 -4
  88. data/node_modules/babel-helpers/package.json +8 -1
  89. data/node_modules/babel-register/node_modules/babel-runtime/package.json +19 -3
  90. data/node_modules/babel-register/node_modules/core-js/package.json +20 -4
  91. data/node_modules/babel-register/package.json +8 -1
  92. data/node_modules/balanced-match/package.json +8 -1
  93. data/node_modules/brace-expansion/package.json +19 -12
  94. data/node_modules/concat-map/package.json +9 -2
  95. data/node_modules/convert-source-map/package.json +8 -1
  96. data/node_modules/detect-indent/package.json +8 -1
  97. data/node_modules/get-stdin/package.json +8 -1
  98. data/node_modules/home-or-tmp/package.json +9 -2
  99. data/node_modules/is-finite/package.json +8 -2
  100. data/node_modules/json5/package.json +8 -1
  101. data/node_modules/minimatch/README.md +2 -9
  102. data/node_modules/minimatch/minimatch.js +15 -3
  103. data/node_modules/minimatch/package.json +29 -21
  104. data/node_modules/minimist/package.json +8 -1
  105. data/node_modules/mkdirp/node_modules/minimist/package.json +8 -1
  106. data/node_modules/mkdirp/package.json +8 -1
  107. data/node_modules/number-is-nan/package.json +8 -1
  108. data/node_modules/os-tmpdir/package.json +8 -1
  109. data/node_modules/path-exists/package.json +8 -1
  110. data/node_modules/path-is-absolute/package.json +8 -1
  111. data/node_modules/repeating/package.json +15 -11
  112. data/node_modules/shebang-regex/package.json +8 -1
  113. data/node_modules/slash/package.json +8 -1
  114. data/node_modules/source-map-support/node_modules/source-map/package.json +8 -1
  115. data/node_modules/source-map-support/package.json +8 -1
  116. data/node_modules/source-map/package.json +8 -1
  117. data/node_modules/user-home/package.json +8 -1
  118. data/package.json +1 -1
  119. metadata +54 -6
  120. data/node_modules/brace-expansion/.npmignore +0 -3
  121. data/node_modules/brace-expansion/example.js +0 -8
  122. data/node_modules/minimatch/browser.js +0 -1159
@@ -1,4 +1,4 @@
1
- /*istanbul ignore next*/"use strict";
1
+ "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = undefined;
@@ -8,54 +8,45 @@ var _getIterator2 = require("babel-runtime/core-js/get-iterator");
8
8
  var _getIterator3 = _interopRequireDefault(_getIterator2);
9
9
 
10
10
  exports.WithStatement = WithStatement;
11
- /*istanbul ignore next*/exports.IfStatement = IfStatement;
12
- /*istanbul ignore next*/exports.ForStatement = ForStatement;
13
- /*istanbul ignore next*/exports.WhileStatement = WhileStatement;
14
- /*istanbul ignore next*/exports.DoWhileStatement = DoWhileStatement;
15
- /*istanbul ignore next*/exports.LabeledStatement = LabeledStatement;
16
- /*istanbul ignore next*/exports.TryStatement = TryStatement;
17
- /*istanbul ignore next*/exports.CatchClause = CatchClause;
18
- /*istanbul ignore next*/exports.SwitchStatement = SwitchStatement;
19
- /*istanbul ignore next*/exports.SwitchCase = SwitchCase;
20
- /*istanbul ignore next*/exports.DebuggerStatement = DebuggerStatement;
21
- /*istanbul ignore next*/exports.VariableDeclaration = VariableDeclaration;
22
- /*istanbul ignore next*/exports.VariableDeclarator = VariableDeclarator;
23
-
24
- var /*istanbul ignore next*/_repeat = require("lodash/repeat");
25
-
26
- /*istanbul ignore next*/
27
- var _repeat2 = _interopRequireDefault(_repeat);
28
-
29
- var /*istanbul ignore next*/_babelTypes = require("babel-types");
30
-
31
- /*istanbul ignore next*/
11
+ exports.IfStatement = IfStatement;
12
+ exports.ForStatement = ForStatement;
13
+ exports.WhileStatement = WhileStatement;
14
+ exports.DoWhileStatement = DoWhileStatement;
15
+ exports.LabeledStatement = LabeledStatement;
16
+ exports.TryStatement = TryStatement;
17
+ exports.CatchClause = CatchClause;
18
+ exports.SwitchStatement = SwitchStatement;
19
+ exports.SwitchCase = SwitchCase;
20
+ exports.DebuggerStatement = DebuggerStatement;
21
+ exports.VariableDeclaration = VariableDeclaration;
22
+ exports.VariableDeclarator = VariableDeclarator;
23
+
24
+ var _babelTypes = require("babel-types");
25
+
32
26
  var t = _interopRequireWildcard(_babelTypes);
33
27
 
34
- /*istanbul ignore next*/
35
28
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
36
29
 
37
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
31
 
39
- var NON_ALPHABETIC_UNARY_OPERATORS = t.UPDATE_OPERATORS.concat(t.NUMBER_UNARY_OPERATORS).concat(["!"]);
40
-
41
32
  function WithStatement(node) {
42
33
  this.keyword("with");
43
- this.push("(");
34
+ this.token("(");
44
35
  this.print(node.object, node);
45
- this.push(")");
36
+ this.token(")");
46
37
  this.printBlock(node);
47
38
  }
48
39
 
49
40
  function IfStatement(node) {
50
41
  this.keyword("if");
51
- this.push("(");
42
+ this.token("(");
52
43
  this.print(node.test, node);
53
- this.push(")");
44
+ this.token(")");
54
45
  this.space();
55
46
 
56
47
  var needsBlock = node.alternate && t.isIfStatement(getLastStatement(node.consequent));
57
48
  if (needsBlock) {
58
- this.push("{");
49
+ this.token("{");
59
50
  this.newline();
60
51
  this.indent();
61
52
  }
@@ -65,12 +56,13 @@ function IfStatement(node) {
65
56
  if (needsBlock) {
66
57
  this.dedent();
67
58
  this.newline();
68
- this.push("}");
59
+ this.token("}");
69
60
  }
70
61
 
71
62
  if (node.alternate) {
72
- if (this.isLast("}")) this.space();
73
- this.push("else ");
63
+ if (this.endsWith("}")) this.space();
64
+ this.word("else");
65
+ this.space();
74
66
  this.printAndIndentOnComments(node.alternate, node);
75
67
  }
76
68
  }
@@ -83,72 +75,74 @@ function getLastStatement(statement) {
83
75
 
84
76
  function ForStatement(node) {
85
77
  this.keyword("for");
86
- this.push("(");
78
+ this.token("(");
87
79
 
88
80
  this._inForStatementInitCounter++;
89
81
  this.print(node.init, node);
90
82
  this._inForStatementInitCounter--;
91
- this.push(";");
83
+ this.token(";");
92
84
 
93
85
  if (node.test) {
94
86
  this.space();
95
87
  this.print(node.test, node);
96
88
  }
97
- this.push(";");
89
+ this.token(";");
98
90
 
99
91
  if (node.update) {
100
92
  this.space();
101
93
  this.print(node.update, node);
102
94
  }
103
95
 
104
- this.push(")");
96
+ this.token(")");
105
97
  this.printBlock(node);
106
98
  }
107
99
 
108
100
  function WhileStatement(node) {
109
101
  this.keyword("while");
110
- this.push("(");
102
+ this.token("(");
111
103
  this.print(node.test, node);
112
- this.push(")");
104
+ this.token(")");
113
105
  this.printBlock(node);
114
106
  }
115
107
 
116
108
  var buildForXStatement = function buildForXStatement(op) {
117
109
  return function (node) {
118
110
  this.keyword("for");
119
- this.push("(");
111
+ this.token("(");
120
112
  this.print(node.left, node);
121
- this.push( /*istanbul ignore next*/" " + op + " ");
113
+ this.space();
114
+ this.word(op);
115
+ this.space();
122
116
  this.print(node.right, node);
123
- this.push(")");
117
+ this.token(")");
124
118
  this.printBlock(node);
125
119
  };
126
120
  };
127
121
 
128
- var ForInStatement = /*istanbul ignore next*/exports.ForInStatement = buildForXStatement("in");
129
- var ForOfStatement = /*istanbul ignore next*/exports.ForOfStatement = buildForXStatement("of");
122
+ var ForInStatement = exports.ForInStatement = buildForXStatement("in");
123
+ var ForOfStatement = exports.ForOfStatement = buildForXStatement("of");
130
124
 
131
125
  function DoWhileStatement(node) {
132
- this.push("do ");
126
+ this.word("do");
127
+ this.space();
133
128
  this.print(node.body, node);
134
129
  this.space();
135
130
  this.keyword("while");
136
- this.push("(");
131
+ this.token("(");
137
132
  this.print(node.test, node);
138
- this.push(");");
133
+ this.token(")");
134
+ this.semicolon();
139
135
  }
140
136
 
141
137
  function buildLabelStatement(prefix) {
142
- /*istanbul ignore next*/var key = arguments.length <= 1 || arguments[1] === undefined ? "label" : arguments[1];
138
+ var key = arguments.length <= 1 || arguments[1] === undefined ? "label" : arguments[1];
143
139
 
144
140
  return function (node) {
145
- this.push(prefix);
141
+ this.word(prefix);
146
142
 
147
143
  var label = node[key];
148
144
  if (label) {
149
- if (!(this.format.minified && (t.isUnaryExpression(label, { prefix: true }) || t.isUpdateExpression(label, { prefix: true })) && NON_ALPHABETIC_UNARY_OPERATORS.indexOf(label.operator) > -1)) {
150
- this.push(" ");
151
- }
145
+ this.space();
152
146
 
153
147
  var terminatorState = this.startTerminatorless();
154
148
  this.print(label, node);
@@ -159,14 +153,15 @@ function buildLabelStatement(prefix) {
159
153
  };
160
154
  }
161
155
 
162
- var ContinueStatement = /*istanbul ignore next*/exports.ContinueStatement = buildLabelStatement("continue");
163
- var ReturnStatement = /*istanbul ignore next*/exports.ReturnStatement = buildLabelStatement("return", "argument");
164
- var BreakStatement = /*istanbul ignore next*/exports.BreakStatement = buildLabelStatement("break");
165
- var ThrowStatement = /*istanbul ignore next*/exports.ThrowStatement = buildLabelStatement("throw", "argument");
156
+ var ContinueStatement = exports.ContinueStatement = buildLabelStatement("continue");
157
+ var ReturnStatement = exports.ReturnStatement = buildLabelStatement("return", "argument");
158
+ var BreakStatement = exports.BreakStatement = buildLabelStatement("break");
159
+ var ThrowStatement = exports.ThrowStatement = buildLabelStatement("throw", "argument");
166
160
 
167
161
  function LabeledStatement(node) {
168
162
  this.print(node.label, node);
169
- this.push(": ");
163
+ this.token(":");
164
+ this.space();
170
165
  this.print(node.body, node);
171
166
  }
172
167
 
@@ -186,45 +181,48 @@ function TryStatement(node) {
186
181
 
187
182
  if (node.finalizer) {
188
183
  this.space();
189
- this.push("finally ");
184
+ this.word("finally");
185
+ this.space();
190
186
  this.print(node.finalizer, node);
191
187
  }
192
188
  }
193
189
 
194
190
  function CatchClause(node) {
195
191
  this.keyword("catch");
196
- this.push("(");
192
+ this.token("(");
197
193
  this.print(node.param, node);
198
- this.push(")");
194
+ this.token(")");
199
195
  this.space();
200
196
  this.print(node.body, node);
201
197
  }
202
198
 
203
199
  function SwitchStatement(node) {
204
200
  this.keyword("switch");
205
- this.push("(");
201
+ this.token("(");
206
202
  this.print(node.discriminant, node);
207
- this.push(")");
203
+ this.token(")");
208
204
  this.space();
209
- this.push("{");
205
+ this.token("{");
210
206
 
211
207
  this.printSequence(node.cases, node, {
212
208
  indent: true,
213
- /*istanbul ignore next*/addNewlines: function addNewlines(leading, cas) {
209
+ addNewlines: function addNewlines(leading, cas) {
214
210
  if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
215
211
  }
216
212
  });
217
213
 
218
- this.push("}");
214
+ this.token("}");
219
215
  }
220
216
 
221
217
  function SwitchCase(node) {
222
218
  if (node.test) {
223
- this.push("case ");
219
+ this.word("case");
220
+ this.space();
224
221
  this.print(node.test, node);
225
- this.push(":");
222
+ this.token(":");
226
223
  } else {
227
- this.push("default:");
224
+ this.word("default");
225
+ this.token(":");
228
226
  }
229
227
 
230
228
  if (node.consequent.length) {
@@ -234,17 +232,36 @@ function SwitchCase(node) {
234
232
  }
235
233
 
236
234
  function DebuggerStatement() {
237
- this.push("debugger;");
235
+ this.word("debugger");
236
+ this.semicolon();
237
+ }
238
+
239
+ function variableDeclarationIdent() {
240
+ // "let " or "var " indentation.
241
+ this.token(",");
242
+ this.push("\n");
243
+ for (var i = 0; i < 4; i++) {
244
+ this.push(" ");
245
+ }
246
+ }
247
+
248
+ function constDeclarationIdent() {
249
+ // "const " indentation.
250
+ this.token(",");
251
+ this.push("\n");
252
+ for (var i = 0; i < 6; i++) {
253
+ this.push(" ");
254
+ }
238
255
  }
239
256
 
240
257
  function VariableDeclaration(node, parent) {
241
- this.push(node.kind + " ");
258
+ this.word(node.kind);
259
+ this.space();
242
260
 
243
261
  var hasInits = false;
244
262
  // don't add whitespace to loop heads
245
263
  if (!t.isFor(parent)) {
246
- for ( /*istanbul ignore next*/var _iterator = node.declarations, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
247
- /*istanbul ignore next*/
264
+ for (var _iterator = node.declarations, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
248
265
  var _ref;
249
266
 
250
267
  if (_isArray) {
@@ -277,14 +294,14 @@ function VariableDeclaration(node, parent) {
277
294
  // bar = "foo";
278
295
  //
279
296
 
280
- var sep = /*istanbul ignore next*/void 0;
297
+ var separator = void 0;
281
298
  if (!this.format.compact && !this.format.concise && hasInits && !this.format.retainLines) {
282
- sep = /*istanbul ignore next*/",\n" + /*istanbul ignore next*/(0, _repeat2.default)(" ", node.kind.length + 1);
299
+ separator = node.kind === "const" ? constDeclarationIdent : variableDeclarationIdent;
283
300
  }
284
301
 
285
302
  //
286
303
 
287
- this.printList(node.declarations, node, { separator: sep });
304
+ this.printList(node.declarations, node, { separator: separator });
288
305
 
289
306
  if (t.isFor(parent)) {
290
307
  // don't give semicolons to these nodes since they'll be inserted in the parent generator
@@ -299,7 +316,7 @@ function VariableDeclarator(node) {
299
316
  this.print(node.id.typeAnnotation, node);
300
317
  if (node.init) {
301
318
  this.space();
302
- this.push("=");
319
+ this.token("=");
303
320
  this.space();
304
321
  this.print(node.init, node);
305
322
  }
@@ -1,32 +1,33 @@
1
- /*istanbul ignore next*/"use strict";
1
+ "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.TaggedTemplateExpression = TaggedTemplateExpression;
5
- /*istanbul ignore next*/exports.TemplateElement = TemplateElement;
6
- /*istanbul ignore next*/exports.TemplateLiteral = TemplateLiteral;
5
+ exports.TemplateElement = TemplateElement;
6
+ exports.TemplateLiteral = TemplateLiteral;
7
7
  function TaggedTemplateExpression(node) {
8
8
  this.print(node.tag, node);
9
9
  this.print(node.quasi, node);
10
10
  }
11
11
 
12
- function TemplateElement(node) {
13
- this._push(node.value.raw);
12
+ function TemplateElement(node, parent) {
13
+ var isFirst = parent.quasis[0] === node;
14
+ var isLast = parent.quasis[parent.quasis.length - 1] === node;
15
+
16
+ var value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${");
17
+
18
+ if (!isFirst) this.space();
19
+ this.token(value);
20
+ if (!isLast) this.space();
14
21
  }
15
22
 
16
23
  function TemplateLiteral(node) {
17
- this.push("`");
18
-
19
24
  var quasis = node.quasis;
20
25
 
21
26
  for (var i = 0; i < quasis.length; i++) {
22
27
  this.print(quasis[i], node);
23
28
 
24
29
  if (i + 1 < quasis.length) {
25
- this._push("${ ");
26
30
  this.print(node.expressions[i], node);
27
- this.push(" }");
28
31
  }
29
32
  }
30
-
31
- this._push("`");
32
33
  }
@@ -1,4 +1,4 @@
1
- /*istanbul ignore next*/"use strict";
1
+ "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.ArrayPattern = exports.ObjectPattern = exports.RestProperty = exports.SpreadProperty = exports.SpreadElement = undefined;
@@ -8,24 +8,21 @@ var _stringify = require("babel-runtime/core-js/json/stringify");
8
8
  var _stringify2 = _interopRequireDefault(_stringify);
9
9
 
10
10
  exports.Identifier = Identifier;
11
- /*istanbul ignore next*/exports.RestElement = RestElement;
12
- /*istanbul ignore next*/exports.ObjectExpression = ObjectExpression;
13
- /*istanbul ignore next*/exports.ObjectMethod = ObjectMethod;
14
- /*istanbul ignore next*/exports.ObjectProperty = ObjectProperty;
15
- /*istanbul ignore next*/exports.ArrayExpression = ArrayExpression;
16
- /*istanbul ignore next*/exports.RegExpLiteral = RegExpLiteral;
17
- /*istanbul ignore next*/exports.BooleanLiteral = BooleanLiteral;
18
- /*istanbul ignore next*/exports.NullLiteral = NullLiteral;
19
- /*istanbul ignore next*/exports.NumericLiteral = NumericLiteral;
20
- /*istanbul ignore next*/exports.StringLiteral = StringLiteral;
21
- /*istanbul ignore next*/exports._stringLiteral = _stringLiteral;
22
-
23
- var /*istanbul ignore next*/_babelTypes = require("babel-types");
24
-
25
- /*istanbul ignore next*/
11
+ exports.RestElement = RestElement;
12
+ exports.ObjectExpression = ObjectExpression;
13
+ exports.ObjectMethod = ObjectMethod;
14
+ exports.ObjectProperty = ObjectProperty;
15
+ exports.ArrayExpression = ArrayExpression;
16
+ exports.RegExpLiteral = RegExpLiteral;
17
+ exports.BooleanLiteral = BooleanLiteral;
18
+ exports.NullLiteral = NullLiteral;
19
+ exports.NumericLiteral = NumericLiteral;
20
+ exports.StringLiteral = StringLiteral;
21
+
22
+ var _babelTypes = require("babel-types");
23
+
26
24
  var t = _interopRequireWildcard(_babelTypes);
27
25
 
28
- /*istanbul ignore next*/
29
26
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
30
27
 
31
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -35,28 +32,30 @@ function Identifier(node) {
35
32
  // This is a terrible hack, but changing type annotations to use a new,
36
33
  // dedicated node would be a breaking change. This should be cleaned up in
37
34
  // the next major.
38
- if (node.variance === "plus") {
39
- this.push("+");
40
- } else if (node.variance === "minus") {
41
- this.push("-");
35
+ if (node.variance) {
36
+ if (node.variance === "plus") {
37
+ this.token("+");
38
+ } else if (node.variance === "minus") {
39
+ this.token("-");
40
+ }
42
41
  }
43
42
 
44
- this.push(node.name);
43
+ this.word(node.name);
45
44
  } /* eslint max-len: 0 */
46
45
  /* eslint quotes: 0 */
47
46
 
48
47
  function RestElement(node) {
49
- this.push("...");
48
+ this.token("...");
50
49
  this.print(node.argument, node);
51
50
  }
52
51
 
53
- /*istanbul ignore next*/exports.SpreadElement = RestElement;
54
- /*istanbul ignore next*/exports.SpreadProperty = RestElement;
55
- /*istanbul ignore next*/exports.RestProperty = RestElement;
52
+ exports.SpreadElement = RestElement;
53
+ exports.SpreadProperty = RestElement;
54
+ exports.RestProperty = RestElement;
56
55
  function ObjectExpression(node) {
57
56
  var props = node.properties;
58
57
 
59
- this.push("{");
58
+ this.token("{");
60
59
  this.printInnerComments(node);
61
60
 
62
61
  if (props.length) {
@@ -65,22 +64,22 @@ function ObjectExpression(node) {
65
64
  this.space();
66
65
  }
67
66
 
68
- this.push("}");
67
+ this.token("}");
69
68
  }
70
69
 
71
- /*istanbul ignore next*/exports.ObjectPattern = ObjectExpression;
70
+ exports.ObjectPattern = ObjectExpression;
72
71
  function ObjectMethod(node) {
73
- this.printJoin(node.decorators, node, { separator: "" });
72
+ this.printJoin(node.decorators, node);
74
73
  this._method(node);
75
74
  }
76
75
 
77
76
  function ObjectProperty(node) {
78
- this.printJoin(node.decorators, node, { separator: "" });
77
+ this.printJoin(node.decorators, node);
79
78
 
80
79
  if (node.computed) {
81
- this.push("[");
80
+ this.token("[");
82
81
  this.print(node.key, node);
83
- this.push("]");
82
+ this.token("]");
84
83
  } else {
85
84
  // print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`
86
85
  if (t.isAssignmentPattern(node.value) && t.isIdentifier(node.key) && node.key.name === node.value.left.name) {
@@ -96,7 +95,7 @@ function ObjectProperty(node) {
96
95
  }
97
96
  }
98
97
 
99
- this.push(":");
98
+ this.token(":");
100
99
  this.space();
101
100
  this.print(node.value, node);
102
101
  }
@@ -105,7 +104,7 @@ function ArrayExpression(node) {
105
104
  var elems = node.elements;
106
105
  var len = elems.length;
107
106
 
108
- this.push("[");
107
+ this.token("[");
109
108
  this.printInnerComments(node);
110
109
 
111
110
  for (var i = 0; i < elems.length; i++) {
@@ -113,43 +112,51 @@ function ArrayExpression(node) {
113
112
  if (elem) {
114
113
  if (i > 0) this.space();
115
114
  this.print(elem, node);
116
- if (i < len - 1) this.push(",");
115
+ if (i < len - 1) this.token(",");
117
116
  } else {
118
117
  // If the array expression ends with a hole, that hole
119
118
  // will be ignored by the interpreter, but if it ends with
120
119
  // two (or more) holes, we need to write out two (or more)
121
120
  // commas so that the resulting code is interpreted with
122
121
  // both (all) of the holes.
123
- this.push(",");
122
+ this.token(",");
124
123
  }
125
124
  }
126
125
 
127
- this.push("]");
126
+ this.token("]");
128
127
  }
129
128
 
130
- /*istanbul ignore next*/exports.ArrayPattern = ArrayExpression;
129
+ exports.ArrayPattern = ArrayExpression;
131
130
  function RegExpLiteral(node) {
132
- this.push( /*istanbul ignore next*/"/" + node.pattern + "/" + node.flags);
131
+ this.word("/" + node.pattern + "/" + node.flags);
133
132
  }
134
133
 
135
134
  function BooleanLiteral(node) {
136
- this.push(node.value ? "true" : "false");
135
+ this.word(node.value ? "true" : "false");
137
136
  }
138
137
 
139
138
  function NullLiteral() {
140
- this.push("null");
139
+ this.word("null");
141
140
  }
142
141
 
143
142
  function NumericLiteral(node) {
144
- this.push(node.value + "");
143
+ var raw = this.getPossibleRaw(node);
144
+ if (raw != null) {
145
+ this.word(raw);
146
+ return;
147
+ }
148
+
149
+ this.word(node.value + "");
145
150
  }
146
151
 
147
152
  function StringLiteral(node, parent) {
148
- this.push(this._stringLiteral(node.value, parent));
149
- }
153
+ var raw = this.getPossibleRaw(node);
154
+ if (raw != null) {
155
+ this.token(raw);
156
+ return;
157
+ }
150
158
 
151
- function _stringLiteral(val, parent) {
152
- val = /*istanbul ignore next*/(0, _stringify2.default)(val);
159
+ var val = (0, _stringify2.default)(node.value);
153
160
 
154
161
  // escape illegal js but valid json unicode characters
155
162
  val = val.replace(/[\u000A\u000D\u2028\u2029]/g, function (c) {
@@ -167,8 +174,8 @@ function _stringLiteral(val, parent) {
167
174
  val = val.replace(/'/g, "\\'");
168
175
 
169
176
  // add single quotes
170
- val = /*istanbul ignore next*/"'" + val + "'";
177
+ val = "'" + val + "'";
171
178
  }
172
179
 
173
- return val;
180
+ return this.token(val);
174
181
  }