@mojir/lits 2.1.34 → 2.1.36

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.
@@ -13915,9 +13915,6 @@ var Parser = /** @class */ (function () {
13915
13915
  case 'doseq':
13916
13916
  left = this.parseForOrDoseq(firstToken);
13917
13917
  break;
13918
- // cas:
13919
- // left = this.parseDo(firstToken)
13920
- // break
13921
13918
  case 'loop':
13922
13919
  left = this.parseLoop(firstToken);
13923
13920
  break;
@@ -14119,6 +14116,12 @@ var Parser = /** @class */ (function () {
14119
14116
  params.push(withSourceCodeInfo([NodeTypes.String, value], token[2]));
14120
14117
  this.advance();
14121
14118
  }
14119
+ else if (isLBracketToken(token)) {
14120
+ this.advance();
14121
+ params.push(this.parseExpression());
14122
+ assertRBracketToken(this.peek());
14123
+ this.advance();
14124
+ }
14122
14125
  else {
14123
14126
  throw new LitsError('Expected key to be a symbol or a string', this.peekSourceCodeInfo());
14124
14127
  }
@@ -14249,9 +14252,17 @@ var Parser = /** @class */ (function () {
14249
14252
  var nodes = void 0;
14250
14253
  var docString = '';
14251
14254
  if (isLBraceToken(this.peek())) {
14252
- var parsedBlock = this.parseBlock(true);
14253
- docString = parsedBlock[1];
14254
- nodes = parsedBlock[0][1][1];
14255
+ var positionBefore = this.parseState.position;
14256
+ try {
14257
+ var objectNode = this.parseObject();
14258
+ nodes = [objectNode];
14259
+ }
14260
+ catch (_a) {
14261
+ this.parseState.position = positionBefore;
14262
+ var parsedBlock = this.parseBlock(true);
14263
+ docString = parsedBlock[1];
14264
+ nodes = parsedBlock[0][1][1];
14265
+ }
14255
14266
  }
14256
14267
  else {
14257
14268
  nodes = [this.parseExpression()];
@@ -14268,7 +14279,7 @@ var Parser = /** @class */ (function () {
14268
14279
  ],
14269
14280
  ], firstToken[2]);
14270
14281
  }
14271
- catch (_a) {
14282
+ catch (_b) {
14272
14283
  return null;
14273
14284
  }
14274
14285
  };
@@ -14318,9 +14329,17 @@ var Parser = /** @class */ (function () {
14318
14329
  var nodes;
14319
14330
  var docString = '';
14320
14331
  if (isLBraceToken(this.peek())) {
14321
- var parsedBlock = this.parseBlock(true);
14322
- docString = parsedBlock[1];
14323
- nodes = parsedBlock[0][1][1];
14332
+ var positionBefore = this.parseState.position;
14333
+ try {
14334
+ var objectNode = this.parseObject();
14335
+ nodes = [objectNode];
14336
+ }
14337
+ catch (_b) {
14338
+ this.parseState.position = positionBefore;
14339
+ var parsedBlock = this.parseBlock(true);
14340
+ docString = parsedBlock[1];
14341
+ nodes = parsedBlock[0][1][1];
14342
+ }
14324
14343
  }
14325
14344
  else {
14326
14345
  nodes = [this.parseExpression()];
@@ -14518,9 +14537,6 @@ var Parser = /** @class */ (function () {
14518
14537
  throw new LitsError('Expected }', this.peekSourceCodeInfo());
14519
14538
  }
14520
14539
  }
14521
- if (expressions.length === 0) {
14522
- expressions.push(withSourceCodeInfo([NodeTypes.ReservedSymbol, 'null'], token[2]));
14523
- }
14524
14540
  assertRBraceToken(this.peek());
14525
14541
  this.advance();
14526
14542
  return [
@@ -14598,8 +14614,7 @@ var Parser = /** @class */ (function () {
14598
14614
  };
14599
14615
  Parser.prototype.parseTry = function (token) {
14600
14616
  this.advance();
14601
- var tryExpression = this.parseExpression();
14602
- assertReservedSymbolToken(this.peek(), 'catch');
14617
+ var tryExpression = this.parseImplicitBlock(['catch']);
14603
14618
  this.advance();
14604
14619
  var errorSymbol;
14605
14620
  if (isLParenToken(this.peek())) {
@@ -14608,7 +14623,8 @@ var Parser = /** @class */ (function () {
14608
14623
  assertRParenToken(this.peek());
14609
14624
  this.advance();
14610
14625
  }
14611
- var catchExpression = this.parseExpression();
14626
+ var catchExpression = this.parseImplicitBlock(['end']);
14627
+ this.advance();
14612
14628
  return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.try, tryExpression, errorSymbol, catchExpression]], token[2]);
14613
14629
  };
14614
14630
  Parser.prototype.parseForOrDoseq = function (firstToken) {
@@ -15713,7 +15729,7 @@ var assertReference = {
15713
15729
  { argumentNames: ['value', 'message'] },
15714
15730
  ],
15715
15731
  description: 'If $value is falsy it throws `AssertionError` with $message. If no $message is provided, message is set to $value.',
15716
- examples: ['try { assert(0, "Expected a positive value") } catch (e) { e.message }'],
15732
+ examples: ['try assert(0, "Expected a positive value") catch (e) e.message end'],
15717
15733
  noOperatorDocumentation: true,
15718
15734
  },
15719
15735
  'assert!=': {
@@ -15731,10 +15747,10 @@ var assertReference = {
15731
15747
  ],
15732
15748
  description: 'If $a is the same as $b it throws `AssertionError`.',
15733
15749
  examples: [
15734
- 'try { assert!=(0, 0, "Expected different values") } catch (e) { e.message }',
15735
- 'try { assert!=(0, 0) } catch (e) { e.message }',
15736
- 'try { 0 assert!= 0 } catch (e) { e.message }',
15737
- 'try { assert!=(0, 1) } catch (e) { e.message }',
15750
+ 'try assert!=(0, 0, "Expected different values") catch (e) e.message end',
15751
+ 'try assert!=(0, 0) catch (e) e.message end',
15752
+ 'try 0 assert!= 0 catch (e) e.message end',
15753
+ 'try assert!=(0, 1) catch (e) e.message end',
15738
15754
  ],
15739
15755
  noOperatorDocumentation: true,
15740
15756
  },
@@ -15753,9 +15769,9 @@ var assertReference = {
15753
15769
  ],
15754
15770
  description: 'If $a is not structural equal to $b it throws `AssertionError`.',
15755
15771
  examples: [
15756
- 'try { assert=({ "a": 1 }, { "a": 2 }, "Expected equal values") } catch (e) { e.message }',
15757
- 'try { assert=({ "a": 1 }, { "a": 2 }) } catch (e) { e.message }',
15758
- 'try { assert=({ "a": 1 }, { "a": 1 }) } catch (e) { e.message }',
15772
+ 'try assert=({ "a": 1 }, { "a": 2 }, "Expected equal values") catch (e) e.message end',
15773
+ 'try assert=({ "a": 1 }, { "a": 2 }) catch (e) e.message end',
15774
+ 'try assert=({ "a": 1 }, { "a": 1 }) catch (e) e.message end',
15759
15775
  ],
15760
15776
  noOperatorDocumentation: true,
15761
15777
  },
@@ -15774,9 +15790,9 @@ var assertReference = {
15774
15790
  ],
15775
15791
  description: 'If $a is not greater than $b it throws `AssertionError`.',
15776
15792
  examples: [
15777
- 'try { assert-gt(0, 1, "Expected greater value") } catch (e) { e.message }',
15778
- 'try { assert-gt(0, 0) } catch (e) { e.message }',
15779
- 'try { assert-gt(1, 0) } catch (e) { e.message }',
15793
+ 'try assert-gt(0, 1, "Expected greater value") catch (e) e.message end',
15794
+ 'try assert-gt(0, 0) catch (e) e.message end',
15795
+ 'try assert-gt(1, 0) catch (e) e.message end',
15780
15796
  ],
15781
15797
  noOperatorDocumentation: true,
15782
15798
  },
@@ -15795,9 +15811,9 @@ var assertReference = {
15795
15811
  ],
15796
15812
  description: 'If $a is not less than $b it throws `AssertionError`.',
15797
15813
  examples: [
15798
- 'try { assert-lte(1, 0, "Expected smaller value value") } catch (e) { e.message }',
15799
- 'try { assert-lte(1, 1) } catch (e) { e.message }',
15800
- 'try { assert-lte(0, 1) } catch (e) { e.message }',
15814
+ 'try assert-lte(1, 0, "Expected smaller value value") catch (e) e.message end',
15815
+ 'try assert-lte(1, 1) catch (e) e.message end',
15816
+ 'try assert-lte(0, 1) catch (e) e.message end',
15801
15817
  ],
15802
15818
  noOperatorDocumentation: true,
15803
15819
  },
@@ -15816,9 +15832,9 @@ var assertReference = {
15816
15832
  ],
15817
15833
  description: 'If $a is less than $b it throws `AssertionError`.',
15818
15834
  examples: [
15819
- 'try { assert-gte(0, 1, "Expected greater value") } catch (e) { e.message }',
15820
- 'try { assert-gte(0, 1) } catch (e) { e.message }',
15821
- 'try { assert-gte(1, 1) } catch (e) { e.message }',
15835
+ 'try assert-gte(0, 1, "Expected greater value") catch (e) e.message end',
15836
+ 'try assert-gte(0, 1) catch (e) e.message end',
15837
+ 'try assert-gte(1, 1) catch (e) e.message end',
15822
15838
  ],
15823
15839
  noOperatorDocumentation: true,
15824
15840
  },
@@ -15837,9 +15853,9 @@ var assertReference = {
15837
15853
  ],
15838
15854
  description: 'If $a is grater than $b it throws `AssertionError`.',
15839
15855
  examples: [
15840
- 'try { assert-lte(1, 0, "Expected smaller value value") } catch (e) { e.message }',
15841
- 'try { assert-lte(1, 0) } catch (e) { e.message }',
15842
- 'try { assert-lte(1, 1) } catch (e) { e.message }',
15856
+ 'try assert-lte(1, 0, "Expected smaller value value") catch (e) e.message end',
15857
+ 'try assert-lte(1, 0) catch (e) e.message end',
15858
+ 'try assert-lte(1, 1) catch (e) e.message end',
15843
15859
  ],
15844
15860
  noOperatorDocumentation: true,
15845
15861
  },
@@ -15863,9 +15879,9 @@ var assertReference = {
15863
15879
  ],
15864
15880
  description: 'If $value is not `true` it throws `AssertionError`.',
15865
15881
  examples: [
15866
- 'try { assert-true(false, "Expected true") } catch (e) { e.message }',
15867
- 'try { assert-true(false) } catch (e) { e.message }',
15868
- 'try { assert-true(true) } catch (e) { e.message }',
15882
+ 'try assert-true(false, "Expected true") catch (e) e.message end',
15883
+ 'try assert-true(false) catch (e) e.message end',
15884
+ 'try assert-true(true) catch (e) e.message end',
15869
15885
  ],
15870
15886
  noOperatorDocumentation: true,
15871
15887
  },
@@ -15889,9 +15905,9 @@ var assertReference = {
15889
15905
  ],
15890
15906
  description: 'If $value is not `false` it throws `AssertionError`.',
15891
15907
  examples: [
15892
- 'try { assert-false(true, "Expected false") } catch (e) { e.message }',
15893
- 'try { assert-false(true) } catch (e) { e.message }',
15894
- 'try { assert-false(false) } catch (e) { e.message }',
15908
+ 'try assert-false(true, "Expected false") catch (e) e.message end',
15909
+ 'try assert-false(true) catch (e) e.message end',
15910
+ 'try assert-false(false) catch (e) e.message end',
15895
15911
  ],
15896
15912
  noOperatorDocumentation: true,
15897
15913
  },
@@ -15915,16 +15931,16 @@ var assertReference = {
15915
15931
  ],
15916
15932
  description: 'If $value is not `truthy` it throws `AssertionError`.',
15917
15933
  examples: [
15918
- 'try { assert-truthy(false, "Expected truthy") } catch (e) { e.message }',
15919
- 'try { assert-truthy(false) } catch (e) { e.message }',
15920
- 'try { assert-truthy(0) } catch (e) { e.message }',
15921
- 'try { assert-truthy(null) } catch (e) { e.message }',
15922
- 'try { assert-truthy("") } catch (e) { e.message }',
15923
- 'try { assert-truthy(true) } catch (e) { e.message }',
15924
- 'try { assert-truthy(1) } catch (e) { e.message }',
15925
- 'try { assert-truthy("x") } catch (e) { e.message }',
15926
- 'try { assert-truthy([]) } catch (e) { e.message }',
15927
- 'try { assert-truthy({}) } catch (e) { e.message }',
15934
+ 'try assert-truthy(false, "Expected truthy") catch (e) e.message end',
15935
+ 'try assert-truthy(false) catch (e) e.message end',
15936
+ 'try assert-truthy(0) catch (e) e.message end',
15937
+ 'try assert-truthy(null) catch (e) e.message end',
15938
+ 'try assert-truthy("") catch (e) e.message end',
15939
+ 'try assert-truthy(true) catch (e) e.message end',
15940
+ 'try assert-truthy(1) catch (e) e.message end',
15941
+ 'try assert-truthy("x") catch (e) e.message end',
15942
+ 'try assert-truthy([]) catch (e) e.message end',
15943
+ 'try assert-truthy(nd) catch (e) e.message end',
15928
15944
  ],
15929
15945
  noOperatorDocumentation: true,
15930
15946
  },
