@quenk/wml 2.10.0 → 2.10.4
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/lib/compile/codegen.js +12 -3
- package/lib/compile/codegen.js.map +1 -1
- package/lib/compile/codegen.ts +16 -4
- package/lib/dom.d.ts +14 -3
- package/lib/dom.js +36 -15
- package/lib/dom.js.map +1 -1
- package/lib/dom.ts +33 -15
- package/lib/parse/ast.d.ts +4 -5
- package/lib/parse/ast.js +2 -3
- package/lib/parse/ast.js.map +1 -1
- package/lib/parse/ast.ts +2 -3
- package/lib/parse/generated.js +2308 -2107
- package/lib/parse/test.js +6 -3
- package/lib/parse/test.js.map +1 -1
- package/lib/parse/test.ts +21 -9
- package/lib/parse/wml.y +73 -84
- package/package.json +4 -1
package/lib/parse/test.js
CHANGED
|
@@ -221,14 +221,17 @@ exports.tests = {
|
|
|
221
221
|
'[context] should mark nested properties as optional if all are': "{% context Paper where object.\"type\"?: String %}",
|
|
222
222
|
'should parse type statements': "{% type Type = String | Number | Boolean | Type[] | Type -> Type %}",
|
|
223
223
|
'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
224
|
'should parse type assertion': '<Panel onClick={{ \e -> [*User]foo(e) }} />',
|
|
227
225
|
'should parse partial application in expression': '<Link ww:text={{truncate(50)(@text)}} />',
|
|
228
226
|
'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>",
|
|
229
227
|
'should allow casting': "\n {% view Test (Object) %}\n <Widget\n val1={{String(@value)}}\n val2={{Number(@value)}}\n val3={{Boolean(@value)}} />\n ",
|
|
230
228
|
'should parse null query operator': "<div>{% if value ?? %}<b>True</b>{% else %}<b>False</b>{% endif %}</div>",
|
|
231
229
|
'[let] should parse let statements': "{% let head:HeadCtx = {title = \"Foo\"} %}\n {% let head2:HeadCtx = {title = \"My Title\"} %}\n ",
|
|
232
|
-
'[let] should be usable in a view': "{% view MyView(Object) %}\n {% let head:HeadViewContext = {title = \"My Title\"} %}\n <h1>{{<HeadView(head)>}}</h1>\n "
|
|
230
|
+
'[let] should be usable in a view': "\n {% view MyView(Object) %}\n {% let head:HeadViewContext = {title = \"My Title\"} %}\n <h1>{{<HeadView(head)>}}</h1>\n ",
|
|
231
|
+
'[comment] should parse html comments': "<!-- This is an html comment. -->",
|
|
232
|
+
'[comment] should parse wml comments': "{# This is a wml comment #}",
|
|
233
|
+
'[comment] should parse wml comments in statements': "{% view Name {# This is a comment! #} (Object) %} <div/> %}",
|
|
234
|
+
'[fun] should parse multi dimensional array parameters': "\n {% fun test (value:List[][]) %}<p/>{% endfun %}",
|
|
235
|
+
'should allow index access on context properties': "{% view Test (Object) %}\n <div>\n {% if @[\"type\"]?? %}\n <div/>\n {% endif %}\n </div>"
|
|
233
236
|
};
|
|
234
237
|
//# sourceMappingURL=test.js.map
|
package/lib/parse/test.js.map
CHANGED
|
@@ -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
|
@@ -556,12 +556,6 @@ export const tests: { [key: string]: any } = {
|
|
|
556
556
|
|
|
557
557
|
'should parse tupe types': `{% type Tuple = [Number, String, Number] %}`,
|
|
558
558
|
|
|
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
559
|
'should parse type assertion':
|
|
566
560
|
'<Panel onClick={{ \e -> [*User]foo(e) }} />',
|
|
567
561
|
|
|
@@ -600,10 +594,28 @@ export const tests: { [key: string]: any } = {
|
|
|
600
594
|
{% let head2:HeadCtx = {title = "My Title"} %}
|
|
601
595
|
`,
|
|
602
596
|
|
|
603
|
-
'[let] should be usable in a view':
|
|
604
|
-
|
|
597
|
+
'[let] should be usable in a view': `
|
|
598
|
+
{% view MyView(Object) %}
|
|
605
599
|
{% let head:HeadViewContext = {title = "My Title"} %}
|
|
606
600
|
<h1>{{<HeadView(head)>}}</h1>
|
|
607
|
-
|
|
601
|
+
`,
|
|
602
|
+
|
|
603
|
+
'[comment] should parse html comments': `<!-- This is an html comment. -->`,
|
|
604
|
+
|
|
605
|
+
'[comment] should parse wml comments': `{# This is a wml comment #}`,
|
|
606
|
+
|
|
607
|
+
'[comment] should parse wml comments in statements':
|
|
608
|
+
`{% view Name {# This is a comment! #} (Object) %} <div/> %}`,
|
|
609
|
+
|
|
610
|
+
'[fun] should parse multi dimensional array parameters': `
|
|
611
|
+
{% fun test (value:List[][]) %}<p/>{% endfun %}`,
|
|
612
|
+
|
|
613
|
+
'should allow index access on context properties':
|
|
614
|
+
`{% view Test (Object) %}
|
|
615
|
+
<div>
|
|
616
|
+
{% if @["type"]?? %}
|
|
617
|
+
<div/>
|
|
618
|
+
{% endif %}
|
|
619
|
+
</div>`
|
|
608
620
|
|
|
609
621
|
}
|
package/lib/parse/wml.y
CHANGED
|
@@ -36,7 +36,8 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
36
36
|
/* Lexer flags */
|
|
37
37
|
%options flex
|
|
38
38
|
%x CHILDREN
|
|
39
|
-
%x
|
|
39
|
+
%x HTMLCOMMENT
|
|
40
|
+
%x WMLCOMMENT
|
|
40
41
|
%x CONTROL
|
|
41
42
|
%x INTERPOLATION
|
|
42
43
|
%x CONTROL_CHILD
|
|
@@ -48,7 +49,8 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
48
49
|
<*>\s+ return;
|
|
49
50
|
|
|
50
51
|
<INITIAL>'{%' this.begin('CONTROL'); return '{%';
|
|
51
|
-
<INITIAL>'<!--' this.begin('
|
|
52
|
+
<INITIAL>'<!--' this.begin('HTMLCOMMENT'); return;
|
|
53
|
+
<INITIAL>'{#' this.begin('WMLCOMMENT'); return;
|
|
52
54
|
<INITIAL>'<' this.begin('ELEMENT'); return '<';
|
|
53
55
|
<INITIAL>'{{' this.begin('INTERPOLATION'); return '{{';
|
|
54
56
|
|
|
@@ -65,7 +67,7 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
65
67
|
|
|
66
68
|
<CHILDREN>'{{' this.begin('INTERPOLATION'); return '{{';
|
|
67
69
|
<CHILDREN>'{%' this.begin('CONTROL'); return '{%';
|
|
68
|
-
<CHILDREN>'<!--' this.begin('
|
|
70
|
+
<CHILDREN>'<!--' this.begin('HTMLCOMMENT'); return;
|
|
69
71
|
<CHILDREN>'</' this.begin('ELEMENT'); return '</';
|
|
70
72
|
<CHILDREN>'<' this.begin('ELEMENT'); return '<';
|
|
71
73
|
<CHILDREN>'{' return '{';
|
|
@@ -104,6 +106,7 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
104
106
|
<CONTROL>'=' return '=';
|
|
105
107
|
<CONTROL>'?' return '?';
|
|
106
108
|
<CONTROL>'<' this.begin('ELEMENT'); return '<';
|
|
109
|
+
<CONTROL>'{#' this.begin('WMLCOMMENT'); return;
|
|
107
110
|
<CONTROL>'{{' this.begin('INTERPOLATION');return '{{';
|
|
108
111
|
<CONTROL>'%}' this.popState(); return '%}';
|
|
109
112
|
<CONTROL>'{' return '{';
|
|
@@ -125,7 +128,8 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
125
128
|
<INTERPOLATION>'}' return '}';
|
|
126
129
|
<INTERPOLATION>'}}' this.popState(); return '}}';
|
|
127
130
|
|
|
128
|
-
<
|
|
131
|
+
<HTMLCOMMENT>(.|\r|\n)*?'-->' this.popState(); return;
|
|
132
|
+
<WMLCOMMENT>(.|\r|\n)*?'#}' this.popState(); return;
|
|
129
133
|
|
|
130
134
|
<*>{NumberLiteral} return 'NUMBER_LITERAL';
|
|
131
135
|
<*>{StringLiteral} return 'STRING_LITERAL';
|
|
@@ -435,15 +439,6 @@ non_function_type
|
|
|
435
439
|
: constructor_type
|
|
436
440
|
{ $$ = $1; }
|
|
437
441
|
|
|
438
|
-
| string_literal
|
|
439
|
-
{ $$ = $1; }
|
|
440
|
-
|
|
441
|
-
| number_literal
|
|
442
|
-
{ $$ = $1; }
|
|
443
|
-
|
|
444
|
-
| boolean_literal
|
|
445
|
-
{ $$ = $1; }
|
|
446
|
-
|
|
447
442
|
| record_type
|
|
448
443
|
{ $$ = $1; }
|
|
449
444
|
|
|
@@ -476,19 +471,10 @@ list_type
|
|
|
476
471
|
{ $$ = new yy.ast.ListType(
|
|
477
472
|
new yy.ast.ConstructorType($1, []), @$); }
|
|
478
473
|
|
|
479
|
-
|
|
474
|
+
| cons type_parameters '[' ']'
|
|
480
475
|
{ $$ = new yy.ast.ListType(
|
|
481
476
|
new yy.ast.ConstructorType($1, $2), @$); }
|
|
482
477
|
|
|
483
|
-
| string_literal '[' ']'
|
|
484
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
485
|
-
|
|
486
|
-
| number_literal '[' ']'
|
|
487
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
488
|
-
|
|
489
|
-
| boolean_literal '[' ']'
|
|
490
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
491
|
-
|
|
492
478
|
| record_type '[' ']'
|
|
493
479
|
{ $$ = new yy.ast.ListType($1, @$); }
|
|
494
480
|
|
|
@@ -504,7 +490,6 @@ list_type
|
|
|
504
490
|
;
|
|
505
491
|
|
|
506
492
|
tuple_type
|
|
507
|
-
|
|
508
493
|
: '[' ']'
|
|
509
494
|
{ $$ = new yy.ast.TupleType([], @$); }
|
|
510
495
|
|
|
@@ -743,19 +728,10 @@ characters
|
|
|
743
728
|
;
|
|
744
729
|
|
|
745
730
|
arguments
|
|
746
|
-
: '(' ')'
|
|
747
|
-
{$$ = []; }
|
|
748
|
-
|
|
749
|
-
| '(' argument_list ')'
|
|
750
|
-
{$$ = $2; }
|
|
751
|
-
|
|
752
|
-
;
|
|
753
|
-
|
|
754
|
-
argument_list
|
|
755
731
|
: expression
|
|
756
732
|
{$$ = [$1]; }
|
|
757
733
|
|
|
758
|
-
|
|
|
734
|
+
| arguments ',' expression
|
|
759
735
|
{$$ = $1.concat($3); }
|
|
760
736
|
;
|
|
761
737
|
|
|
@@ -813,21 +789,18 @@ unary_expression
|
|
|
813
789
|
|
|
814
790
|
| '(' expression ')' '??'
|
|
815
791
|
{$$ = new yy.ast.UnaryExpression($4, $2, @$); }
|
|
816
|
-
|
|
817
792
|
;
|
|
818
793
|
|
|
819
794
|
type_assertion
|
|
820
|
-
|
|
821
795
|
: '[' '*' type ']' expression
|
|
822
796
|
{$$ = new yy.ast.TypeAssertion($3, $5, @$); }
|
|
823
797
|
;
|
|
824
798
|
|
|
825
799
|
simple_expression
|
|
826
800
|
: (
|
|
827
|
-
|
|
828
|
-
|fun_application
|
|
829
|
-
|construct_expression
|
|
801
|
+
construct_expression
|
|
830
802
|
|call_expression
|
|
803
|
+
|view_construction
|
|
831
804
|
|member_expression
|
|
832
805
|
|literal
|
|
833
806
|
|context_property
|
|
@@ -838,31 +811,11 @@ simple_expression
|
|
|
838
811
|
;
|
|
839
812
|
|
|
840
813
|
view_construction
|
|
841
|
-
: '<'
|
|
842
|
-
{ $$ = new yy.ast.ViewConstruction($2,
|
|
843
|
-
;
|
|
844
|
-
|
|
845
|
-
fun_application
|
|
846
|
-
: '<' fun_target type_arguments arguments '>'
|
|
847
|
-
{ $$ = new yy.ast.FunApplication($2, $3, $4, @$); }
|
|
814
|
+
: '<' simple_expression '>'
|
|
815
|
+
{ $$ = new yy.ast.ViewConstruction($2, @$); }
|
|
848
816
|
|
|
849
|
-
| '<'
|
|
850
|
-
{ $$ = new yy.ast.
|
|
851
|
-
|
|
852
|
-
| '<' fun_target '>'
|
|
853
|
-
{ $$ = new yy.ast.FunApplication($2, [], [], @$); }
|
|
854
|
-
|
|
855
|
-
;
|
|
856
|
-
|
|
857
|
-
fun_target
|
|
858
|
-
: identifier
|
|
859
|
-
{ $$ = $1; }
|
|
860
|
-
|
|
861
|
-
| context_property
|
|
862
|
-
{ $$ = $1; }
|
|
863
|
-
|
|
864
|
-
| '(' expression ')'
|
|
865
|
-
{ $$ = $2; }
|
|
817
|
+
| '<' '(' expression ')' '>'
|
|
818
|
+
{ $$ = new yy.ast.ViewConstruction($3, @$); }
|
|
866
819
|
;
|
|
867
820
|
|
|
868
821
|
type_arguments
|
|
@@ -879,37 +832,67 @@ type_arg_list
|
|
|
879
832
|
;
|
|
880
833
|
|
|
881
834
|
construct_expression
|
|
882
|
-
: cons arguments
|
|
883
|
-
{ $$ = new yy.ast.ConstructExpression($1, $
|
|
835
|
+
: cons '(' arguments ')'
|
|
836
|
+
{ $$ = new yy.ast.ConstructExpression($1, $3, @$); }
|
|
837
|
+
|
|
838
|
+
| cons '(' ')'
|
|
839
|
+
{ $$ = new yy.ast.ConstructExpression($1, [], @$); }
|
|
884
840
|
;
|
|
885
841
|
|
|
886
842
|
call_expression
|
|
887
|
-
: identifier type_arguments arguments
|
|
888
|
-
{$$ = new yy.ast.CallExpression($1, $2, $
|
|
843
|
+
: identifier type_arguments '(' arguments ')'
|
|
844
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
845
|
+
|
|
846
|
+
| identifier type_arguments '(' ')'
|
|
847
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
889
848
|
|
|
890
|
-
| identifier arguments
|
|
891
|
-
{$$ = new yy.ast.CallExpression($1, [], $
|
|
849
|
+
| identifier '(' arguments ')'
|
|
850
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
892
851
|
|
|
893
|
-
|
|
|
894
|
-
{$$ = new yy.ast.CallExpression($1,
|
|
852
|
+
| identifier '(' ')'
|
|
853
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
895
854
|
|
|
896
|
-
| context_property arguments
|
|
897
|
-
{$$ = new yy.ast.CallExpression($1,
|
|
855
|
+
| context_property type_arguments '(' arguments ')'
|
|
856
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
898
857
|
|
|
899
|
-
|
|
|
900
|
-
{$$ = new yy.ast.CallExpression($1, $2,
|
|
858
|
+
| context_property type_arguments '(' ')'
|
|
859
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
901
860
|
|
|
902
|
-
|
|
|
903
|
-
{$$ = new yy.ast.CallExpression($1, [], $
|
|
861
|
+
| context_property '(' arguments ')'
|
|
862
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
904
863
|
|
|
905
|
-
| '('
|
|
906
|
-
{$$ = new yy.ast.CallExpression($
|
|
864
|
+
| context_property '(' ')'
|
|
865
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
907
866
|
|
|
908
|
-
| '('
|
|
909
|
-
{$$ = new yy.ast.CallExpression($
|
|
867
|
+
| member_expression type_arguments '(' arguments ')'
|
|
868
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
910
869
|
|
|
911
|
-
|
|
|
912
|
-
{$$ = new yy.ast.CallExpression($1, [],
|
|
870
|
+
| member_expression type_arguments '(' ')'
|
|
871
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
872
|
+
|
|
873
|
+
| member_expression '(' arguments ')'
|
|
874
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
875
|
+
|
|
876
|
+
| member_expression '(' ')'
|
|
877
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
878
|
+
|
|
879
|
+
| '(' expression ')' type_arguments '(' arguments ')'
|
|
880
|
+
{$$ = new yy.ast.CallExpression($2, $4, $6, @$); }
|
|
881
|
+
|
|
882
|
+
| '(' expression ')' type_arguments '(' ')'
|
|
883
|
+
{$$ = new yy.ast.CallExpression($2, $4, [], @$); }
|
|
884
|
+
|
|
885
|
+
| '(' expression ')' '(' arguments ')'
|
|
886
|
+
{$$ = new yy.ast.CallExpression($2, [], $5, @$); }
|
|
887
|
+
|
|
888
|
+
| '(' expression ')' '(' ')'
|
|
889
|
+
{$$ = new yy.ast.CallExpression($2, [], [], @$); }
|
|
890
|
+
|
|
891
|
+
| call_expression '(' arguments ')'
|
|
892
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
893
|
+
|
|
894
|
+
| call_expression '(' ')'
|
|
895
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
913
896
|
;
|
|
914
897
|
|
|
915
898
|
member_expression
|
|
@@ -943,6 +926,9 @@ member_expression
|
|
|
943
926
|
|
|
944
927
|
| member_expression '.' unqualified_identifier
|
|
945
928
|
{$$ = new yy.ast.MemberExpression($1, $3, @$); }
|
|
929
|
+
|
|
930
|
+
| member_expression '[' string_literal ']'
|
|
931
|
+
{$$ = new yy.ast.MemberExpression($1, $3, @$); }
|
|
946
932
|
;
|
|
947
933
|
|
|
948
934
|
function_expression
|
|
@@ -986,7 +972,7 @@ list
|
|
|
986
972
|
: '[' ']'
|
|
987
973
|
{$$ = new yy.ast.List([], @$); }
|
|
988
974
|
|
|
989
|
-
| '['
|
|
975
|
+
| '[' arguments ']'
|
|
990
976
|
{$$ = new yy.ast.List($2, @$); }
|
|
991
977
|
;
|
|
992
978
|
|
|
@@ -1011,6 +997,9 @@ boolean_literal
|
|
|
1011
997
|
context_property
|
|
1012
998
|
: '@' unqualified_identifier
|
|
1013
999
|
{ $$ = new yy.ast.ContextProperty($2, @$) }
|
|
1000
|
+
|
|
1001
|
+
| '@' '[' string_literal ']'
|
|
1002
|
+
{ $$ = new yy.ast.ContextProperty($3, @$) }
|
|
1014
1003
|
;
|
|
1015
1004
|
|
|
1016
1005
|
context_variable
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenk/wml",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.4",
|
|
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"
|