@danielx/civet 0.4.15 → 0.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -99,6 +99,7 @@ Things Kept from CoffeeScript
99
99
  - Multiple `,` separated `case`/`when` expressions
100
100
  - `else` -> `default` in `switch`
101
101
  - Array slices `list[0...2]` -> `list.slice(0, 2)`
102
+ - Slice assignment `numbers[3..6] = [-3, -4, -5, -6]`
102
103
  - Implicit returns
103
104
  - Simplified number method calls `1.toFixed()` -> `1..toFixed()`
104
105
  - JSX 😿
@@ -116,6 +117,7 @@ Things Removed from CoffeeScript
116
117
  - Iteration expression results
117
118
  - Backtick embedded JS (replaced by template literals)
118
119
  - Will likely add later
120
+ - Optional assignment `x?.y = 3` -> `x != null ? x.y = 3 : undefined`
119
121
  - `switch` expressions
120
122
  - `if` expressions
121
123
  - Implicit `var` declarations (in compat mode only)
@@ -123,9 +125,9 @@ Things Removed from CoffeeScript
123
125
  - Braceless inline objects `x = coolStory: true`
124
126
  - Comprensions
125
127
  - `///` Heregexp
126
- - Slice assignment `numbers[3..6] = [-3, -4, -5, -6]` (use `numbers.splice(3, 4, -3, -4, -5, -6)`)
127
128
  - Ranges `[0...10]`
128
129
  - Rest parameter in any assignment position
130
+ - Multiple slice assignment `otherNumbers[0...] = numbers[3..6] = [-3, -4, -5, -6]`
129
131
 
130
132
  Things Changed from CoffeeScript
131
133
  ---