@@ -15948,15 +15964,15 @@ var assertReference = {
15948
15964
  ],
15949
15965
  description: 'If $value is not `falsy` it throws `AssertionError`.',
15950
15966
  examples: [
15951
- 'try { assert-falsy(true, "Expected falsy") } catch (e) { e.message }',
15952
- 'try { assert-falsy("x") } catch (e) { e.message }',
15953
- 'try { assert-falsy([]) } catch (e) { e.message }',
15954
- 'try { assert-falsy({}) } catch (e) { e.message }',
15955
- 'try { assert-falsy(1) } catch (e) { e.message }',
15956
- 'try { assert-falsy(false) } catch (e) { e.message }',
15957
- 'try { assert-falsy(0) } catch (e) { e.message }',
15958
- 'try { assert-falsy(null) } catch (e) { e.message }',
15959
- 'try { assert-falsy("") } catch (e) { e.message }',
15967
+ 'try assert-falsy(true, "Expected falsy") catch (e) e.message end',
15968
+ 'try assert-falsy("x") catch (e) e.message end',
15969
+ 'try assert-falsy([]) catch (e) e.message end',
15970
+ 'try assert-falsy(nd) catch (e) e.message end',
15971
+ 'try assert-falsy(1) catch (e) e.message end',
15972
+ 'try assert-falsy(false) catch (e) e.message end',
15973
+ 'try assert-falsy(0) catch (e) e.message end',
15974
+ 'try assert-falsy(null) catch (e) e.message end',
15975
+ 'try assert-falsy("") catch (e) e.message end',
15960
15976
  ],
