@cyklang/cli 0.1.2 → 0.2.0
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/build/AssetCommand.d.ts +4 -0
- package/build/AssetCommand.js +293 -0
- package/build/Cmd.d.ts +2 -1
- package/build/Cmd.js +3 -3
- package/build/DBClient.d.ts +1 -0
- package/build/DBClient.js +51 -17
- package/build/ModuleCommand.js +6 -6
- package/build/TableCommand.js +235 -45
- package/build/index.js +3 -0
- package/package.json +5 -2
- package/pgdata/entry.csv +22 -0
- package/pgdata/setting.csv +4 -0
- package/src/AssetCommand.ts +307 -0
- package/src/Cmd.ts +4 -3
- package/src/DBClient.ts +70 -31
- package/src/ModuleCommand.ts +7 -5
- package/src/TableCommand.ts +269 -56
- package/src/index.ts +3 -0
- package/test/cyklang.xsd +439 -0
- package/test/t0.output +4 -0
- package/test/t0.xml +26 -0
- package/test/t01.output +32 -0
- package/test/t01.xml +185 -0
- package/test/t02.output +10 -0
- package/test/t02.xml +88 -0
- package/test/t03.output +9 -0
- package/test/t03.xml +74 -0
- package/test/t04.output +29 -0
- package/test/t04.xml +116 -0
- package/test/t05.output +18 -0
- package/test/t05.xml +41 -0
- package/test/t06.output +4 -0
- package/test/t06.xml +16 -0
- package/test/t07.output +5 -0
- package/test/t07.xml +82 -0
- package/test/t08.output +8 -0
- package/test/t08.xml +57 -0
- package/test/t09.output +10 -0
- package/test/t09.xml +29 -0
- package/test/t10.xml +125 -0
- package/test/t11.output +3 -0
- package/test/t11.xml +25 -0
- package/test/t12.output +7 -0
- package/test/t12.xml +42 -0
- package/test/t13.xml +23 -0
- package/test/t14.output +50 -0
- package/test/t14.xml +82 -0
- package/test/t14.xsd +102 -0
- package/test/t15.xml +47 -0
- package/test/t16.output +49 -0
- package/test/t16.xml +86 -0
- package/test/t17.output +5 -0
- package/test/t17.xml +21 -0
- package/test/t18.output +22 -0
- package/test/t18.xml +59 -0
- package/test/t19.xml +234 -0
- package/test/t20.xml +15 -0
- package/test/t21.output +21 -0
- package/test/t21.xml +71 -0
- package/test/t22.xml +23 -0
- package/test/t23.xml +44 -0
- package/test/t24.xml +10 -0
- package/test/test.json +113 -0
package/test/t01.xml
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
|
|
4
|
+
<type name="prestation">
|
|
5
|
+
<number name="id"/>
|
|
6
|
+
<string name="libelle"/>
|
|
7
|
+
</type>
|
|
8
|
+
<type name="dossier">
|
|
9
|
+
<number name="id" />
|
|
10
|
+
<string name="libelle" />
|
|
11
|
+
<object type="prestation" name="prestation" />
|
|
12
|
+
</type>
|
|
13
|
+
<type name="dossier_remorquage" base="dossier">
|
|
14
|
+
<string name="lieu" />
|
|
15
|
+
</type>
|
|
16
|
+
|
|
17
|
+
<function name="add" returns="c: number">
|
|
18
|
+
<number name="a" />
|
|
19
|
+
<number name="b"/>
|
|
20
|
+
<block>
|
|
21
|
+
<print>"*** Function add BEGIN" + a</print>
|
|
22
|
+
<let name="c">a + b</let>
|
|
23
|
+
<print>"**** Function add output c =" + c</print>
|
|
24
|
+
</block>
|
|
25
|
+
</function>
|
|
26
|
+
<function name="fact" returns="result: number">
|
|
27
|
+
<number name="N"/>
|
|
28
|
+
<block>
|
|
29
|
+
<if>
|
|
30
|
+
<condition><![CDATA[ N <= 0]]></condition>
|
|
31
|
+
<then>
|
|
32
|
+
<let name="result">1</let>
|
|
33
|
+
</then>
|
|
34
|
+
<else>
|
|
35
|
+
<number name="fact1">1</number>
|
|
36
|
+
<call function="fact" returns="fact1">
|
|
37
|
+
<number name="N">N - 1</number>
|
|
38
|
+
</call>
|
|
39
|
+
<let name="result">N * fact1</let>
|
|
40
|
+
</else>
|
|
41
|
+
</if>
|
|
42
|
+
</block>
|
|
43
|
+
</function>
|
|
44
|
+
<object type="dossier" name="dos1">
|
|
45
|
+
<number name="id">1</number>
|
|
46
|
+
<string name="libelle">"Dossier DUPONT"</string>
|
|
47
|
+
</object>
|
|
48
|
+
<!-- <let name="dos1.id">1</let>
|
|
49
|
+
<let name="dos1.libelle">"DUPONT"</let> -->
|
|
50
|
+
<print>"******* Mon nom est " + dos1.libelle + " id " + dos1.id</print>
|
|
51
|
+
<object type="dossier_remorquage" name="dos2">
|
|
52
|
+
<number name="id">2</number>
|
|
53
|
+
</object>
|
|
54
|
+
<let name="dos2.libelle">"DURAND"</let>
|
|
55
|
+
<let name="dos2.lieu">"Saint-Denis"</let>
|
|
56
|
+
<print>"Dossier remorquage : " + dos2.libelle + " lieu " + dos2.lieu</print>
|
|
57
|
+
<!-- <let name="dos1.lieu">"toto"</let> -->
|
|
58
|
+
<if>
|
|
59
|
+
<condition><![CDATA[ dos1.id == 2 ]]></condition>
|
|
60
|
+
<then>
|
|
61
|
+
<print>"then de dos1.id == 1"</print>
|
|
62
|
+
</then>
|
|
63
|
+
<condition>dos2.libelle == "DURAND"</condition>
|
|
64
|
+
<then>
|
|
65
|
+
<print>"then dos2.libelle == DURAND"</print>
|
|
66
|
+
</then>
|
|
67
|
+
<else>
|
|
68
|
+
<print>"CASE else"</print>
|
|
69
|
+
</else>
|
|
70
|
+
</if>
|
|
71
|
+
<block>
|
|
72
|
+
<print>"Nested block dos1.id " + dos1.id </print>
|
|
73
|
+
</block>
|
|
74
|
+
<number name="result"/>
|
|
75
|
+
<call function="add" returns="result">
|
|
76
|
+
<number name="a">150</number>
|
|
77
|
+
<number name="b">300</number>
|
|
78
|
+
</call>
|
|
79
|
+
<print>"Result 150 + 300 : " + result</print>
|
|
80
|
+
<let name="result">add(1000,2000)</let>
|
|
81
|
+
<print>"Result 1000 + 2000 : " + result</print>
|
|
82
|
+
<number name="N"> 4 </number>
|
|
83
|
+
|
|
84
|
+
<print>"Before fact of " + N</print>
|
|
85
|
+
<call function="fact" returns="result">
|
|
86
|
+
<number name="N">N</number>
|
|
87
|
+
</call>
|
|
88
|
+
<print>"factorielle de " + N + " = " + result</print>
|
|
89
|
+
<print>"factorielle de 5 : " + fact(5)</print>
|
|
90
|
+
<object type="prestation" name="pst1">
|
|
91
|
+
<number name="id">100</number>
|
|
92
|
+
<string name="libelle">"Prestation 1"</string>
|
|
93
|
+
</object>
|
|
94
|
+
<object type="prestation" name="pst2">
|
|
95
|
+
</object>
|
|
96
|
+
|
|
97
|
+
<print>"PST1 id="+pst1.id +" libelle="+pst1.libelle</print>
|
|
98
|
+
<let name="pst2">pst1</let>
|
|
99
|
+
<let name="pst2.libelle">"Prestation 2"</let>
|
|
100
|
+
<print>"PST2 id="+pst2.id +" libelle="+pst2.libelle</print>
|
|
101
|
+
<print>"PST1 id="+pst1.id +" libelle="+pst1.libelle</print>
|
|
102
|
+
<let name="dos1.prestation">pst1</let>
|
|
103
|
+
<print>"dos1.prestation.libelle = "+dos1.prestation.libelle</print>
|
|
104
|
+
|
|
105
|
+
<object name="numbers">
|
|
106
|
+
<number>150</number>
|
|
107
|
+
<number>50</number>
|
|
108
|
+
</object>
|
|
109
|
+
<call object="numbers" method="push">
|
|
110
|
+
<number>10</number>
|
|
111
|
+
</call>
|
|
112
|
+
<number name="total">0</number>
|
|
113
|
+
<call object="numbers" method="foreach">
|
|
114
|
+
<function>
|
|
115
|
+
<number name="n"/>
|
|
116
|
+
<block>
|
|
117
|
+
<print>"sum " + n</print>
|
|
118
|
+
<let name="total">total + n</let>
|
|
119
|
+
</block>
|
|
120
|
+
</function>
|
|
121
|
+
</call>
|
|
122
|
+
<print>"sum = "+total</print>
|
|
123
|
+
<object name="double" />
|
|
124
|
+
<call object="numbers" method="foreach">
|
|
125
|
+
<function>
|
|
126
|
+
<number name="n"/>
|
|
127
|
+
<block>
|
|
128
|
+
<call object="double" method="push">
|
|
129
|
+
<number>2*n</number>
|
|
130
|
+
</call>
|
|
131
|
+
</block>
|
|
132
|
+
</function>
|
|
133
|
+
</call>
|
|
134
|
+
<let name="total">0</let>
|
|
135
|
+
<print>"dump double[]"</print>
|
|
136
|
+
<call object="double" method="foreach">
|
|
137
|
+
<function>
|
|
138
|
+
<number name="n"/>
|
|
139
|
+
<block>
|
|
140
|
+
<print>"double[] element : " + n</print>
|
|
141
|
+
<let name="total">total + n</let>
|
|
142
|
+
</block>
|
|
143
|
+
</function>
|
|
144
|
+
</call>
|
|
145
|
+
<print>"sum = "+total</print>
|
|
146
|
+
<!--
|
|
147
|
+
<array name="tabnum" type="number">
|
|
148
|
+
<number>150</number>
|
|
149
|
+
<number>50</number>
|
|
150
|
+
</array>
|
|
151
|
+
|
|
152
|
+
<foreach array="tabnum" element="num">
|
|
153
|
+
<print>num</print>
|
|
154
|
+
<let name="total">total + element</let>
|
|
155
|
+
</foreach>
|
|
156
|
+
<print>"total du tableau = "+total</print> -->
|
|
157
|
+
|
|
158
|
+
<object type="dossier" name="dos3">
|
|
159
|
+
<number name="id">300</number>
|
|
160
|
+
<string name="libelle">"dossier 300"</string>
|
|
161
|
+
</object>
|
|
162
|
+
|
|
163
|
+
<print>"dos3 " + dos3.id + " " + dos3.libelle</print>
|
|
164
|
+
|
|
165
|
+
<string name="xml" literal=""><![CDATA[
|
|
166
|
+
<number name="id">1000</number>
|
|
167
|
+
<string name="libelle">"libellé dossier"</string>
|
|
168
|
+
]]>
|
|
169
|
+
</string>
|
|
170
|
+
<object type="dossier" name="dos_object">
|
|
171
|
+
object(xml, "dossier")
|
|
172
|
+
</object>
|
|
173
|
+
<print>string(dos_object)</print>
|
|
174
|
+
|
|
175
|
+
<print>"Vidage de l'object pst1 :"</print>
|
|
176
|
+
<call object="pst1" method="foreach">
|
|
177
|
+
<function>
|
|
178
|
+
<string name="varvalue"/>
|
|
179
|
+
<string name="varname"/>
|
|
180
|
+
<block>
|
|
181
|
+
<print>"name "+varname+ ", value "+varvalue</print>
|
|
182
|
+
</block>
|
|
183
|
+
</function>
|
|
184
|
+
</call>
|
|
185
|
+
</module>
|
package/test/t02.output
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
dossier 3 Dossier 3
|
|
2
|
+
*** Function add BEGIN 100
|
|
3
|
+
**** Function add output c = 300
|
|
4
|
+
printed by function before of resume dos1
|
|
5
|
+
RESUME OF dos1 : label Label dos1, Dossier ID 1 Libellé Dossier 1 qty 110
|
|
6
|
+
printed by function before of resume dos 2
|
|
7
|
+
RESUME OF dos2 : label Label dos2, Dossier ID 2 Libellé Dossier 2 qty 200
|
|
8
|
+
dos id 1, libelle Dossier 1, qty 110
|
|
9
|
+
dos id 2, libelle Dossier 2, qty 200
|
|
10
|
+
dos id 3, libelle Dossier 3, qty 330
|
package/test/t02.xml
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
<type name="dossier">
|
|
4
|
+
<number name="id" />
|
|
5
|
+
<string name="libelle" />
|
|
6
|
+
<number name="qty"/>
|
|
7
|
+
<method name="resume" returns="result:string">
|
|
8
|
+
<string name="label">"Default Label"</string>
|
|
9
|
+
<function name="before"/>
|
|
10
|
+
<block>
|
|
11
|
+
<call function="before" />
|
|
12
|
+
<let name="result">"label "+ label + ", Dossier ID "+this.id+" Libellé "+this.libelle+" qty "+this.qty</let>
|
|
13
|
+
</block>
|
|
14
|
+
</method>
|
|
15
|
+
</type>
|
|
16
|
+
|
|
17
|
+
<object type="dossier" name="dos1">
|
|
18
|
+
<number name="id">1</number>
|
|
19
|
+
<string name="libelle">"Dossier 1"</string>
|
|
20
|
+
<number name="qty"> 110 </number>
|
|
21
|
+
</object>
|
|
22
|
+
<object type="dossier" name="dos2">
|
|
23
|
+
<number name="id">2</number>
|
|
24
|
+
<string name="libelle">"Dossier 2"</string>
|
|
25
|
+
<number name="qty">200</number>
|
|
26
|
+
</object>
|
|
27
|
+
<object type="dossier" name="dos3">
|
|
28
|
+
<number name="id">3</number>
|
|
29
|
+
<string name="libelle">"Dossier 3"</string>
|
|
30
|
+
<number name="qty"> 330 </number>
|
|
31
|
+
</object>
|
|
32
|
+
|
|
33
|
+
<print>"dossier 3 "+dos3.libelle</print>
|
|
34
|
+
|
|
35
|
+
<function name="add" returns="c: number">
|
|
36
|
+
<number name="a" />
|
|
37
|
+
<number name="b"/>
|
|
38
|
+
<block>
|
|
39
|
+
<print>"*** Function add BEGIN " + a</print>
|
|
40
|
+
<set name="c">a + b</set>
|
|
41
|
+
<print>"**** Function add output c = " + c</print>
|
|
42
|
+
</block>
|
|
43
|
+
</function>
|
|
44
|
+
|
|
45
|
+
<number name='addition'></number>
|
|
46
|
+
<call function='add' returns="result">
|
|
47
|
+
<number name="a">100</number>
|
|
48
|
+
<number name='b'>200</number>
|
|
49
|
+
</call>
|
|
50
|
+
|
|
51
|
+
<string name="resume"/>
|
|
52
|
+
<call object="dos1" method="resume" returns="resume">
|
|
53
|
+
<string name="label">"Label dos1"</string>
|
|
54
|
+
<function name="before">
|
|
55
|
+
<block>
|
|
56
|
+
<print>"printed by function before of resume dos1"</print>
|
|
57
|
+
</block>
|
|
58
|
+
</function>
|
|
59
|
+
</call>
|
|
60
|
+
<print>"RESUME OF dos1 : "+resume</print>
|
|
61
|
+
<call object="dos2" method="resume" returns="resume">
|
|
62
|
+
<string name="label">"Label dos2"</string>
|
|
63
|
+
<function name="before">
|
|
64
|
+
<block>
|
|
65
|
+
<print>"printed by function before of resume dos 2"</print>
|
|
66
|
+
</block>
|
|
67
|
+
</function>
|
|
68
|
+
</call>
|
|
69
|
+
<print>"RESUME OF dos2 : "+resume</print>
|
|
70
|
+
|
|
71
|
+
<call object="dos2" method="push">
|
|
72
|
+
<string>"this is a comment"</string>
|
|
73
|
+
</call>
|
|
74
|
+
<object name="list">
|
|
75
|
+
<object type="dossier">dos1</object>
|
|
76
|
+
<object type="dossier">dos2</object>
|
|
77
|
+
<object type="dossier">dos3</object>
|
|
78
|
+
</object>
|
|
79
|
+
<call object="list" method="foreach">
|
|
80
|
+
<function>
|
|
81
|
+
<object type="dossier" name="dos"></object>
|
|
82
|
+
<block>
|
|
83
|
+
<print>"dos id "+dos.id + ", libelle "+dos.libelle + ", qty "+dos.qty</print>
|
|
84
|
+
</block>
|
|
85
|
+
</function>
|
|
86
|
+
</call>
|
|
87
|
+
|
|
88
|
+
</module>
|
package/test/t03.output
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
my car has an autonomy of 666.6666666666667 kms CV584MK
|
|
2
|
+
your car has an autonomy of 476.1904761904762 km DX643ME
|
|
3
|
+
add result = 3000
|
|
4
|
+
add expression = 7000
|
|
5
|
+
mycar autonomy is 666.6666666666667
|
|
6
|
+
yourcar autonomy is 476.1904761904762
|
|
7
|
+
Two cars autonomy result = 1142.857142857143 km
|
|
8
|
+
Two cars autonomy : 1142.857142857143 km
|
|
9
|
+
FINI
|
package/test/t03.xml
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
<type name="vehicle">
|
|
4
|
+
<string name="carplatenumber"/>
|
|
5
|
+
<method name="getAutonomy" returns="autonomy:number">
|
|
6
|
+
</method>
|
|
7
|
+
</type>
|
|
8
|
+
<type name="oilcar" base="vehicle">
|
|
9
|
+
<number name="tankcapacity" />
|
|
10
|
+
<number name="l100"/>
|
|
11
|
+
<method name="getAutonomy" returns="autonomy:number">
|
|
12
|
+
<block>
|
|
13
|
+
<let name="autonomy">100 * (this.tankcapacity / this.l100)</let>
|
|
14
|
+
</block>
|
|
15
|
+
</method>
|
|
16
|
+
</type>
|
|
17
|
+
<type name="evcar" base="vehicle">
|
|
18
|
+
<number name="batterycapacity"/>
|
|
19
|
+
<number name="conspkm"/>
|
|
20
|
+
<method name="getAutonomy" returns="autonomy:number">
|
|
21
|
+
<block>
|
|
22
|
+
<let name="autonomy">this.batterycapacity / this.conspkm</let>
|
|
23
|
+
</block>
|
|
24
|
+
</method>
|
|
25
|
+
</type>
|
|
26
|
+
<object type="oilcar" name="mycar">
|
|
27
|
+
<string name="carplatenumber">"CV584MK"</string>
|
|
28
|
+
<number name="tankcapacity">60</number>
|
|
29
|
+
<number name="l100">9</number>
|
|
30
|
+
</object>
|
|
31
|
+
<object type="evcar" name="yourcar">
|
|
32
|
+
<string name="carplatenumber">"DX643ME"</string>
|
|
33
|
+
<number name="batterycapacity">150</number>
|
|
34
|
+
<number name="conspkm">0.315</number>
|
|
35
|
+
</object>
|
|
36
|
+
<number name="mycarautonomy"/>
|
|
37
|
+
<call object="mycar" method="getAutonomy" returns="mycarautonomy" />
|
|
38
|
+
<print>"my car has an autonomy of "+ mycarautonomy + " kms "+ mycar.carplatenumber</print>
|
|
39
|
+
<number name="yourcarautonomy"/>
|
|
40
|
+
<call object="yourcar" method="getAutonomy" returns="yourcarautonomy"/>
|
|
41
|
+
<print>"your car has an autonomy of "+ yourcarautonomy + " km "+ yourcar.carplatenumber</print>
|
|
42
|
+
<function name="add" returns="result:number">
|
|
43
|
+
<number name="a"/>
|
|
44
|
+
<number name="b"/>
|
|
45
|
+
<block>
|
|
46
|
+
<let name="result">a + b</let>
|
|
47
|
+
</block>
|
|
48
|
+
</function>
|
|
49
|
+
<number name="result"/>
|
|
50
|
+
<call function="add" returns="result">
|
|
51
|
+
<number name="a">1000</number>
|
|
52
|
+
<number name="b">2000</number>
|
|
53
|
+
</call>
|
|
54
|
+
<print>"add result = "+result</print>
|
|
55
|
+
<print>"add expression = "+add(3000,4000)</print>
|
|
56
|
+
<print>"mycar autonomy is "+ mycar.getAutonomy()</print>
|
|
57
|
+
<print>"yourcar autonomy is "+yourcar.getAutonomy()</print>
|
|
58
|
+
<function name="sumvh" returns="result:number">
|
|
59
|
+
<object type="vehicle" name="vh1" />
|
|
60
|
+
<object type="vehicle" name="vh2" />
|
|
61
|
+
<block>
|
|
62
|
+
<let name="result">vh1.getAutonomy()+vh2.getAutonomy()</let>
|
|
63
|
+
</block>
|
|
64
|
+
</function>
|
|
65
|
+
<call function="sumvh" returns="result">
|
|
66
|
+
<object type="vehicle" name="vh1">mycar</object>
|
|
67
|
+
<object type="vehicle" name="vh2">yourcar</object>
|
|
68
|
+
</call>
|
|
69
|
+
<print>"Two cars autonomy result = " +result + " km"</print>
|
|
70
|
+
<print>"Two cars autonomy : " +sumvh(mycar,yourcar) + " km"</print>
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
<print>"FINI"</print>
|
|
74
|
+
</module>
|
package/test/t04.output
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
ms = 200
|
|
2
|
+
AVANT
|
|
3
|
+
APRES
|
|
4
|
+
result = 200
|
|
5
|
+
x et y sont positifs
|
|
6
|
+
ms = 100
|
|
7
|
+
AVANT
|
|
8
|
+
APRES
|
|
9
|
+
length('1234') = 4
|
|
10
|
+
length(undefined) = undefined
|
|
11
|
+
counter_next('JANV-010') = JANV-011
|
|
12
|
+
counter_next('March-999') = March-1000
|
|
13
|
+
counter_next('April-909') = April-910
|
|
14
|
+
counter_next('Février') = Février1
|
|
15
|
+
counter_next(undefined) = undefined
|
|
16
|
+
padend('1',3,'0') = 100
|
|
17
|
+
substring('abc',0,1) = a
|
|
18
|
+
substring('abc',0,0) =
|
|
19
|
+
quote : 'L\'abondance'
|
|
20
|
+
quote undefined : undefined
|
|
21
|
+
quote null : undefined
|
|
22
|
+
<object name="1963-11-04">
|
|
23
|
+
<string name="date" literal="">1963-11-04</string>
|
|
24
|
+
<string name="surname" literal="">philippe</string>
|
|
25
|
+
</object>
|
|
26
|
+
philippe
|
|
27
|
+
list.get(10).surname = Surname10
|
|
28
|
+
test OK of varobj == undefined
|
|
29
|
+
varstring == undefined
|
package/test/t04.xml
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
<function name="wait" returns="result: number">
|
|
4
|
+
<number name="ms">100</number>
|
|
5
|
+
<block>
|
|
6
|
+
<print>"ms = "+ms</print>
|
|
7
|
+
<print> "AVANT" </print>
|
|
8
|
+
<sleep> ms </sleep>
|
|
9
|
+
<print> "APRES" </print>
|
|
10
|
+
<let name="result">ms</let>
|
|
11
|
+
</block>
|
|
12
|
+
</function>
|
|
13
|
+
<number name="result"></number>
|
|
14
|
+
<let name="result">wait(200)</let>
|
|
15
|
+
<print>"result = " + result </print>
|
|
16
|
+
<number name="x">10</number>
|
|
17
|
+
<number name="y">20</number>
|
|
18
|
+
<if>
|
|
19
|
+
<condition><![CDATA[ x > 0 && y > 0]]></condition>
|
|
20
|
+
<then>
|
|
21
|
+
<print> "x et y sont positifs" </print>
|
|
22
|
+
</then>
|
|
23
|
+
</if>
|
|
24
|
+
<call function="wait">
|
|
25
|
+
</call>
|
|
26
|
+
|
|
27
|
+
<!--
|
|
28
|
+
function counter_next
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
<function name="counter_next" returns="result: string">
|
|
32
|
+
<string name="counter"/>
|
|
33
|
+
<block>
|
|
34
|
+
<if>
|
|
35
|
+
<condition>counter == undefined</condition>
|
|
36
|
+
<then>
|
|
37
|
+
<break/>
|
|
38
|
+
</then>
|
|
39
|
+
</if>
|
|
40
|
+
<number name="prefix_end">length(counter)</number>
|
|
41
|
+
<while>
|
|
42
|
+
<condition><![CDATA[ prefix_end > 0 && substring(counter,prefix_end - 1,prefix_end) >= '0' && substring(counter,prefix_end - 1,prefix_end) <= '9' ]]></condition>
|
|
43
|
+
<then>
|
|
44
|
+
<set name="prefix_end">prefix_end - 1</set>
|
|
45
|
+
</then>
|
|
46
|
+
</while>
|
|
47
|
+
<number name="current">0</number>
|
|
48
|
+
<if>
|
|
49
|
+
<condition><![CDATA[ prefix_end < length(counter) ]]></condition>
|
|
50
|
+
<then>
|
|
51
|
+
<set name="current">number(substring(counter,prefix_end))</set>
|
|
52
|
+
</then>
|
|
53
|
+
</if>
|
|
54
|
+
<set name="current">current + 1</set>
|
|
55
|
+
<set name="result">substring(counter,0,prefix_end) + padstart(string(current),length(counter)-prefix_end,'0')</set>
|
|
56
|
+
</block>
|
|
57
|
+
</function>
|
|
58
|
+
|
|
59
|
+
<print>"length('1234') = "+length('1234')</print>
|
|
60
|
+
<print>"length(undefined) = "+length(undefined)</print>
|
|
61
|
+
<print>"counter_next('JANV-010') = " + counter_next('JANV-010')</print>
|
|
62
|
+
<print>"counter_next('March-999') = " + counter_next('March-999')</print>
|
|
63
|
+
<print>"counter_next('April-909') = " + counter_next('April-909')</print>
|
|
64
|
+
<print>"counter_next('Février') = " + counter_next('Février')</print>
|
|
65
|
+
<print>"counter_next(undefined) = " + counter_next(undefined)</print>
|
|
66
|
+
<print>"padend('1',3,'0') = " + padend('1',3,'0')</print>
|
|
67
|
+
<datetime name="debut">now()</datetime>
|
|
68
|
+
<!-- <print>number(debut)</print> -->
|
|
69
|
+
<print>"substring('abc',0,1) = "+substring('abc',0,1)</print>
|
|
70
|
+
<print>"substring('abc',0,0) = "+substring('abc',0,0)</print>
|
|
71
|
+
<string name="q" literal="">L'abondance</string>
|
|
72
|
+
<print>"quote : " + quote(q)</print>
|
|
73
|
+
<print>"quote undefined : " + quote(undefined)</print>
|
|
74
|
+
<print>"quote null : " + quote(null)</print>
|
|
75
|
+
|
|
76
|
+
<object name="list"/>
|
|
77
|
+
<call object="list" method="pushnamevariable">
|
|
78
|
+
<string name="name">"1963-11-04"</string>
|
|
79
|
+
<object name="variable">
|
|
80
|
+
<string name="date">"1963-11-04"</string>
|
|
81
|
+
<string name="surname">"philippe"</string>
|
|
82
|
+
</object>
|
|
83
|
+
</call>
|
|
84
|
+
<print>string(list)</print>
|
|
85
|
+
<print>list.get("1963-11-04").surname</print>
|
|
86
|
+
<call object="list" method="push">
|
|
87
|
+
<object name="10">
|
|
88
|
+
<string name="date">"10"</string>
|
|
89
|
+
<string name="surname">"Surname10"</string>
|
|
90
|
+
</object>
|
|
91
|
+
</call>
|
|
92
|
+
<print>"list.get(10).surname = " + list.get(10).surname</print>
|
|
93
|
+
|
|
94
|
+
<object name="varobj">undefined</object>
|
|
95
|
+
<if>
|
|
96
|
+
<condition>varobj == undefined</condition>
|
|
97
|
+
<then>
|
|
98
|
+
<print>"test OK of varobj == undefined"</print>
|
|
99
|
+
</then>
|
|
100
|
+
<else>
|
|
101
|
+
<print>"TEST KO OF VAROBJ AND UNDEFINED"</print>
|
|
102
|
+
</else>
|
|
103
|
+
</if>
|
|
104
|
+
|
|
105
|
+
<string name="varstring"/>
|
|
106
|
+
<if>
|
|
107
|
+
<condition>varstring == undefined</condition>
|
|
108
|
+
<then>
|
|
109
|
+
<print>"varstring == undefined"</print>
|
|
110
|
+
</then>
|
|
111
|
+
<else>
|
|
112
|
+
<print>"varstring = " + varstring + ", length(varstring) = " + length(varstring)</print>
|
|
113
|
+
</else>
|
|
114
|
+
</if>
|
|
115
|
+
|
|
116
|
+
</module>
|
package/test/t05.output
ADDED
package/test/t05.xml
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
<number name='ind'>0</number>
|
|
4
|
+
<loop>
|
|
5
|
+
<let name='ind'>ind + 1</let>
|
|
6
|
+
<break>ind > 5</break>
|
|
7
|
+
<print>'ind='+ind</print>
|
|
8
|
+
</loop>
|
|
9
|
+
|
|
10
|
+
<let name='ind'>0</let>
|
|
11
|
+
<loop>
|
|
12
|
+
<let name='ind'>ind + 1</let>
|
|
13
|
+
<if>
|
|
14
|
+
<condition>ind > 5</condition>
|
|
15
|
+
<then> <break/> </then>
|
|
16
|
+
</if>
|
|
17
|
+
<print>'ind='+ind</print>
|
|
18
|
+
</loop>
|
|
19
|
+
|
|
20
|
+
<let name='ind'>0</let>
|
|
21
|
+
<loop>
|
|
22
|
+
<let name='ind'>ind + 1</let>
|
|
23
|
+
<break>ind > 5</break>
|
|
24
|
+
<continue>ind == 3</continue>
|
|
25
|
+
<print>'ind='+ind</print>
|
|
26
|
+
</loop>
|
|
27
|
+
|
|
28
|
+
<let name='ind'>0</let>
|
|
29
|
+
<loop>
|
|
30
|
+
<let name='ind'>ind + 1</let>
|
|
31
|
+
<if>
|
|
32
|
+
<condition>ind > 5</condition>
|
|
33
|
+
<then> <break/> </then>
|
|
34
|
+
</if>
|
|
35
|
+
<if>
|
|
36
|
+
<condition>ind == 3</condition>
|
|
37
|
+
<then> <continue/> </then>
|
|
38
|
+
</if>
|
|
39
|
+
<print>'ind='+ind</print>
|
|
40
|
+
</loop>
|
|
41
|
+
</module>
|
package/test/t06.output
ADDED
package/test/t06.xml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml-model href="cyklang.xsd" ?>
|
|
2
|
+
<module>
|
|
3
|
+
<function name="wait" returns="result: number">
|
|
4
|
+
<number name="ms"/>
|
|
5
|
+
<block>
|
|
6
|
+
<sleep>ms</sleep>
|
|
7
|
+
<let name="result">ms</let>
|
|
8
|
+
</block>
|
|
9
|
+
</function>
|
|
10
|
+
<print>"DEBUT"</print>
|
|
11
|
+
<number name="v1">wait(1000) </number>
|
|
12
|
+
<print>"v1 = "+v1</print>
|
|
13
|
+
<number name="v2">wait(2000)</number>
|
|
14
|
+
<print>"v2 = "+v2</print>
|
|
15
|
+
<print>"FIN"</print>
|
|
16
|
+
</module>
|