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