15961
15977
  noOperatorDocumentation: true,
15962
15978
  },
@@ -15980,15 +15996,15 @@ var assertReference = {
15980
15996
  ],
15981
15997
  description: 'If $value is not `null` it throws `AssertionError`.',
15982
15998
  examples: [
15983
- 'try { assert-null(null) } catch (e) { e.message }',
15984
- 'try { assert-null(true, "Expected null") } catch (e) { e.message }',
15985
- 'try { assert-null("x") } catch (e) { e.message }',
15986
- 'try { assert-null([]) } catch (e) { e.message }',
15987
- 'try { assert-null({}) } catch (e) { e.message }',
15988
- 'try { assert-null(1) } catch (e) { e.message }',
15989
- 'try { assert-null(false) } catch (e) { e.message }',
15990
- 'try { assert-null(0) } catch (e) { e.message }',
15991
- 'try { assert-null("") } catch (e) { e.message }',
15999
+ 'try assert-null(null) catch (e) e.message end',
16000
+ 'try assert-null(true, "Expected null") catch (e) e.message end',
16001
+ 'try assert-null("x") catch (e) e.message end',
16002
+ 'try assert-null([]) catch (e) e.message end',
16003
+ 'try assert-null(nd) catch (e) e.message end',
16004
+ 'try assert-null(1) catch (e) e.message end',
16005
+ 'try assert-null(false) catch (e) e.message end',
16006
+ 'try assert-null(0) catch (e) e.message end',
16007
+ 'try assert-null("") catch (e) e.message end',
15992
16008
  ],
