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
// Inherit, macro: new_child_parse
// -------------------------------
// Inheritance is implemented with this macro. It is also used for the inheritance
// of the application itself.
//
//
// Block level scope example:
// {:code; <--------------------------.
// {:* block *:} |<---- Block
// {:param; name >> value :} <----|----- Set "name" for this block and its children
// {:param; name :} <-------------|----- "name" has the value "value".
// {:code; |
// {:* child block *:} |
// {:param; name :} <---------|----- "name" has the value "value".
// :} |
// :} <-------------------------------ยท
// {:param; name :} <----------------------- outside block, no value or a previous value if any.
//
//
// "include" has a block scope, then:
// {:code;
// {:* include for set "snippet-name" *:}
// {:include; snippet.ntpl :}
// {:snippet; snippet-name :} {:* Ok, "snippet-name" is set *:}
// :}
// {:snippet; snippet-name :} {:* Ko, "snippet-name" is not set *:}
//
// The modifier scope (+) adds the scope to the current level to make it possible to do this:
// {:+bool; something >>
// {:include; snippet.ntpl :}
// :}
// {:snippet; snippet-name :} {:* Ok, "snippet-name" is set *:}
//