goldstein 4.1.2 → 4.2.0

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/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ 2023.10.03, v4.2.0
2
+
3
+ feature:
4
+ - e5fb5c9 goldstein: printer: add ability to print goldstein: try
5
+
1
6
  2023.09.18, v4.1.2
2
7
 
3
8
  feature:
package/README.md CHANGED
@@ -51,10 +51,6 @@ const a = () => throw 'hello';
51
51
  if a > 2 {
52
52
  log('hello');
53
53
  }
54
-
55
- fn hello() {
56
- console.log('hello');
57
- }
58
54
  ```
59
55
 
60
56
  Will give us:
package/build/parser.cjs CHANGED
@@ -5498,11 +5498,21 @@ function keywordTry(Parser3) {
5498
5498
  arguments: [
5499
5499
  expression.callee,
5500
5500
  ...expression.arguments
5501
- ]
5501
+ ],
5502
+ goldstein: createGoldsteinNode({
5503
+ await: false,
5504
+ callee: expression.callee,
5505
+ arguments: expression.arguments
5506
+ })
5502
5507
  };
5503
5508
  else if (isAwaitExpression(expression))
5504
5509
  node.expression = {
5505
5510
  type: "AwaitExpression",
5511
+ goldstein: createGoldsteinNode({
5512
+ await: true,
5513
+ callee: expression.argument.callee,
5514
+ arguments: expression.argument.arguments
5515
+ }),
5506
5516
  argument: {
5507
5517
  type: "CallExpression",
5508
5518
  callee: {
@@ -5546,6 +5556,18 @@ function keywordTry(Parser3) {
5546
5556
  }
5547
5557
  };
5548
5558
  }
5559
+ function createGoldsteinNode(args) {
5560
+ return {
5561
+ type: "TryStatement",
5562
+ expression: true,
5563
+ await: args.await,
5564
+ argument: {
5565
+ type: "CallExpression",
5566
+ callee: args.callee,
5567
+ arguments: args.arguments
5568
+ }
5569
+ };
5570
+ }
5549
5571
 
5550
5572
  // packages/keyword-should/index.js
5551
5573
  var import_putout2 = require("putout");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goldstein",
3
- "version": "4.1.2",
3
+ "version": "4.2.0",
4
4
  "type": "module",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "JavaScript with no limits",
@@ -43,10 +43,20 @@ export default function keywordTry(Parser) {
43
43
  expression.callee,
44
44
  ...expression.arguments,
45
45
  ],
46
+ goldstein: createGoldsteinNode({
47
+ await: false,
48
+ callee: expression.callee,
49
+ arguments: expression.arguments,
50
+ }),
46
51
  };
47
52
  else if (isAwaitExpression(expression))
48
53
  node.expression = {
49
54
  type: 'AwaitExpression',
55
+ goldstein: createGoldsteinNode({
56
+ await: true,
57
+ callee: expression.argument.callee,
58
+ arguments: expression.argument.arguments,
59
+ }),
50
60
  argument: {
51
61
  type: 'CallExpression',
52
62
  callee: {
@@ -100,3 +110,15 @@ export default function keywordTry(Parser) {
100
110
  };
101
111
  }
102
112
 
113
+ function createGoldsteinNode(args) {
114
+ return {
115
+ type: 'TryStatement',
116
+ expression: true,
117
+ await: args.await,
118
+ argument: {
119
+ type: 'CallExpression',
120
+ callee: args.callee,
121
+ arguments: args.arguments,
122
+ },
123
+ };
124
+ }
@@ -0,0 +1,18 @@
1
+ import {print as printJS} from '@putout/printer';
2
+
3
+ import {AwaitExpression} from './visitors/await-expression.js';
4
+ import {CallExpression} from './visitors/call-expression.js';
5
+ import {TryStatement} from './visitors/try-statement.js';
6
+ import {fixEmpty} from '../goldstein/index.js';
7
+
8
+ export const print = (ast) => {
9
+ const code = printJS(ast, {
10
+ visitors: {
11
+ CallExpression,
12
+ TryStatement,
13
+ AwaitExpression,
14
+ },
15
+ });
16
+
17
+ return fixEmpty(code);
18
+ };
@@ -0,0 +1,10 @@
1
+ import {visitors as v} from '@putout/printer';
2
+
3
+ export const AwaitExpression = (path, printer, semantics) => {
4
+ const {print} = printer;
5
+
6
+ if (!path.node.goldstein)
7
+ return v.AwaitExpression(path, printer, semantics);
8
+
9
+ print('__goldstein');
10
+ };
@@ -0,0 +1,10 @@
1
+ import {visitors as v} from '@putout/printer';
2
+
3
+ export const CallExpression = (path, printer, semantics) => {
4
+ const {print} = printer;
5
+
6
+ if (!path.node.goldstein)
7
+ return v.CallExpression(path, printer, semantics);
8
+
9
+ print('__goldstein');
10
+ };
@@ -0,0 +1,12 @@
1
+ import {visitors as v} from '@putout/printer';
2
+ export const TryStatement = (path, printer, semantics) => {
3
+ const {maybe, print} = printer;
4
+ const {node} = path;
5
+
6
+ if (!node.expression)
7
+ return v.TryStatement(path, printer, semantics);
8
+
9
+ print('try ');
10
+ maybe.print(node.await, 'await ');
11
+ print('__argument');
12
+ };