@quenk/wml 2.12.0 → 2.13.1

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/parse/test.js CHANGED
@@ -417,7 +417,7 @@ exports.tests = {
417
417
  '[context] should mark nested properties as optional if all are': `{% context Paper where object."type"?: String %}`,
418
418
  'should parse type statements': `{% type Type = String | Number | Boolean | Type[] | Type -> Type %}`,
419
419
  'should parse tupe types': `{% type Tuple = [Number, String, Number] %}`,
420
- 'should parse type assertion': '<Panel onClick={{ \e -> [*User]foo(e) }} />',
420
+ 'should parse type assertion': '<Panel onClick={{ \e -> foo(e) as User }} />',
421
421
  'should parse partial application in expression': '<Link ww:text={{truncate(50)(@text)}} />',
422
422
  'should transform special primitives': `<div>
423
423
  {% for kind in [
@@ -468,6 +468,13 @@ exports.tests = {
468
468
  </div>`,
469
469
  'should allow 2nd level bracket access': `<div>{% for item in our."items" %} <div/>{% endfor %}</div> `,
470
470
  'should allow type to be used in if statement expression': `<div>{% if item."type" == 1 %}<p/>{% endif %}</div>`,
471
- 'should support the special wml:attrs attribute': `<Panel wml:attrs={{@panelAttrs}}><div wml:attrs={{divAttrs}}/></Panel>`
471
+ 'should support the special wml:attrs attribute': `<Panel wml:attrs={{@panelAttrs}}><div wml:attrs={{divAttrs}}/></Panel>`,
472
+ 'should parse widgets with type arguments': `<div>
473
+ <Panel[Text]>
474
+ <PanelHeader[Text] wml:id="header"/>
475
+ <PanelBody/>
476
+ </Panel>
477
+ </div>`,
478
+ 'should parse view construction with type arguments': `<div>{{<Panel[Text](@)>}}</div>`,
472
479
  };
473
480
  //# 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