package/dist/browser.js CHANGED
@@ -1201,8 +1201,37 @@ var Civet = (() => {
1201
1201
  var AssignmentExpressionRest$0 = AwaitExpression;
1202
1202
  var AssignmentExpressionRest$1 = YieldExpression;
1203
1203
  var AssignmentExpressionRest$2 = $S($E($S(Async, __)), ArrowFunction);
1204
- var AssignmentExpressionRest$3 = $T($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function(value) {
1205
- return { "type": "AssignmentExpression", "children": value };
1204
+ var AssignmentExpressionRest$3 = $TS($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function($skip, $loc, $0, $1, $2) {
1205
+ const lastAssignment = $1[$1.length - 1];
1206
+ if (lastAssignment[3].token === "=") {
1207
+ const lhs = lastAssignment[1];
1208
+ if (Array.isArray(lhs) && lhs.length > 1) {
1209
+ const props = lhs[lhs.length - 1];
1210
+ if (Array.isArray(props)) {
1211
+ const lastProp = props[props.length - 1];
1212
+ if (lastProp.type === "SliceExpression") {
1213
+ const { start, end, children: c } = lastProp;
1214
+ c[0].token = ".splice(";
1215
+ c[1] = start;
1216
+ c[2] = ", ";
1217
+ if (end)
1218
+ c[3] = [end, " - ", start];
1219
+ else
1220
+ c[3] = ["1/0"];
1221
+ c[4] = [", ...", $2];
1222
+ c[5] = ")";
1223
+ lastAssignment.pop();
1224
+ if (module.isWhitespaceOrEmpty(lastAssignment[2]))
1225
+ lastAssignment.pop();
1226
+ return $1;
1227
+ }
1228
+ }
1229
+ }
1230
+ }
1231
+ return {
1232
+ type: "AssignmentExpression",
1233
+ children: $0
1234
+ };
1206
1235
  });
1207
1236
  var AssignmentExpressionRest$4 = ConditionalExpression;
1208
1237
  function AssignmentExpressionRest(state) {
@@ -1547,7 +1576,11 @@ var Civet = (() => {
1547
1576
  return MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state);
1548
1577
  }
1549
1578
  }
1550
- var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), MemberBracketContent);
1579
+ var MemberExpressionRest$0 = $TS($S($E($C(OptionalShorthand, NonNullAssertion)), MemberBracketContent), function($skip, $loc, $0, $1, $2) {
1580
+ if ($1)
1581
+ return $0;
1582
+ return $2;
1583
+ });
1551
1584
  var MemberExpressionRest$1 = $S($E($S($Y(EOS), IndentedFurther)), PropertyAccess);
1552
1585
  var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L12, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1553
1586
  var id = $3;
@@ -1574,17 +1607,23 @@ var Civet = (() => {
1574
1607
  if (!end) {
1575
1608
  return {
1576
1609
  type: "SliceExpression",
1610
+ start: $2,
1611
+ end: void 0,
1577
1612
  children: [$1, $2, $4, $5]
1578
1613
  };
1579
1614
  }
1580
1615
  if (inclusive) {
1581
1616
  return {
1582
1617
  type: "SliceExpression",
1618
+ start: $2,
1619
+ end: ["1 + ", end],
1583
1620
  children: [$1, $2, sep, ["1 + ", end, " || 1/0"], $4, $5]
1584
1621
  };
1585
1622
  }
1586
1623
  return {
1587
1624
  type: "SliceExpression",
1625
+ start: $2,
1626
+ end,
1588
1627
  children: [$1, $2, sep, end, $4, $5]
1589
1628
  };
1590
1629
  }
package/dist/main.js CHANGED
@@ -1200,8 +1200,37 @@ var require_parser = __commonJS({
1200
1200
  var AssignmentExpressionRest$0 = AwaitExpression;
1201
1201
  var AssignmentExpressionRest$1 = YieldExpression;
1202
1202
  var AssignmentExpressionRest$2 = $S($E($S(Async, __)), ArrowFunction);
1203
- var AssignmentExpressionRest$3 = $T($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function(value) {
1204
- return { "type": "AssignmentExpression", "children": value };
1203
+ var AssignmentExpressionRest$3 = $TS($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function($skip, $loc, $0, $1, $2) {
1204
+ const lastAssignment = $1[$1.length - 1];
1205
+ if (lastAssignment[3].token === "=") {
1206
+ const lhs = lastAssignment[1];
1207
+ if (Array.isArray(lhs) && lhs.length > 1) {
1208
+ const props = lhs[lhs.length - 1];
1209
+ if (Array.isArray(props)) {
1210
+ const lastProp = props[props.length - 1];
1211
+ if (lastProp.type === "SliceExpression") {
1212
+ const { start, end, children: c } = lastProp;
1213
+ c[0].token = ".splice(";
1214
+ c[1] = start;
1215
+ c[2] = ", ";
1216
+ if (end)
1217
+ c[3] = [end, " - ", start];
1218
+ else
1219
+ c[3] = ["1/0"];
1220
+ c[4] = [", ...", $2];
1221
+ c[5] = ")";
1222
+ lastAssignment.pop();
1223
+ if (module2.isWhitespaceOrEmpty(lastAssignment[2]))
1224
+ lastAssignment.pop();
1225
+ return $1;
1226
+ }
1227
+ }
1228
+ }
1229
+ }
1230
+ return {
1231
+ type: "AssignmentExpression",
1232
+ children: $0
1233
+ };
1205
1234
  });
1206
1235
  var AssignmentExpressionRest$4 = ConditionalExpression;
1207
1236
  function AssignmentExpressionRest(state) {
@@ -1546,7 +1575,11 @@ var require_parser = __commonJS({
1546
1575
  return MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state);
1547
1576
  }
1548
1577
  }
1549
- var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), MemberBracketContent);
1578
+ var MemberExpressionRest$0 = $TS($S($E($C(OptionalShorthand, NonNullAssertion)), MemberBracketContent), function($skip, $loc, $0, $1, $2) {
1579
+ if ($1)
1580
+ return $0;
1581
+ return $2;
1582
+ });
1550
1583
  var MemberExpressionRest$1 = $S($E($S($Y(EOS), IndentedFurther)), PropertyAccess);
1551
1584
  var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L12, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1552
1585
  var id = $3;
@@ -1573,17 +1606,23 @@ var require_parser = __commonJS({
1573
1606
  if (!end) {
1574
1607
  return {
1575
1608
  type: "SliceExpression",
1609
+ start: $2,
1610
+ end: void 0,
1576
1611
  children: [$1, $2, $4, $5]
1577
1612
  };
1578
1613
  }
1579
1614
  if (inclusive) {
1580
1615
  return {
1581
1616
  type: "SliceExpression",
1617
+ start: $2,
1618
+ end: ["1 + ", end],
1582
1619
  children: [$1, $2, sep, ["1 + ", end, " || 1/0"], $4, $5]
1583
1620
  };
1584
1621
  }
1585
1622
  return {
1586
1623
  type: "SliceExpression",
1624
+ start: $2,
1625
+ end,
1587
1626
  children: [$1, $2, sep, end, $4, $5]
1588
1627
  };
1589
1628
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danielx/civet",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "CoffeeScript style syntax for TypeScript",
5
5
  "main": "dist/main.js",
6
6
  "exports": {