@quenk/wml 2.11.0 → 2.11.3
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.d.ts +5 -1
- package/lib/compile/codegen.js +28 -3
- package/lib/compile/codegen.js.map +1 -1
- package/lib/compile/codegen.ts +42 -10
- package/lib/dom.d.ts +4 -4
- package/lib/dom.js +12 -7
- package/lib/dom.js.map +1 -1
- package/lib/dom.ts +14 -8
- package/lib/parse/ast.d.ts +11 -1
- package/lib/parse/ast.js +15 -2
- package/lib/parse/ast.js.map +1 -1
- package/lib/parse/ast.ts +15 -0
- package/lib/parse/generated.js +2034 -1937
- package/lib/parse/test.js +10 -1
- package/lib/parse/test.js.map +1 -1
- package/lib/parse/test.ts +21 -1
- package/lib/parse/wml.y +21 -5
- package/package.json +1 -1
package/lib/parse/test.js
CHANGED
|
@@ -8,6 +8,9 @@ exports.tests = {
|
|
|
8
8
|
'should parse named import': {
|
|
9
9
|
input: "{% import (B) from \"path/to/a/b\" %}"
|
|
10
10
|
},
|
|
11
|
+
'should detect exact duplicate imports': {
|
|
12
|
+
input: "{% import (A) from \"b\" %} {% import (A) from \"b\" %}"
|
|
13
|
+
},
|
|
11
14
|
'should parse a self closing tag': {
|
|
12
15
|
input: '<simple/>'
|
|
13
16
|
},
|
|
@@ -67,6 +70,9 @@ exports.tests = {
|
|
|
67
70
|
'{% endfor %}' +
|
|
68
71
|
'</root>'
|
|
69
72
|
},
|
|
73
|
+
'should parse for from statements': {
|
|
74
|
+
input: "\n <root>\n {% for value=1 to 30 %}\n <b>{{value}}</b>\n {% endfor %}\n </root>\n "
|
|
75
|
+
},
|
|
70
76
|
'should parse if then expressions': {
|
|
71
77
|
input: '<Html id={{@id}}>{{ if @check() then a else b }}</Html>'
|
|
72
78
|
},
|
|
@@ -145,7 +151,10 @@ exports.tests = {
|
|
|
145
151
|
input: '<Input name={{@level.name}}/>'
|
|
146
152
|
},
|
|
147
153
|
'[view] should allow inline context import': {
|
|
148
|
-
input: '{% view MyView (Context from "./") %}
|
|
154
|
+
input: '{% view MyView (Context from "./") %} <div>{{@text}}</div>'
|
|
155
|
+
},
|
|
156
|
+
'[view] should allow multiple inline context imports': {
|
|
157
|
+
input: "\n {% view MyView (Context from \"./\") %} <div>{{@text}}</div>\n {% view YourView (Context from \"./\") %} <div/>\n "
|
|
149
158
|
},
|
|
150
159
|
'should allow construct expression': {
|
|
151
160
|
input: '<TextView android:thing={value=1}>{{Person(@value)}}</TextView>'
|
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
|
@@ -6,6 +6,9 @@ export const tests: { [key: string]: any } = {
|
|
|
6
6
|
'should parse named import': {
|
|
7
7
|
input: `{% import (B) from "path/to/a/b" %}`
|
|
8
8
|
},
|
|
9
|
+
'should detect exact duplicate imports': {
|
|
10
|
+
input: `{% import (A) from "b" %} {% import (A) from "b" %}`
|
|
11
|
+
},
|
|
9
12
|
'should parse a self closing tag': {
|
|
10
13
|
input: '<simple/>'
|
|
11
14
|
},
|
|
@@ -71,6 +74,16 @@ export const tests: { [key: string]: any } = {
|
|
|
71
74
|
'</root>'
|
|
72
75
|
|
|
73
76
|
},
|
|
77
|
+
'should parse for from statements': {
|
|
78
|
+
|
|
79
|
+
input: `
|
|
80
|
+
<root>
|
|
81
|
+
{% for value=1 to 30 %}
|
|
82
|
+
<b>{{value}}</b>
|
|
83
|
+
{% endfor %}
|
|
84
|
+
</root>
|
|
85
|
+
`
|
|
86
|
+
},
|
|
74
87
|
'should parse if then expressions': {
|
|
75
88
|
|
|
76
89
|
input: '<Html id={{@id}}>{{ if @check() then a else b }}</Html>'
|
|
@@ -225,8 +238,15 @@ export const tests: { [key: string]: any } = {
|
|
|
225
238
|
},
|
|
226
239
|
'[view] should allow inline context import': {
|
|
227
240
|
|
|
228
|
-
input: '{% view MyView (Context from "./") %}
|
|
241
|
+
input: '{% view MyView (Context from "./") %} <div>{{@text}}</div>'
|
|
242
|
+
|
|
243
|
+
},
|
|
244
|
+
'[view] should allow multiple inline context imports': {
|
|
229
245
|
|
|
246
|
+
input: `
|
|
247
|
+
{% view MyView (Context from "./") %} <div>{{@text}}</div>
|
|
248
|
+
{% view YourView (Context from "./") %} <div/>
|
|
249
|
+
`
|
|
230
250
|
},
|
|
231
251
|
'should allow construct expression': {
|
|
232
252
|
|
package/lib/parse/wml.y
CHANGED
|
@@ -100,6 +100,7 @@ Text ({DoubleStringCharacter}*)|({SingleStringCharacter}*)
|
|
|
100
100
|
<CONTROL>'false' return 'FALSE';
|
|
101
101
|
<CONTROL>'where' return 'WHERE';
|
|
102
102
|
<CONTROL>'let' return 'LET';
|
|
103
|
+
<CONTROL>'to' return 'TO';
|
|
103
104
|
<CONTROL>{Constructor} return 'CONSTRUCTOR';
|
|
104
105
|
<CONTROL>{Identifier} return 'IDENTIFIER';
|
|
105
106
|
<CONTROL>'@' return '@';
|
|
@@ -680,6 +681,9 @@ for_statement
|
|
|
680
681
|
|
|
681
682
|
| for_of
|
|
682
683
|
{$$ = $1;}
|
|
684
|
+
|
|
685
|
+
| for_from
|
|
686
|
+
{$$ + $1;}
|
|
683
687
|
;
|
|
684
688
|
|
|
685
689
|
for_in
|
|
@@ -702,20 +706,32 @@ for_of
|
|
|
702
706
|
{$$ = new yy.ast.ForOfStatement($3, $5, $7, $11, @$);}
|
|
703
707
|
;
|
|
704
708
|
|
|
709
|
+
for_from
|
|
710
|
+
: '{%' FOR untyped_parameter '=' expression TO expression '%}'
|
|
711
|
+
children
|
|
712
|
+
'{%' ENDFOR '%}'
|
|
713
|
+
{$$ = new yy.ast.ForFromStatement($3, $5, $7, $9, [], @$);}
|
|
714
|
+
;
|
|
715
|
+
|
|
705
716
|
for_parameters
|
|
706
|
-
:
|
|
717
|
+
: for_parameter
|
|
707
718
|
{$$ = [$1]; }
|
|
708
719
|
|
|
709
|
-
| untyped_parameter
|
|
710
|
-
{ $$ = [$1]; }
|
|
711
|
-
|
|
712
720
|
| for_parameters ',' parameter
|
|
713
721
|
{$$ = $1.concat($3); }
|
|
714
722
|
|
|
715
723
|
| for_parameters ',' untyped_parameter
|
|
716
724
|
{$$ = $1.concat($3); }
|
|
717
725
|
;
|
|
718
|
-
|
|
726
|
+
|
|
727
|
+
for_parameter
|
|
728
|
+
: parameter
|
|
729
|
+
{$$ = $1; }
|
|
730
|
+
|
|
731
|
+
| untyped_parameter
|
|
732
|
+
{ $$ = $1; }
|
|
733
|
+
;
|
|
734
|
+
|
|
719
735
|
if_statement
|
|
720
736
|
: '{%' IF expression '%}' children '{%' ENDIF '%}'
|
|
721
737
|
{$$ = new yy.ast.IfStatement($3, $5, undefined, @$); }
|