@@ -582,7 +582,7 @@ export const tests: { [key: string]: any } = {
582
582
  'should parse tupe types': `{% type Tuple = [Number, String, Number] %}`,
583
583
 
584
584
  'should parse type assertion':
585
- '<Panel onClick={{ \e -> [*User]foo(e) }} />',
585
+ '<Panel onClick={{ \e -> foo(e) as User }} />',
586
586
 
587
587
  'should parse partial application in expression':
588
588
  '<Link ww:text={{truncate(50)(@text)}} />',
@@ -656,7 +656,19 @@ export const tests: { [key: string]: any } = {
656
656
  'should allow type to be used in if statement expression':
657
657
  `<div>{% if item."type" == 1 %}<p/>{% endif %}</div>`,
658
658
 
659
- 'should support the special wml:attrs attribute':
660
- `<Panel wml:attrs={{@panelAttrs}}><div wml:attrs={{divAttrs}}/></Panel>`
659
+ 'should support the special wml:attrs attribute':
660
+ `<Panel wml:attrs={{@panelAttrs}}><div wml:attrs={{divAttrs}}/></Panel>`,
661
+
662
+ 'should parse widgets with type arguments':
663
+ `<div>
664
+ <Panel[Text]>
665
+ <PanelHeader[Text] wml:id="header"/>
666
+ <PanelBody/>
667
+ </Panel>
668
+ </div>`,
669
+
670
+ 'should parse view construction with type arguments':
671
+ `<div>{{<Panel[Text](@)>}}</div>`,
672
+
661
673
 
662
674
  }
package/lib/parse/wml.y CHANGED
@@ -459,7 +459,7 @@ non_function_type
459
459
 
460
460
  | record_type
461
461
  { $$ = $1; }
462
-
462
+
463
463
  | list_type
464
464
  { $$ = $1; }
465
465
 
@@ -473,6 +473,12 @@ constructor_type
473
473
 
474
474
  | unqualified_constructor type_parameters
475
475
  { $$ = new yy.ast.ConstructorType($1, $2, @$); }
476
+
477
+ | qualified_constructor
478
+ { $$ = new yy.ast.ConstructorType($1, [], @$); }
479
+
480
+ | qualified_constructor type_parameters
481
+ { $$ = new yy.ast.ConstructorType($1, $2, @$); }
476
482
  ;
477
483
 
478
484
  record_type
@@ -613,17 +619,21 @@ node
613
619
  ;
614
620
 
615
621
  widget
616
- : '<' cons attributes '>' children? '</' cons '>'
617
- {$$ = new yy.ast.Widget($2, $3, $5||[], $7, @$);}
622
+ : '<' widget_constructor attributes '>' children? '</' cons '>'
623
+ {$$ = new yy.ast.Widget($2[0], $2[1], $3, $5||[], $7, @$);}
624
+
625
+ | '<' widget_constructor '>' children? '</' cons '>'
626
+ {$$ = new yy.ast.Widget($2[0], $2[1], [], $4||[], $6, @$);}
618
627
 
619
- | '<' cons '>' children? '</' cons '>'
620
- {$$ = new yy.ast.Widget($2, [], $4||[], $6, @$);}
628
+ | '<' widget_constructor attributes '/>'
629
+ { $$ = new yy.ast.Widget($2[0], $2[1], $3, [], $2, @$); }
621
630
 
622
- | '<' cons attributes '/>'
623
- { $$ = new yy.ast.Widget($2, $3, [], $2, @$); }
631
+ | '<' widget_constructor '/>'
632
+ { $$ = new yy.ast.Widget($2[0], $2[1], [], [], $2, @$); }
633
+ ;
624
634
 
625
- | '<' cons '/>'
626
- { $$ = new yy.ast.Widget($2, [], [], $2, @$); }
635
+ widget_constructor
636
+ : cons type_arguments? {$$ = [$1, $2 || []]; }
627
637
  ;
628
638
 
629
639
  attributes
@@ -778,9 +788,6 @@ expression
778
788
  | unary_expression
779
789
  { $$ = $1; }
780
790
 
781
- | type_assertion
782
- { $$ = $1; }
783
-
784
791
  | simple_expression
785
792
  { $$ = $1; }
786
793
 
@@ -803,9 +810,15 @@ binary_expression
803
810
  | simple_expression binary_operator '(' expression ')'
804
811
  {$$ = new yy.ast.BinaryExpression($1, $2, $4, @$); }
805
812
 
813
+ | simple_expression AS type
814
+ {$$ = new yy.ast.BinaryExpression($1, $2, $3, @$); }
815
+
806
816
  | '(' expression ')' binary_operator simple_expression
807
817
  {$$ = new yy.ast.BinaryExpression($2, $4, $5, @$); }
808
818
 
819
+ | '(' expression ')' AS type
820
+ {$$ = new yy.ast.BinaryExpression($2, $4, $5, @$); }
821
+
809
822
  | '(' expression ')' binary_operator '(' expression ')'
810
823
  {$$ = new yy.ast.BinaryExpression($2, $4, $6, @$); }
811
824
  ;
@@ -824,11 +837,6 @@ unary_expression
824
837
  {$$ = new yy.ast.UnaryExpression($4, $2, @$); }
825
838
  ;
826
839
 
827
- type_assertion
828
- : '[' '*' type ']' expression
829
- {$$ = new yy.ast.TypeAssertion($3, $5, @$); }
830
- ;
831
-
832
840
  simple_expression
833
841
  : (
834
842
  construct_expression
@@ -865,11 +873,17 @@ type_arg_list
865
873
  ;
866
874
 
867
875
  construct_expression
868
- : unqualified_constructor '(' arguments ')'
869
- { $$ = new yy.ast.ConstructExpression($1, $3, @$); }
876
+ : unqualified_constructor type_arguments '(' arguments ')'
877
+ { $$ = new yy.ast.ConstructExpression($1, $2, $4, @$); }
878
+
879
+ | unqualified_constructor '(' arguments ')'
880
+ { $$ = new yy.ast.ConstructExpression($1, [], $3, @$); }
881
+
882
+ | unqualified_constructor type_arguments '(' ')'
883
+ { $$ = new yy.ast.ConstructExpression($1, $2, [], @$); }
870
884
 
871
885
  | unqualified_constructor '(' ')'
872
- { $$ = new yy.ast.ConstructExpression($1, [], @$); }
886
+ { $$ = new yy.ast.ConstructExpression($1, [], [], @$); }
873
887
  ;
874
888
 
875
889
  call_expression
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenk/wml",
3
- "version": "2.12.0",
3
+ "version": "2.13.1",
4
4
  "description": "(WML) is a DSL for describing user interfaces in web applications.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {