@quenk/wml 2.10.3 → 2.11.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.
@@ -10,7 +10,7 @@ var error_1 = require("@quenk/noni/lib/control/error");
10
10
  */
11
11
  var parse = function (str, ast) {
12
12
  if (ast === void 0) { ast = nodes; }
13
- return error_1.attempt(function () {
13
+ return (0, error_1.attempt)(function () {
14
14
  parser.parser.yy = { ast: ast };
15
15
  return parser.parser.parse(str);
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;AAEvC,oCAAsC;AACtC,6BAA+B;AAE/B,uDAAgE;AAEhE;;GAEG;AACI,IAAM,KAAK,GAAG,UAAC,GAAW,EAAE,GAAgB;IAAhB,oBAAA,EAAA,WAAgB;IAC/C,OAAA,eAAO,CAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,KAAA,EAAE,CAAC;QAE3B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,CAAC,CAAC;AANF,CAME,CAAC;AAPM,QAAA,KAAK,SAOX"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;AAEvC,oCAAsC;AACtC,6BAA+B;AAE/B,uDAAgE;AAEhE;;GAEG;AACI,IAAM,KAAK,GAAG,UAAC,GAAW,EAAE,GAAgB;IAAhB,oBAAA,EAAA,WAAgB;IAC/C,OAAA,IAAA,eAAO,EAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,KAAA,EAAE,CAAC;QAE3B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,CAAC,CAAC;AANF,CAME,CAAC;AAPM,QAAA,KAAK,SAOX"}
package/lib/parse/test.js CHANGED
@@ -144,6 +144,9 @@ exports.tests = {
144
144
  'should parse context variables': {
145
145
  input: '<Input name={{@level.name}}/>'
146
146
  },
147
+ '[view] should allow inline context import': {
148
+ input: '{% view MyView (Context from "./") %}} <div>{{@text}}</div>'
149
+ },
147
150
  'should allow construct expression': {
148
151
  input: '<TextView android:thing={value=1}>{{Person(@value)}}</TextView>'
149
152
  },
@@ -221,8 +224,6 @@ exports.tests = {
221
224
  '[context] should mark nested properties as optional if all are': "{% context Paper where object.\"type\"?: String %}",
222
225
  'should parse type statements': "{% type Type = String | Number | Boolean | Type[] | Type -> Type %}",
223
226
  'should parse tupe types': "{% type Tuple = [Number, String, Number] %}",
224
- 'should parse primitives used as type': '{% type Prims = 1|2|"three"|true|false|"1,2,three,true,false" %}',
225
- 'should parse this type': '{% type SortDir = 1 | -1 %}',
226
227
  'should parse type assertion': '<Panel onClick={{ \e -> [*User]foo(e) }} />',
227
228
  'should parse partial application in expression': '<Link ww:text={{truncate(50)(@text)}} />',
228
229
  'should transform special primitives': "<div>\n {% for kind in [\n String,\n Boolean,\n Number,\n Object,\n Undefined,\n Null,\n Void,\n Never,\n Any] %}\n {{ kind | text }}\n {% endfor %}\n </div>",
@@ -234,6 +235,7 @@ exports.tests = {
234
235
  '[comment] should parse wml comments': "{# This is a wml comment #}",
235
236
  '[comment] should parse wml comments in statements': "{% view Name {# This is a comment! #} (Object) %} <div/> %}",
236
237
  '[fun] should parse multi dimensional array parameters': "\n {% fun test (value:List[][]) %}<p/>{% endfun %}",
237
- 'should allow index access on context properties': "{% view Test (Object) %}\n <div>\n {% if @[\"type\"]?? %}\n <div/>\n {% endif %}\n </div>"
238
+ 'should allow index access on context properties': "{% view Test (Object) %}\n <div>\n {% if @[\"type\"]?? %}\n <div/>\n {% endif %}\n </div>",
239
+ 'should allow paths to use brackets': "\n {% view Test (Object) %} \n <div>\n {% if @values.controls[\"@type\"] %} value {% endif %}\n {% if @values.controls[\"@type\"].value %} value {% endif %}\n </div>"
238
240
  };
239
241
  //# sourceMappingURL=test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"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"}
package/lib/parse/test.ts CHANGED
@@ -222,6 +222,11 @@ export const tests: { [key: string]: any } = {
222
222
 
223
223
  input: '<Input name={{@level.name}}/>'
224
224
 
225
+ },
226
+ '[view] should allow inline context import': {
227
+
228
+ input: '{% view MyView (Context from "./") %}} <div>{{@text}}</div>'
229
+
225
230
  },
226
231
  'should allow construct expression': {
227
232
 
@@ -556,12 +561,6 @@ export const tests: { [key: string]: any } = {
556
561
 
557
562
  'should parse tupe types': `{% type Tuple = [Number, String, Number] %}`,
558
563
 
559
- 'should parse primitives used as type':
560
- '{% type Prims = 1|2|"three"|true|false|"1,2,three,true,false" %}',
561
-
562
- 'should parse this type':
563
- '{% type SortDir = 1 | -1 %}',
564
-
565
564
  'should parse type assertion':
566
565
  '<Panel onClick={{ \e -> [*User]foo(e) }} />',
567
566
 
@@ -622,6 +621,13 @@ export const tests: { [key: string]: any } = {
622
621
  {% if @["type"]?? %}
623
622
  <div/>
624
623
  {% endif %}
625
- </div>`
624
+ </div>`,
625
+
626
+ 'should allow paths to use brackets': `
627
+ {% view Test (Object) %}
628
+ <div>
629
+ {% if @values.controls["@type"] %} value {% endif %}
630
+ {% if @values.controls["@type"].value %} value {% endif %}
631
+ </div>`
626
632
 
627
633
  }
package/lib/parse/wml.y CHANGED
@@ -336,22 +336,26 @@ member_path
336
336
 
337
337
  view_statement
338
338
 
339
- : '{%' VIEW unqualified_constructor '(' type ')' '%}' element
339
+ : '{%' VIEW unqualified_constructor '(' view_statement_context ')'
340
+ '%}' element
340
341
  { $$ = new yy.ast.ViewStatement($3, [], $5, [], $8, @$); }
341
342
 
342
- | '{%' VIEW unqualified_constructor '(' type ')' '%}'
343
+ | '{%' VIEW unqualified_constructor '(' view_statement_context ')' '%}'
343
344
  view_directives element
344
345
  { $$ = new yy.ast.ViewStatement($3, [], $5, $8, $9, @$); }
345
346
 
346
- | '{%' VIEW unqualified_constructor type_parameters '(' type ')' '%}'
347
+ | '{%' VIEW unqualified_constructor type_parameters
348
+ '(' view_statement_context ')' '%}'
347
349
  element
348
350
  { $$ = new yy.ast.ViewStatement($3, $4, $6, [], $9, @$); }
349
351
 
350
- | '{%' VIEW unqualified_constructor type_parameters '(' type ')' '%}'
352
+ | '{%' VIEW unqualified_constructor type_parameters
353
+ '(' view_statement_context ')' '%}'
351
354
  view_directives element
352
355
  { $$ = new yy.ast.ViewStatement($3, $4, $6, $9, $10, @$); }
353
356
 
354
- | '{%' VIEW unqualified_constructor WHERE context_members '%}' element
357
+ | '{%' VIEW unqualified_constructor WHERE context_members '%}'
358
+ element
355
359
  { $$ = new yy.ast.ViewStatement($3, [], $5, [], $7, @$); }
356
360
 
357
361
  | '{%' VIEW unqualified_constructor WHERE context_members '%}'
@@ -367,6 +371,16 @@ view_statement
367
371
  { $$ = new yy.ast.ViewStatement($3, $4, $6, $8, $9, @$); }
368
372
  ;
369
373
 
374
+ view_statement_context
375
+ : type
376
+ { $$ = $1; }
377
+
378
+ | unqualified_constructor FROM string_literal
379
+ {$$ = new yy.ast.ImportStatement(new yy.ast.CompositeMember([$1],@$),
380
+ $3, @$);
381
+ }
382
+ ;
383
+
370
384
  view_directives
371
385
  : let_statement
372
386
  { $$ = [$1]; }
@@ -439,15 +453,6 @@ non_function_type
439
453
  : constructor_type
440
454
  { $$ = $1; }
441
455
 
442
- | string_literal
443
- { $$ = $1; }
444
-
445
- | number_literal
446
- { $$ = $1; }
447
-
448
- | boolean_literal
449
- { $$ = $1; }
450
-
451
456
  | record_type
452
457
  { $$ = $1; }
453
458
 
@@ -480,19 +485,10 @@ list_type
480
485
  { $$ = new yy.ast.ListType(
481
486
  new yy.ast.ConstructorType($1, []), @$); }
482
487
 
483
- | cons type_parameters '[' ']'
488
+ | cons type_parameters '[' ']'
484
489
  { $$ = new yy.ast.ListType(
485
490
  new yy.ast.ConstructorType($1, $2), @$); }
486
491
 
487
- | string_literal '[' ']'
488
- { $$ = new yy.ast.ListType($1, @$); }
489
-
490
- | number_literal '[' ']'
491
- { $$ = new yy.ast.ListType($1, @$); }
492
-
493
- | boolean_literal '[' ']'
494
- { $$ = new yy.ast.ListType($1, @$); }
495
-
496
492
  | record_type '[' ']'
497
493
  { $$ = new yy.ast.ListType($1, @$); }
498
494
 
@@ -508,7 +504,6 @@ list_type
508
504
  ;
509
505
 
510
506
  tuple_type
511
-
512
507
  : '[' ']'
513
508
  { $$ = new yy.ast.TupleType([], @$); }
514
509
 
@@ -747,19 +742,10 @@ characters
747
742
  ;
748
743
 
749
744
  arguments
750
- : '(' ')'
751
- {$$ = []; }
752
-
753
- | '(' argument_list ')'
754
- {$$ = $2; }
755
-
756
- ;
757
-
758
- argument_list
759
745
  : expression
760
746
  {$$ = [$1]; }
761
747
 
762
- | argument_list ',' expression
748
+ | arguments ',' expression
763
749
  {$$ = $1.concat($3); }
764
750
  ;
765
751
 
@@ -817,21 +803,18 @@ unary_expression
817
803
 
818
804
  | '(' expression ')' '??'
819
805
  {$$ = new yy.ast.UnaryExpression($4, $2, @$); }
820
-
821
806
  ;
822
807
 
823
808
  type_assertion
824
-
825
809
  : '[' '*' type ']' expression
826
810
  {$$ = new yy.ast.TypeAssertion($3, $5, @$); }
827
811
  ;
828
812
 
829
813
  simple_expression
830
814
  : (
831
- view_construction
832
- |fun_application
833
- |construct_expression
815
+ construct_expression
834
816
  |call_expression
817
+ |view_construction
835
818
  |member_expression
836
819
  |literal
837
820
  |context_property
@@ -842,31 +825,11 @@ simple_expression
842
825
  ;
843
826
 
844
827
  view_construction
845
- : '<' cons '(' expression ')' '>'
846
- { $$ = new yy.ast.ViewConstruction($2, $4, @$); }
847
- ;
848
-
849
- fun_application
850
- : '<' fun_target type_arguments arguments '>'
851
- { $$ = new yy.ast.FunApplication($2, $3, $4, @$); }
852
-
853
- | '<' fun_target arguments '>'
854
- { $$ = new yy.ast.FunApplication($2, [], $3, @$); }
855
-
856
- | '<' fun_target '>'
857
- { $$ = new yy.ast.FunApplication($2, [], [], @$); }
858
-
859
- ;
828
+ : '<' simple_expression '>'
829
+ { $$ = new yy.ast.ViewConstruction($2, @$); }
860
830
 
861
- fun_target
862
- : identifier
863
- { $$ = $1; }
864
-
865
- | context_property
866
- { $$ = $1; }
867
-
868
- | '(' expression ')'
869
- { $$ = $2; }
831
+ | '<' '(' expression ')' '>'
832
+ { $$ = new yy.ast.ViewConstruction($3, @$); }
870
833
  ;
871
834
 
872
835
  type_arguments
@@ -883,37 +846,67 @@ type_arg_list
883
846
  ;
884
847
 
885
848
  construct_expression
886
- : cons arguments
887
- { $$ = new yy.ast.ConstructExpression($1, $2, @$); }
849
+ : cons '(' arguments ')'
850
+ { $$ = new yy.ast.ConstructExpression($1, $3, @$); }
851
+
852
+ | cons '(' ')'
853
+ { $$ = new yy.ast.ConstructExpression($1, [], @$); }
888
854
  ;
889
855
 
890
856
  call_expression
891
- : identifier type_arguments arguments
892
- {$$ = new yy.ast.CallExpression($1, $2, $3, @$); }
857
+ : identifier type_arguments '(' arguments ')'
858
+ {$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
859
+
860
+ | identifier type_arguments '(' ')'
861
+ {$$ = new yy.ast.CallExpression($1, $2, [], @$); }
862
+
863
+ | identifier '(' arguments ')'
864
+ {$$ = new yy.ast.CallExpression($1, [], $3, @$); }
865
+
866
+ | identifier '(' ')'
867
+ {$$ = new yy.ast.CallExpression($1, [], [], @$); }
868
+
869
+ | context_property type_arguments '(' arguments ')'
870
+ {$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
871
+
872
+ | context_property type_arguments '(' ')'
873
+ {$$ = new yy.ast.CallExpression($1, $2, [], @$); }
893
874
 
894
- | identifier arguments
895
- {$$ = new yy.ast.CallExpression($1, [], $2, @$); }
875
+ | context_property '(' arguments ')'
876
+ {$$ = new yy.ast.CallExpression($1, [], $3, @$); }
896
877
 
897
- | context_property type_arguments arguments
898
- {$$ = new yy.ast.CallExpression($1, $2, $3, @$); }
878
+ | context_property '(' ')'
879
+ {$$ = new yy.ast.CallExpression($1, [], [], @$); }
899
880
 
900
- | context_property arguments
901
- {$$ = new yy.ast.CallExpression($1, [], $2, @$); }
881
+ | member_expression type_arguments '(' arguments ')'
882
+ {$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
902
883
 
903
- | member_expression type_arguments arguments
904
- {$$ = new yy.ast.CallExpression($1, $2, $3, @$); }
884
+ | member_expression type_arguments '(' ')'
885
+ {$$ = new yy.ast.CallExpression($1, $2, [], @$); }
905
886
 
906
- | member_expression arguments
907
- {$$ = new yy.ast.CallExpression($1, [], $2, @$); }
887
+ | member_expression '(' arguments ')'
888
+ {$$ = new yy.ast.CallExpression($1, [], $3, @$); }
908
889
 
909
- | '(' expression ')' type_arguments arguments
910
- {$$ = new yy.ast.CallExpression($2, $4, $5, @$); }
890
+ | member_expression '(' ')'
891
+ {$$ = new yy.ast.CallExpression($1, [], [], @$); }
911
892
 
912
- | '(' expression ')' arguments
913
- {$$ = new yy.ast.CallExpression($2, [], $4, @$); }
893
+ | '(' expression ')' type_arguments '(' arguments ')'
894
+ {$$ = new yy.ast.CallExpression($2, $4, $6, @$); }
914
895
 
915
- | call_expression arguments
916
- {$$ = new yy.ast.CallExpression($1, [], $2, @$); }
896
+ | '(' expression ')' type_arguments '(' ')'
897
+ {$$ = new yy.ast.CallExpression($2, $4, [], @$); }
898
+
899
+ | '(' expression ')' '(' arguments ')'
900
+ {$$ = new yy.ast.CallExpression($2, [], $5, @$); }
901
+
902
+ | '(' expression ')' '(' ')'
903
+ {$$ = new yy.ast.CallExpression($2, [], [], @$); }
904
+
905
+ | call_expression '(' arguments ')'
906
+ {$$ = new yy.ast.CallExpression($1, [], $3, @$); }
907
+
908
+ | call_expression '(' ')'
909
+ {$$ = new yy.ast.CallExpression($1, [], [], @$); }
917
910
  ;
918
911
 
919
912
  member_expression
@@ -947,6 +940,9 @@ member_expression
947
940
 
948
941
  | member_expression '.' unqualified_identifier
949
942
  {$$ = new yy.ast.MemberExpression($1, $3, @$); }
943
+
944
+ | member_expression '[' string_literal ']'
945
+ {$$ = new yy.ast.MemberExpression($1, $3, @$); }
950
946
  ;
951
947
 
952
948
  function_expression
@@ -990,7 +986,7 @@ list
990
986
  : '[' ']'
991
987
  {$$ = new yy.ast.List([], @$); }
992
988
 
993
- | '[' argument_list ']'
989
+ | '[' arguments ']'
994
990
  {$$ = new yy.ast.List($2, @$); }
995
991
  ;
996
992
 
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@quenk/wml",
3
- "version": "2.10.3",
3
+ "version": "2.11.0",
4
4
  "description": "(WML) is a DSL for describing user interfaces in web applications.",
5
5
  "main": "lib/index.js",
6
+ "scripts": {
7
+ "test": "./node_modules/.bin/mocha $(find -name *_test.ts)"
8
+ },
6
9
  "types": "lib/index.d.ts",
7
10
  "files": [
8
11
  "lib"
@@ -19,7 +22,7 @@
19
22
  "@types/node": "^15.12.2",
20
23
  "jison-gho": "^0.6.1-216",
21
24
  "mocha": "^9.0.0",
22
- "ts-node": "^10.0.0",
25
+ "ts-node": "^10.5.0",
23
26
  "typedoc": "^0.20.36",
24
27
  "typescript": "^4.3.2"
25
28
  },