15993
16009
  noOperatorDocumentation: true,
15994
16010
  },
@@ -16013,7 +16029,7 @@ var assertReference = {
16013
16029
  description: 'If $fun does not throw, it throws `AssertionError`.',
16014
16030
  examples: [
16015
16031
  'assert-throws(-> throw("Error"))',
16016
- 'try { assert-throws(-> identity("Error")) } catch (e) { e.message }',
16032
+ 'try assert-throws(-> identity("Error")) catch (e) e.message end',
16017
16033
  ],
16018
16034
  noOperatorDocumentation: true,
16019
16035
  },
@@ -16040,8 +16056,8 @@ var assertReference = {
16040
16056
  ],
16041
16057
  description: 'If $fun does not throw $error-message, it throws `AssertionError`.',
16042
16058
  examples: [
16043
- 'try { assert-throws-error(-> throw("Error"), "Error") } catch (e) { e.message }',
16044
- 'try { assert-throws-error(-> identity("Error"), "Error") } catch (e) { e.message }',
16059
+ 'try assert-throws-error(-> throw("Error"), "Error") catch (e) e.message end',
16060
+ 'try assert-throws-error(-> identity("Error"), "Error") catch (e) e.message end',
16045
16061
  ],
16046
16062
  noOperatorDocumentation: true,
