0
|
1 |
include yslt.yml2
|
|
2 |
|
|
3 |
define operator "“(.*?)”" as call "idl2ddl" with "type", "%1";
|
|
4 |
|
|
5 |
tstylesheet {
|
|
6 |
const "idtype", "'INTEGER'";
|
|
7 |
|
|
8 |
template "/" apply "module|class", 0;
|
|
9 |
|
|
10 |
template "module" {
|
|
11 |
param "namespace", "''";
|
|
12 |
choose {
|
|
13 |
when "$namespace=''"
|
|
14 |
apply "module|class", 0 with "namespace", "@name";
|
|
15 |
otherwise
|
|
16 |
apply "module|class", 0 with "namespace", "concat($namespace,'_', @name)";
|
|
17 |
}
|
|
18 |
}
|
|
19 |
|
|
20 |
template "class" {
|
|
21 |
param "namespace", "''";
|
|
22 |
|
|
23 |
choose {
|
|
24 |
when "$namespace=''" | CREATE TABLE «@name» (
|
|
25 |
otherwise | CREATE TABLE «$namespace»_«@name» (
|
|
26 |
}
|
|
27 |
|
|
28 |
if "count(attr[@name='id'])=0" |> id «$idtype»`if "count(attr)>0" > , `
|
|
29 |
|
|
30 |
const "name", "@name";
|
|
31 |
foreach "//class[class/@name=$name]" |> «@name»_fk «$idtype»,
|
|
32 |
|
|
33 |
apply "attr";
|
|
34 |
|
|
35 |
| );
|
|
36 |
|
|
37 |
apply "class", 0 with "namespace", "$namespace";
|
|
38 |
}
|
|
39 |
|
|
40 |
template "attr" | «@name» “@type”`if "position() != last()" > , `
|
|
41 |
|
|
42 |
function "idl2ddl" {
|
|
43 |
param "type";
|
|
44 |
|
|
45 |
choose {
|
|
46 |
when "$type='string'" > VARCHAR
|
|
47 |
when "$type='long'" > INTEGER
|
|
48 |
}
|
|
49 |
}
|
|
50 |
}
|