-
Notifications
You must be signed in to change notification settings - Fork 1
/
syntax.mask
112 lines (93 loc) · 1.61 KB
/
syntax.mask
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//### COMMENTS
/**
* Block comment
*/
// Income comment
//### LITERALS
// - Single
'Foo'
// - Block
"""
with quotes ""
qux
"""
// ### TAGS
// - Single
div;
// - class, id
span.foo-class #id;
// - only class, id
#id .qux;
// - attribute
input autofocus value='Foo' data-test=quoteLess
// inline comment
other = attribute;
// - single child
div > span;
// - more children
h4 {
i > 'Foo'
footer { hr; }
}
// ### Interpolations
// - in literal
'Foo: ~name ~[name] ~[bind: name] ~[name + " hello "] ~[ _.L("lokalize-util") ]'
// - in attribute
div name = '~name ~[name] ~[bind: name] ~[name + " hello "] ~[ _.L("lokalize-util") ]';
// ### STATEMENTS
if (name) {
// nodes
}
for (letter of letters) {
'~[letter]'
}
for ((letter, index) of letters) {
'~letter at ~index'
}
with (name) > '~.'
each (letters) > '~letter'
debugger;
log (user.name);
switch (state) {
case ('active') {
// nodes
}
}
// ### MODULES
import from 'foo.mask';
import * as Data from '/api/data' is json;
import async Foo, Quux from 'baz';
// ### DEFINE
define Foo as (div.span) extends Dialog, Collapser {
var name = 'MyName';
var num = 2;
var arr = [1, 2, 3];
var scope = {
name: 'one',
arr: [1, 2, false, /asd/]
};
function onRenderStart(model, ctx, container) {
console.log('model:', model);
}
slot show() {
this.model.hidden = false;
}
event submit(evt) {
evt.preventDefault();
}
}
// ### PLACEHOLDERS
define A extends B {
@body > 'IsBody'
@placeholder;
footer > @footer;
}
A {
@footer > 'Test'
}
<div> Suppots html tags within </div>
[IsAuthorized]
[WithCaption('Foo')]
div;
function private async loadUser () {
}