16047
16063
  },
@@ -16065,8 +16081,8 @@ var assertReference = {
16065
16081
  ],
16066
16082
  description: 'If $fun throws, it throws `AssertionError`.',
16067
16083
  examples: [
16068
- 'try { assert-not-throws(-> identity("Error")) } catch (e) { e.message }',
16069
- 'try { assert-not-throws(-> throw("Error")) } catch (e) { e.message }',
16084
+ 'try assert-not-throws(-> identity("Error")) catch (e) e.message end',
16085
+ 'try assert-not-throws(-> throw("Error")) catch (e) e.message end',
16070
16086
  ],
16071
16087
  noOperatorDocumentation: true,
16072
16088
  },
@@ -26633,6 +26649,50 @@ var sequenceReference = {
26633
26649
  };
26634
26650
 
26635
26651
  var specialExpressionsReference = {
26652
+ 'doseq': {
26653
+ title: 'doseq',
26654
+ category: 'Special expression',
26655
+ customVariants: ['doseq (...binding) -> body'],
26656
+ details: [
26657
+ ['binding', 'loop-var in collection [...let-binding] [where whereExpr] [while whileExp]', 'A doseq loop binding'],
26658
+ ['loop-var', 'symbol', 'The name of the loop variable.'],
26659
+ ['collection', 'any', 'The collection to iterate over.'],
26660
+ ['let-binding', 'let binding', 'A let binding to create a local variable.'],
26661
+ ['whereExpr', 'expression', 'An expression that must evaluate to truthy for the loop body to be executed.'],
26662
+ ['whileExp', 'expression', 'An expression that must evaluate to truthy for the loop to continue.'],
26663
+ ['body', 'expressions', 'The expressions to evaluate for each iteration of the loop.'],
26664
+ ],
26665
+ returns: {
26666
+ type: 'null',
26667
+ },
26668
+ description: 'Iterates over `bindings`, evaluates `body` for each `binding` and returns `null`. This is useful for side effects.',
26669
+ examples: [
26670
+ "\ndoseq (i in [1, 2, 3]) -> write!(i * 2)\n ",
26671
+ ],
26672
+ },
26673
+ 'for': {
26674
+ title: 'for',
26675
+ category: 'Special expression',
26676
+ customVariants: ['for (...binding) -> body'],
26677
+ details: [
26678
+ ['binding', 'loop-var in collection [...let-binding] [where whereExpr] [while whileExp]', 'A for loop binding'],
26679
+ ['loop-var', 'symbol', 'The name of the loop variable.'],
26680
+ ['collection', 'any', 'The collection to iterate over.'],
26681
+ ['let-binding', 'let binding', 'A let binding to create a local variable.'],
26682
+ ['whereExpr', 'expression', 'An expression that must evaluate to truthy for the loop body to be executed.'],
26683
+ ['whileExp', 'expression', 'An expression that must evaluate to truthy for the loop to continue.'],
26684
+ ['body', 'expressions', 'The expressions to evaluate for each iteration of the loop.'],
26685
+ ],
26686
+ returns: {
26687
+ type: 'any',
26688
+ array: true,
26689
+ },
26690
+ description: 'Iterates over `bindings`, evaluates `body` for each `binding` and returns an `array` of results.',
26691
+ examples: [
26692
+ "\nfor (i in [1, 2, 3]) -> i * 2\n ",
26693
+ "\nfor (\n i in range(10) let ii = i ^ 2 while ii < 40 when ii % 3 == 0,\n j in range(10) when j % 2 == 1\n) -> ii + j\n ",
26694
+ ],
26695
+ },
26636
26696
  'array': {
26637
26697
  title: 'array',
26638
26698
  category: 'Special expression',
@@ -26757,9 +26817,9 @@ var specialExpressionsReference = {
26757
26817
  ],
26758
26818
  description: 'Executes `try-body`. If that throws, the `catch-body` gets executed. See examples for details.',
26759
26819
  examples: [
26760
- "\ntry {\n 2 / 4\n} catch {\n \"Oops!\"\n}",
26761
- "\ntry {\n foo()\n} catch(error) {\n \"Error: \" ++ error.message\n}",
26762
- "\ntry {\n foo()\n} catch {\n 42\n}",
26820
+ "\ntry\n 2 / 4\ncatch\n \"Oops!\"\nend",
26821
+ "\ntry\n foo()\ncatch(error)\n \"Error: \" ++ error.message\nend",
26822
+ "\ntry\n foo()\ncatch\n 42\nend",
26763
26823
  ],
26764
26824
  },
26765
26825
  'throw': {
@@ -26778,8 +26838,8 @@ var specialExpressionsReference = {
26778
26838
  ],
26779
26839
  description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',
26780
26840
  examples: [
26781
- 'try { throw("You shall not pass!") } catch(error) { "Error: " ++ error.message }',
26782
- 'try { throw(slice("You shall not pass!", 0, 3)) } catch(error) { "Error: " ++ error.message }',
26841
+ 'try throw("You shall not pass!") catch(error) "Error: " ++ error.message end',
26842
+ 'try throw(slice("You shall not pass!", 0, 3)) catch(error) "Error: " ++ error.message end',
26783
26843
  ],
26784
26844
  },
26785
26845
  'if': {
@@ -30925,7 +30985,7 @@ var datatype = {
30925
30985
  title: 'never',
30926
30986
  category: 'Datatype',
30927
30987
  description: 'A value that can never be created',
30928
- examples: ["\n// throw(\"error\") will never return a value\ntry { throw(\"error\") } catch { \"never\" }",
30988
+ examples: ["\n// throw(\"error\") will never return a value\ntry throw(\"error\") catch \"never\" end",
30929
30989
  ],
30930
30990
  },
30931
30991
  };