kwalify 0.6.1 → 0.7.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.
- data/CHANGES.txt +232 -0
- data/MIT-LICENSE +20 -0
- data/README.txt +16 -19
- data/bin/kwalify +3 -3
- data/contrib/inline-require +6 -4
- data/contrib/kwalify +3719 -2427
- data/doc-api/classes/CommandOptionError.html +17 -17
- data/doc-api/classes/CommandOptionParser.html +63 -63
- data/doc-api/classes/Kwalify.html +29 -7
- data/doc-api/classes/Kwalify/AssertionError.html +9 -9
- data/doc-api/classes/Kwalify/BaseError.html +72 -71
- data/doc-api/classes/Kwalify/BaseParser.html +461 -0
- data/doc-api/classes/Kwalify/CommandOptionError.html +11 -11
- data/doc-api/classes/Kwalify/ErrorHelper.html +51 -46
- data/doc-api/classes/Kwalify/HashInterface.html +13 -135
- data/doc-api/classes/Kwalify/Json.html +105 -0
- data/doc-api/classes/Kwalify/Main.html +129 -126
- data/doc-api/classes/Kwalify/MetaValidator.html +248 -232
- data/doc-api/classes/Kwalify/Parser.html +12 -12
- data/doc-api/classes/Kwalify/PlainYamlParser.html +166 -163
- data/doc-api/classes/Kwalify/PlainYamlParser/Alias.html +11 -11
- data/doc-api/classes/Kwalify/Rule.html +152 -130
- data/doc-api/classes/Kwalify/SchemaError.html +10 -10
- data/doc-api/classes/Kwalify/SyntaxError.html +185 -0
- data/doc-api/classes/Kwalify/Types.html +26 -25
- data/doc-api/classes/Kwalify/Util.html +389 -0
- data/doc-api/classes/Kwalify/Util/HashLike.html +246 -0
- data/doc-api/classes/Kwalify/Util/OrderedHash.html +330 -0
- data/doc-api/classes/Kwalify/ValidationError.html +10 -10
- data/doc-api/classes/Kwalify/Validator.html +153 -86
- data/doc-api/classes/Kwalify/Yaml.html +181 -0
- data/doc-api/classes/Kwalify/Yaml/Parser.html +1538 -0
- data/doc-api/classes/Kwalify/YamlParser.html +190 -183
- data/doc-api/classes/Kwalify/YamlSyntaxError.html +8 -57
- data/doc-api/created.rid +1 -1
- data/doc-api/files/__/README_txt.html +17 -22
- data/doc-api/files/kwalify/errors_rb.html +2 -2
- data/doc-api/files/kwalify/main_rb.html +4 -3
- data/doc-api/files/kwalify/messages_rb.html +2 -2
- data/doc-api/files/kwalify/meta-validator_rb.html +3 -3
- data/doc-api/files/kwalify/{util/yaml-helper_rb.html → parser/base_rb.html} +8 -6
- data/doc-api/files/kwalify/parser/yaml_rb.html +117 -0
- data/doc-api/files/kwalify/rule_rb.html +2 -2
- data/doc-api/files/kwalify/types_rb.html +2 -2
- data/doc-api/files/kwalify/util/assert-text-equal_rb.html +2 -2
- data/doc-api/files/kwalify/util/hash-interface_rb.html +9 -2
- data/doc-api/files/kwalify/util/hashlike_rb.html +107 -0
- data/doc-api/files/kwalify/util/option-parser_rb.html +2 -2
- data/doc-api/files/kwalify/util/ordered-hash_rb.html +107 -0
- data/doc-api/files/kwalify/util/testcase-helper_rb.html +2 -2
- data/doc-api/files/kwalify/util_rb.html +107 -0
- data/doc-api/files/kwalify/validator_rb.html +2 -2
- data/doc-api/files/kwalify/yaml-parser_rb.html +2 -2
- data/doc-api/files/kwalify_rb.html +3 -2
- data/doc-api/fr_class_index.html +8 -1
- data/doc-api/fr_file_index.html +5 -1
- data/doc-api/fr_method_index.html +128 -69
- data/doc/img/fig01.png +0 -0
- data/doc/users-guide.html +882 -717
- data/examples/address-book/address-book.schema.yaml +2 -2
- data/examples/data-binding/BABEL.data.yaml +63 -0
- data/examples/data-binding/BABEL.schema.yaml +31 -0
- data/examples/data-binding/Makefile +8 -0
- data/examples/data-binding/Rakefile +13 -0
- data/examples/data-binding/main.rb +27 -0
- data/examples/invoice/invoice.schema.yaml +3 -3
- data/examples/tapkit/tapkit.schema.yaml +2 -2
- data/lib/kwalify.rb +41 -4
- data/lib/kwalify/errors.rb +118 -96
- data/lib/kwalify/kwalify.schema.yaml +58 -0
- data/lib/kwalify/main.rb +384 -377
- data/lib/kwalify/messages.rb +41 -27
- data/lib/kwalify/meta-validator.rb +251 -331
- data/lib/kwalify/parser/base.rb +127 -0
- data/lib/kwalify/parser/yaml.rb +837 -0
- data/lib/kwalify/rule.rb +545 -487
- data/lib/kwalify/templates/genclass-java.eruby +189 -162
- data/lib/kwalify/templates/genclass-php.eruby +104 -0
- data/lib/kwalify/templates/genclass-ruby.eruby +95 -66
- data/lib/kwalify/types.rb +107 -106
- data/lib/kwalify/util.rb +157 -0
- data/lib/kwalify/util/assert-text-equal.rb +33 -31
- data/lib/kwalify/util/hash-interface.rb +11 -30
- data/lib/kwalify/util/hashlike.rb +51 -0
- data/lib/kwalify/util/option-parser.rb +144 -144
- data/lib/kwalify/util/ordered-hash.rb +57 -0
- data/lib/kwalify/util/testcase-helper.rb +3 -3
- data/lib/kwalify/validator.rb +267 -212
- data/lib/kwalify/yaml-parser.rb +822 -768
- data/setup.rb +861 -607
- data/test/Rookbook.yaml +10 -0
- data/test/{tmp.dir/Context.java → data/users-guide/AddressBook.java.expected} +11 -11
- data/test/data/users-guide/BABEL.data.yaml +24 -0
- data/test/data/users-guide/BABEL.schema.yaml +30 -0
- data/test/data/users-guide/ExampleAddressBook.java +47 -0
- data/test/{tmp.dir/Group.java → data/users-guide/Group.java.expected} +2 -11
- data/test/data/users-guide/Person.java.expected +44 -0
- data/test/data/users-guide/address_book.rb +52 -0
- data/test/data/users-guide/address_book.schema.yaml +28 -0
- data/test/data/users-guide/address_book.yaml +27 -0
- data/test/data/users-guide/answers-schema.yaml +12 -0
- data/test/data/users-guide/answers-validator.rb +52 -0
- data/test/data/users-guide/babel_genclass.result +26 -0
- data/test/data/users-guide/config.schema.yaml +7 -0
- data/test/data/users-guide/config.yaml +4 -0
- data/test/{tmp.dir/silent1.document → data/users-guide/document01a.yaml} +0 -0
- data/test/data/users-guide/document01b.yaml +3 -0
- data/test/data/users-guide/document02a.yaml +4 -0
- data/test/data/users-guide/document02b.yaml +4 -0
- data/test/data/users-guide/document03a.yaml +6 -0
- data/test/data/users-guide/document03b.yaml +6 -0
- data/test/data/users-guide/document04a.yaml +9 -0
- data/test/data/users-guide/document04b.yaml +9 -0
- data/test/data/users-guide/document05a.yaml +11 -0
- data/test/data/users-guide/document05b.yaml +12 -0
- data/test/data/users-guide/document06a.yaml +15 -0
- data/test/data/users-guide/document06b.yaml +16 -0
- data/test/data/users-guide/document07a.yaml +9 -0
- data/test/data/users-guide/document07b.yaml +7 -0
- data/test/data/users-guide/document12a.json +10 -0
- data/test/data/users-guide/document12b.json +6 -0
- data/test/data/users-guide/document13a.yaml +17 -0
- data/test/data/users-guide/document14a.yaml +3 -0
- data/test/data/users-guide/document14b.yaml +3 -0
- data/test/data/users-guide/document15a.yaml +6 -0
- data/test/data/users-guide/document15b.yaml +5 -0
- data/test/data/users-guide/example_address_book.rb +10 -0
- data/test/data/users-guide/example_address_book_java.result +32 -0
- data/test/data/users-guide/example_address_book_ruby.result +31 -0
- data/test/data/users-guide/genclass_java.result +4 -0
- data/test/data/users-guide/howto-validation-with-parsing.rb +28 -0
- data/test/data/users-guide/howto-validation.rb +25 -0
- data/test/data/users-guide/howto3.rb +6 -0
- data/test/data/users-guide/howto3.result +5 -0
- data/test/data/users-guide/howto3.yaml +8 -0
- data/test/data/users-guide/howto5_databinding.result +111 -0
- data/test/data/users-guide/invalid01.result +3 -0
- data/test/data/users-guide/invalid02.result +5 -0
- data/test/data/users-guide/invalid03.result +5 -0
- data/test/data/users-guide/invalid04.result +4 -0
- data/test/data/users-guide/invalid05.result +11 -0
- data/test/data/users-guide/invalid06.result +4 -0
- data/test/data/users-guide/invalid07.result +3 -0
- data/test/data/users-guide/invalid08.result +3 -0
- data/test/data/users-guide/invalid12.json +8 -0
- data/test/data/users-guide/invalid14.result +4 -0
- data/test/data/users-guide/invalid15.result +4 -0
- data/test/data/users-guide/loadbabel.rb +27 -0
- data/test/data/users-guide/loadconfig.rb +15 -0
- data/test/data/users-guide/loadconfig.result +2 -0
- data/test/data/users-guide/models.rb +22 -0
- data/test/data/users-guide/option_ha.result +6 -0
- data/test/data/users-guide/option_ha_genclass_java.result +7 -0
- data/test/{tmp.dir/meta1.schema → data/users-guide/schema01.yaml} +0 -0
- data/test/data/users-guide/schema02.yaml +12 -0
- data/test/data/users-guide/schema03.yaml +9 -0
- data/test/data/users-guide/schema04.yaml +20 -0
- data/test/data/users-guide/schema05.yaml +29 -0
- data/test/data/users-guide/schema06.yaml +11 -0
- data/test/data/users-guide/schema12.json +12 -0
- data/test/data/users-guide/schema13.yaml +13 -0
- data/test/data/users-guide/schema14.yaml +5 -0
- data/test/data/users-guide/schema15.yaml +21 -0
- data/test/data/users-guide/valid01.result +2 -0
- data/test/data/users-guide/valid02.result +2 -0
- data/test/data/users-guide/valid03.result +2 -0
- data/test/data/users-guide/valid04.result +2 -0
- data/test/data/users-guide/valid05.result +2 -0
- data/test/data/users-guide/valid06.result +2 -0
- data/test/data/users-guide/valid07.result +2 -0
- data/test/data/users-guide/valid08.result +2 -0
- data/test/data/users-guide/valid12.result +2 -0
- data/test/data/users-guide/valid13.result +2 -0
- data/test/data/users-guide/valid14.result +2 -0
- data/test/data/users-guide/valid15.result +2 -0
- data/test/data/users-guide/validate08.rb +37 -0
- data/test/test-action.rb +78 -0
- data/test/test-action.yaml +738 -0
- data/test/test-databinding.rb +80 -0
- data/test/test-databinding.yaml +301 -0
- data/test/test-main.rb +129 -150
- data/test/test-main.yaml +126 -321
- data/test/test-metavalidator.rb +47 -47
- data/test/test-metavalidator.yaml +77 -21
- data/test/test-parser-yaml.rb +57 -0
- data/test/test-parser-yaml.yaml +1749 -0
- data/test/test-rule.rb +14 -15
- data/test/test-rule.yaml +6 -3
- data/test/test-users-guide.rb +75 -0
- data/test/test-validator.rb +77 -52
- data/test/test-validator.yaml +168 -6
- data/test/test-yaml-parser.rb +47 -0
- data/test/{test-yamlparser.yaml → test-yaml-parser.yaml} +159 -52
- data/test/test.rb +37 -21
- metadata +136 -37
- data/COPYING +0 -340
- data/ChangeLog +0 -70
- data/doc-api/classes/YamlHelper.html +0 -259
- data/lib/kwalify/util/yaml-helper.rb +0 -82
- data/test/test-yamlparser.rb +0 -58
- data/test/tmp.dir/User.java +0 -43
- data/test/tmp.dir/action1.document +0 -18
- data/test/tmp.dir/action1.schema +0 -32
- data/test/tmp.dir/action2.document +0 -18
- data/test/tmp.dir/action2.schema +0 -32
- data/test/tmp.dir/emacs.document +0 -6
- data/test/tmp.dir/emacs.schema +0 -6
- data/test/tmp.dir/meta1.document +0 -0
- data/test/tmp.dir/meta2.document +0 -0
- data/test/tmp.dir/meta2.schema +0 -3
- data/test/tmp.dir/silent1.schema +0 -3
- data/test/tmp.dir/silent2.document +0 -7
- data/test/tmp.dir/silent2.schema +0 -3
- data/test/tmp.dir/stream.invalid +0 -8
- data/test/tmp.dir/stream.schema +0 -3
- data/test/tmp.dir/stream.valid +0 -8
- data/test/tmp.dir/untabify.document +0 -5
- data/test/tmp.dir/untabify.schema +0 -10
- data/todo.txt +0 -34
@@ -0,0 +1,738 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 95 $
|
3
|
+
## $Release: 0.7.0 $
|
4
|
+
## copyright(c) 2005-2008 kuwata-lab all rights reserved.
|
5
|
+
##
|
6
|
+
---
|
7
|
+
- name: action_genclass_ruby1
|
8
|
+
desc: action 'genclass-ruby'
|
9
|
+
action: genclass-ruby
|
10
|
+
method: action
|
11
|
+
args: [ -a, genclass-ruby, -tf, action_genclass_ruby1.schema ]
|
12
|
+
schema: &action_schema1 |
|
13
|
+
type: map
|
14
|
+
class: Context
|
15
|
+
mapping:
|
16
|
+
"groups":
|
17
|
+
type: seq
|
18
|
+
sequence:
|
19
|
+
- type: map
|
20
|
+
class: Group
|
21
|
+
mapping:
|
22
|
+
"name":
|
23
|
+
type: str
|
24
|
+
required: yes
|
25
|
+
"desc":
|
26
|
+
type: str
|
27
|
+
"owner": &userschema
|
28
|
+
type: map
|
29
|
+
class: User
|
30
|
+
mapping:
|
31
|
+
"name":
|
32
|
+
type: str
|
33
|
+
required: yes
|
34
|
+
"desc":
|
35
|
+
type: str
|
36
|
+
"gender":
|
37
|
+
type: bool
|
38
|
+
"mail":
|
39
|
+
type: str
|
40
|
+
"manager": *userschema
|
41
|
+
"deleted":
|
42
|
+
type: bool
|
43
|
+
default: false
|
44
|
+
"users":
|
45
|
+
type: seq
|
46
|
+
sequence:
|
47
|
+
- *userschema
|
48
|
+
document: &action_document1 |
|
49
|
+
groups:
|
50
|
+
- name: admin
|
51
|
+
desc: administrator group
|
52
|
+
owner: &root
|
53
|
+
name: root
|
54
|
+
desc: root user
|
55
|
+
- name: users
|
56
|
+
desc: user group
|
57
|
+
owner: &guest
|
58
|
+
name: guest
|
59
|
+
desc: guest user
|
60
|
+
users:
|
61
|
+
- *root
|
62
|
+
- *guest
|
63
|
+
- &user1
|
64
|
+
name: user1
|
65
|
+
- name: user2
|
66
|
+
manager: *user1
|
67
|
+
expected: |
|
68
|
+
##
|
69
|
+
class Context
|
70
|
+
def initialize(hash=nil)
|
71
|
+
if hash.nil?
|
72
|
+
return
|
73
|
+
end
|
74
|
+
@groups = (v=hash['groups']) ? v.map!{|e| e.is_a?(Group) ? e : Group.new(e)} : v
|
75
|
+
@users = (v=hash['users']) ? v.map!{|e| e.is_a?(User) ? e : User.new(e)} : v
|
76
|
+
end
|
77
|
+
attr_accessor :groups # seq
|
78
|
+
attr_accessor :users # seq
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
class Group
|
83
|
+
def initialize(hash=nil)
|
84
|
+
if hash.nil?
|
85
|
+
return
|
86
|
+
end
|
87
|
+
@name = hash['name']
|
88
|
+
@desc = hash['desc']
|
89
|
+
@owner = (v=hash['owner']) && v.is_a?(Hash) ? User.new(v) : v
|
90
|
+
end
|
91
|
+
attr_accessor :name # str
|
92
|
+
attr_accessor :desc # str
|
93
|
+
attr_accessor :owner # map
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
class User
|
98
|
+
def initialize(hash=nil)
|
99
|
+
if hash.nil?
|
100
|
+
@deleted = false
|
101
|
+
return
|
102
|
+
end
|
103
|
+
@name = hash['name']
|
104
|
+
@desc = hash['desc']
|
105
|
+
@gender = hash['gender']
|
106
|
+
@mail = hash['mail']
|
107
|
+
@manager = (v=hash['manager']) && v.is_a?(Hash) ? User.new(v) : v
|
108
|
+
@deleted = (v=hash['deleted']).nil? ? false : v
|
109
|
+
end
|
110
|
+
attr_accessor :name # str
|
111
|
+
attr_accessor :desc # str
|
112
|
+
attr_accessor :gender # bool
|
113
|
+
attr_accessor :mail # str
|
114
|
+
attr_accessor :manager # map
|
115
|
+
attr_accessor :deleted # bool
|
116
|
+
def gender? ; @gender ; end
|
117
|
+
def deleted? ; @deleted ; end
|
118
|
+
end
|
119
|
+
|
120
|
+
##
|
121
|
+
- name: action_genclass_php1
|
122
|
+
desc: action 'genclass-php'
|
123
|
+
action: genclass-php
|
124
|
+
method: action
|
125
|
+
args: [ -a, genclass-php, -tf, action_genclass_php1.schema ]
|
126
|
+
schema: *action_schema1
|
127
|
+
document: *action_document1
|
128
|
+
expected: |
|
129
|
+
<?php
|
130
|
+
|
131
|
+
///
|
132
|
+
class Context {
|
133
|
+
var $groups; // seq
|
134
|
+
var $users; // seq
|
135
|
+
function __construct($arr=NULL) {
|
136
|
+
if (! $arr) return;
|
137
|
+
if (is_array(@$arr['groups']))
|
138
|
+
foreach ($arr['groups'] as $k=>$v)
|
139
|
+
$this->groups[$k] = is_array($v) ? new Group($v) : $v;
|
140
|
+
//else
|
141
|
+
// $this->groups = @$arr['groups'];
|
142
|
+
if (is_array(@$arr['users']))
|
143
|
+
foreach ($arr['users'] as $k=>$v)
|
144
|
+
$this->users[$k] = is_array($v) ? new User($v) : $v;
|
145
|
+
//else
|
146
|
+
// $this->users = @$arr['users'];
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
///
|
151
|
+
class Group {
|
152
|
+
var $name; // str
|
153
|
+
var $desc; // str
|
154
|
+
var $owner; // map
|
155
|
+
function __construct($arr=NULL) {
|
156
|
+
if (! $arr) return;
|
157
|
+
$this->name = @$arr['name'];
|
158
|
+
$this->desc = @$arr['desc'];
|
159
|
+
$this->owner = is_array(@$arr['owner']) ? new User($arr['owner']) : @$arr['owner'];
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
///
|
164
|
+
class User {
|
165
|
+
var $name; // str
|
166
|
+
var $desc; // str
|
167
|
+
var $gender; // bool
|
168
|
+
var $mail; // str
|
169
|
+
var $manager; // map
|
170
|
+
var $deleted = false; // bool
|
171
|
+
function __construct($arr=NULL) {
|
172
|
+
if (! $arr) return;
|
173
|
+
$this->name = @$arr['name'];
|
174
|
+
$this->desc = @$arr['desc'];
|
175
|
+
$this->gender = @$arr['gender'];
|
176
|
+
$this->mail = @$arr['mail'];
|
177
|
+
$this->manager = is_array(@$arr['manager']) ? new User($arr['manager']) : @$arr['manager'];
|
178
|
+
if (array_key_exists('deleted', $arr)) $this->deleted = $arr['deleted'];
|
179
|
+
}
|
180
|
+
}
|
181
|
+
|
182
|
+
?>
|
183
|
+
|
184
|
+
##
|
185
|
+
- name: action_genclass_java1
|
186
|
+
desc: action 'genclass-java'
|
187
|
+
action: genclass-java
|
188
|
+
method: action
|
189
|
+
args: [ -a, genclass-java, -tf, action_genclass_java1.schema ]
|
190
|
+
schema: *action_schema1
|
191
|
+
document: *action_document1
|
192
|
+
output_files: [ Context.java, Group.java, User.java ]
|
193
|
+
output_message: |+
|
194
|
+
generating ./Context.java...done.
|
195
|
+
generating ./Group.java...done.
|
196
|
+
generating ./User.java...done.
|
197
|
+
expected:
|
198
|
+
'Context.java': |
|
199
|
+
// generated by kwalify from action_genclass_java1.schema
|
200
|
+
|
201
|
+
import java.util.*;
|
202
|
+
|
203
|
+
/**
|
204
|
+
*
|
205
|
+
*/
|
206
|
+
public class Context {
|
207
|
+
|
208
|
+
private List _groups;
|
209
|
+
private List _users;
|
210
|
+
|
211
|
+
public Context() {}
|
212
|
+
|
213
|
+
public Context(Map map) {
|
214
|
+
List seq;
|
215
|
+
Object obj;
|
216
|
+
if ((seq = (List)map.get("groups")) != null) {
|
217
|
+
for (int i = 0; i < seq.size(); i++) {
|
218
|
+
if ((obj = seq.get(i)) instanceof Map) {
|
219
|
+
seq.set(i, new Group((Map)obj));
|
220
|
+
}
|
221
|
+
}
|
222
|
+
}
|
223
|
+
_groups = seq;
|
224
|
+
if ((seq = (List)map.get("users")) != null) {
|
225
|
+
for (int i = 0; i < seq.size(); i++) {
|
226
|
+
if ((obj = seq.get(i)) instanceof Map) {
|
227
|
+
seq.set(i, new User((Map)obj));
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
_users = seq;
|
232
|
+
}
|
233
|
+
|
234
|
+
public List getGroups() { return _groups; }
|
235
|
+
public void setGroups(List groups_) { _groups = groups_; }
|
236
|
+
public List getUsers() { return _users; }
|
237
|
+
public void setUsers(List users_) { _users = users_; }
|
238
|
+
}
|
239
|
+
|
240
|
+
'Group.java': |
|
241
|
+
// generated by kwalify from action_genclass_java1.schema
|
242
|
+
|
243
|
+
import java.util.*;
|
244
|
+
|
245
|
+
/**
|
246
|
+
*
|
247
|
+
*/
|
248
|
+
public class Group {
|
249
|
+
|
250
|
+
private String _name;
|
251
|
+
private String _desc;
|
252
|
+
private User _owner;
|
253
|
+
|
254
|
+
public Group() {}
|
255
|
+
|
256
|
+
public Group(Map map) {
|
257
|
+
_name = (String)map.get("name");
|
258
|
+
_desc = (String)map.get("desc");
|
259
|
+
Object obj;
|
260
|
+
if ((obj = map.get("owner")) != null && obj instanceof Map) {
|
261
|
+
_owner = new User((Map)obj);
|
262
|
+
} else {
|
263
|
+
_owner = (User)obj;
|
264
|
+
}
|
265
|
+
}
|
266
|
+
|
267
|
+
public String getName() { return _name; }
|
268
|
+
public void setName(String name_) { _name = name_; }
|
269
|
+
public String getDesc() { return _desc; }
|
270
|
+
public void setDesc(String desc_) { _desc = desc_; }
|
271
|
+
public User getOwner() { return _owner; }
|
272
|
+
public void setOwner(User owner_) { _owner = owner_; }
|
273
|
+
}
|
274
|
+
|
275
|
+
'User.java': |
|
276
|
+
// generated by kwalify from action_genclass_java1.schema
|
277
|
+
|
278
|
+
import java.util.*;
|
279
|
+
|
280
|
+
/**
|
281
|
+
*
|
282
|
+
*/
|
283
|
+
public class User {
|
284
|
+
|
285
|
+
private String _name;
|
286
|
+
private String _desc;
|
287
|
+
private boolean _gender;
|
288
|
+
private String _mail;
|
289
|
+
private User _manager;
|
290
|
+
private boolean _deleted = false;
|
291
|
+
|
292
|
+
public User() {}
|
293
|
+
|
294
|
+
public User(Map map) {
|
295
|
+
_name = (String)map.get("name");
|
296
|
+
_desc = (String)map.get("desc");
|
297
|
+
if (map.get("gender") != null) {
|
298
|
+
_gender = ((Boolean)map.get("gender")).booleanValue();
|
299
|
+
}
|
300
|
+
_mail = (String)map.get("mail");
|
301
|
+
Object obj;
|
302
|
+
if ((obj = map.get("manager")) != null && obj instanceof Map) {
|
303
|
+
_manager = new User((Map)obj);
|
304
|
+
} else {
|
305
|
+
_manager = (User)obj;
|
306
|
+
}
|
307
|
+
if (map.get("deleted") != null) {
|
308
|
+
_deleted = ((Boolean)map.get("deleted")).booleanValue();
|
309
|
+
}
|
310
|
+
}
|
311
|
+
|
312
|
+
public String getName() { return _name; }
|
313
|
+
public void setName(String name_) { _name = name_; }
|
314
|
+
public String getDesc() { return _desc; }
|
315
|
+
public void setDesc(String desc_) { _desc = desc_; }
|
316
|
+
public boolean isGender() { return _gender; }
|
317
|
+
public void setGender(boolean gender_) { _gender = gender_; }
|
318
|
+
public String getMail() { return _mail; }
|
319
|
+
public void setMail(String mail_) { _mail = mail_; }
|
320
|
+
public User getManager() { return _manager; }
|
321
|
+
public void setManager(User manager_) { _manager = manager_; }
|
322
|
+
public boolean isDeleted() { return _deleted; }
|
323
|
+
public void setDeleted(boolean deleted_) { _deleted = deleted_; }
|
324
|
+
}
|
325
|
+
|
326
|
+
## not used
|
327
|
+
main_file:
|
328
|
+
name: Example.java
|
329
|
+
content: |
|
330
|
+
import kwalify.*;
|
331
|
+
import java.util.*;
|
332
|
+
|
333
|
+
public class Example {
|
334
|
+
public static void main(String[] args) throws Exception {
|
335
|
+
String input = kwalify.Util.readFile("action_genclass_java1.document");
|
336
|
+
input = kwalify.Util.untabify(input);
|
337
|
+
YamlParser parser = new YamlParser(input);
|
338
|
+
Object ydoc = parser.parse();
|
339
|
+
//
|
340
|
+
Context context = new Context((Map)ydoc);
|
341
|
+
//
|
342
|
+
List groups = context.getGroups();
|
343
|
+
if (groups != null) {
|
344
|
+
for (Iterator it = groups.iterator(); it.hasNext(); ) {
|
345
|
+
Group g = (Group)it.next();
|
346
|
+
System.out.println("group.name = " + g.getName());
|
347
|
+
System.out.println("group.desc = " + g.getDesc());
|
348
|
+
System.out.println("group.owner.name = " + g.getOwner().getName());
|
349
|
+
System.out.println();
|
350
|
+
}
|
351
|
+
}
|
352
|
+
//
|
353
|
+
List users = context.getUsers();
|
354
|
+
if (users != null) {
|
355
|
+
for (Iterator it = users.iterator(); it.hasNext(); ) {
|
356
|
+
User u = (User)it.next();
|
357
|
+
System.out.println("user.name = " + u.getName());
|
358
|
+
System.out.println("user.desc = " + u.getDesc());
|
359
|
+
System.out.println("user.manager.name = " + (u.getManager() != null ? u.getManager().getName() : null));
|
360
|
+
System.out.println();
|
361
|
+
}
|
362
|
+
}
|
363
|
+
}
|
364
|
+
}
|
365
|
+
|
366
|
+
##
|
367
|
+
- name: action_genclass_ruby2
|
368
|
+
desc: action 'genclass-ruby'
|
369
|
+
action: genclass-ruby
|
370
|
+
method: action
|
371
|
+
args: [ -a, genclass-ruby, -tf, action_genclass_ruby2.schema, --module=My::DTO, --parent=BaseObject, "--include=Enumerable,Comparable", --hashlike ]
|
372
|
+
schema: &action_schema2 |
|
373
|
+
type: map
|
374
|
+
mapping:
|
375
|
+
"tables":
|
376
|
+
type: seq
|
377
|
+
sequence:
|
378
|
+
- type: map
|
379
|
+
class: Table
|
380
|
+
mapping:
|
381
|
+
"name": {type: str}
|
382
|
+
"desc": {type: text}
|
383
|
+
"columns":
|
384
|
+
type: seq
|
385
|
+
sequence:
|
386
|
+
- type: map
|
387
|
+
class: Column
|
388
|
+
mapping: &column
|
389
|
+
"name": {type: str}
|
390
|
+
"type": {type: str}
|
391
|
+
"desc": {type: str}
|
392
|
+
"not-null": {type: bool}
|
393
|
+
"primary-key": {type: bool}
|
394
|
+
"default": {type: any}
|
395
|
+
"ref": {type: str}
|
396
|
+
"columns":
|
397
|
+
type: seq
|
398
|
+
sequence:
|
399
|
+
- type: map
|
400
|
+
class: Column
|
401
|
+
mapping:
|
402
|
+
<<: *column
|
403
|
+
"namepattern": {type: str}
|
404
|
+
"columnsets":
|
405
|
+
type: seq
|
406
|
+
sequence:
|
407
|
+
- type: map
|
408
|
+
class: Columnset
|
409
|
+
mapping:
|
410
|
+
"name": {type: str}
|
411
|
+
"columns":
|
412
|
+
type: seq
|
413
|
+
sequence:
|
414
|
+
- type: map
|
415
|
+
class: Column
|
416
|
+
mapping: *column
|
417
|
+
document: &action_document3 |
|
418
|
+
columns:
|
419
|
+
- name: id
|
420
|
+
type: int
|
421
|
+
primary-key: yes
|
422
|
+
not-null: yes
|
423
|
+
- name: updated_at
|
424
|
+
type: timestamp
|
425
|
+
not-null: yes
|
426
|
+
default: current_timestamp
|
427
|
+
- name: created_at
|
428
|
+
type: timestamp
|
429
|
+
not-null: yes
|
430
|
+
default: current_timestamp
|
431
|
+
columnsets:
|
432
|
+
- name: common
|
433
|
+
columns:
|
434
|
+
- name: created_at
|
435
|
+
- name: updated_at
|
436
|
+
tables:
|
437
|
+
- name: customers
|
438
|
+
desc: Customer master table
|
439
|
+
columns:
|
440
|
+
- name: id
|
441
|
+
- name: name
|
442
|
+
type: str
|
443
|
+
not-null: yes
|
444
|
+
- name: common
|
445
|
+
- name: sales_orders
|
446
|
+
desc: Sales orders master table
|
447
|
+
columns:
|
448
|
+
- name: id
|
449
|
+
- name: customer_id
|
450
|
+
ref: customers.id
|
451
|
+
not-null: yes
|
452
|
+
- name: ordered_date
|
453
|
+
type: date
|
454
|
+
not-null: yes
|
455
|
+
- name: delivery_date
|
456
|
+
type: date
|
457
|
+
expected: |
|
458
|
+
require 'kwalify/util/hashlike'
|
459
|
+
|
460
|
+
module My::DTO
|
461
|
+
|
462
|
+
##
|
463
|
+
class Table < BaseObject
|
464
|
+
include Kwalify::Util::HashLike
|
465
|
+
include Enumerable,Comparable
|
466
|
+
def initialize(hash=nil)
|
467
|
+
if hash.nil?
|
468
|
+
return
|
469
|
+
end
|
470
|
+
@name = hash['name']
|
471
|
+
@desc = hash['desc']
|
472
|
+
@columns = (v=hash['columns']) ? v.map!{|e| e.is_a?(Column) ? e : Column.new(e)} : v
|
473
|
+
end
|
474
|
+
attr_accessor :name # str
|
475
|
+
attr_accessor :desc # text
|
476
|
+
attr_accessor :columns # seq
|
477
|
+
end
|
478
|
+
|
479
|
+
##
|
480
|
+
class Column < BaseObject
|
481
|
+
include Kwalify::Util::HashLike
|
482
|
+
include Enumerable,Comparable
|
483
|
+
def initialize(hash=nil)
|
484
|
+
if hash.nil?
|
485
|
+
return
|
486
|
+
end
|
487
|
+
@name = hash['name']
|
488
|
+
@type = hash['type']
|
489
|
+
@desc = hash['desc']
|
490
|
+
@not_null = hash['not-null']
|
491
|
+
@primary_key = hash['primary-key']
|
492
|
+
@default = hash['default']
|
493
|
+
@ref = hash['ref']
|
494
|
+
@namepattern = hash['namepattern']
|
495
|
+
end
|
496
|
+
attr_accessor :name # str
|
497
|
+
attr_accessor :type # str
|
498
|
+
attr_accessor :desc # str
|
499
|
+
attr_accessor :not_null # bool
|
500
|
+
attr_accessor :primary_key # bool
|
501
|
+
attr_accessor :default # any
|
502
|
+
attr_accessor :ref # str
|
503
|
+
attr_accessor :namepattern # str
|
504
|
+
def not_null? ; @not_null ; end
|
505
|
+
def primary_key? ; @primary_key ; end
|
506
|
+
end
|
507
|
+
|
508
|
+
##
|
509
|
+
class Columnset < BaseObject
|
510
|
+
include Kwalify::Util::HashLike
|
511
|
+
include Enumerable,Comparable
|
512
|
+
def initialize(hash=nil)
|
513
|
+
if hash.nil?
|
514
|
+
return
|
515
|
+
end
|
516
|
+
@name = hash['name']
|
517
|
+
@columns = (v=hash['columns']) ? v.map!{|e| e.is_a?(Column) ? e : Column.new(e)} : v
|
518
|
+
end
|
519
|
+
attr_accessor :name # str
|
520
|
+
attr_accessor :columns # seq
|
521
|
+
end
|
522
|
+
|
523
|
+
end
|
524
|
+
|
525
|
+
##
|
526
|
+
- name: action_genclass_php2
|
527
|
+
desc: action 'genclass-php'
|
528
|
+
action: genclass-php
|
529
|
+
method: action
|
530
|
+
args: [ -a, genclass-php, -tf, action_genclass_php2.schema, --namespace=My, --extends=BaseObject, --implements=Serializable ]
|
531
|
+
schema: *action_schema2
|
532
|
+
document: *action_document2
|
533
|
+
expected: |
|
534
|
+
<?php
|
535
|
+
|
536
|
+
///
|
537
|
+
class My_Table extends BaseObject implements Serializable {
|
538
|
+
var $name; // str
|
539
|
+
var $desc; // text
|
540
|
+
var $columns; // seq
|
541
|
+
function __construct($arr=NULL) {
|
542
|
+
if (! $arr) return;
|
543
|
+
$this->name = @$arr['name'];
|
544
|
+
$this->desc = @$arr['desc'];
|
545
|
+
if (is_array(@$arr['columns']))
|
546
|
+
foreach ($arr['columns'] as $k=>$v)
|
547
|
+
$this->columns[$k] = is_array($v) ? new Column($v) : $v;
|
548
|
+
//else
|
549
|
+
// $this->columns = @$arr['columns'];
|
550
|
+
}
|
551
|
+
}
|
552
|
+
|
553
|
+
///
|
554
|
+
class My_Column extends BaseObject implements Serializable {
|
555
|
+
var $name; // str
|
556
|
+
var $type; // str
|
557
|
+
var $desc; // str
|
558
|
+
var $not_null; // bool
|
559
|
+
var $primary_key; // bool
|
560
|
+
var $default; // any
|
561
|
+
var $ref; // str
|
562
|
+
var $namepattern; // str
|
563
|
+
function __construct($arr=NULL) {
|
564
|
+
if (! $arr) return;
|
565
|
+
$this->name = @$arr['name'];
|
566
|
+
$this->type = @$arr['type'];
|
567
|
+
$this->desc = @$arr['desc'];
|
568
|
+
$this->not_null = @$arr['not-null'];
|
569
|
+
$this->primary_key = @$arr['primary-key'];
|
570
|
+
$this->default = @$arr['default'];
|
571
|
+
$this->ref = @$arr['ref'];
|
572
|
+
$this->namepattern = @$arr['namepattern'];
|
573
|
+
}
|
574
|
+
}
|
575
|
+
|
576
|
+
///
|
577
|
+
class My_Columnset extends BaseObject implements Serializable {
|
578
|
+
var $name; // str
|
579
|
+
var $columns; // seq
|
580
|
+
function __construct($arr=NULL) {
|
581
|
+
if (! $arr) return;
|
582
|
+
$this->name = @$arr['name'];
|
583
|
+
if (is_array(@$arr['columns']))
|
584
|
+
foreach ($arr['columns'] as $k=>$v)
|
585
|
+
$this->columns[$k] = is_array($v) ? new Column($v) : $v;
|
586
|
+
//else
|
587
|
+
// $this->columns = @$arr['columns'];
|
588
|
+
}
|
589
|
+
}
|
590
|
+
|
591
|
+
?>
|
592
|
+
|
593
|
+
|
594
|
+
##
|
595
|
+
- name: action_genclass_java2
|
596
|
+
desc: action 'genclass-java'
|
597
|
+
action: genclass-java
|
598
|
+
method: action
|
599
|
+
args: [ -a, genclass-java, -tf, action_genclass_java2.schema, --extends=java.lang.Object, --implements=java.io.Serializable, --package=my.dto, --dir=. ]
|
600
|
+
schema: *action_schema2
|
601
|
+
document: *action_document2
|
602
|
+
output_files: [ Table.java, Column.java, Columnset.java ]
|
603
|
+
output_message: |+
|
604
|
+
generating ./Table.java...done.
|
605
|
+
generating ./Column.java...done.
|
606
|
+
generating ./Columnset.java...done.
|
607
|
+
expected:
|
608
|
+
"Table.java": |
|
609
|
+
// generated by kwalify from action_genclass_java2.schema
|
610
|
+
|
611
|
+
package my.dto;
|
612
|
+
import java.util.*;
|
613
|
+
|
614
|
+
/**
|
615
|
+
*
|
616
|
+
*/
|
617
|
+
public class Table extends java.lang.Object implements java.io.Serializable {
|
618
|
+
|
619
|
+
private String _name;
|
620
|
+
private String _desc;
|
621
|
+
private List _columns;
|
622
|
+
|
623
|
+
public Table() {}
|
624
|
+
|
625
|
+
public Table(Map map) {
|
626
|
+
_name = (String)map.get("name");
|
627
|
+
_desc = (String)map.get("desc");
|
628
|
+
List seq;
|
629
|
+
Object obj;
|
630
|
+
if ((seq = (List)map.get("columns")) != null) {
|
631
|
+
for (int i = 0; i < seq.size(); i++) {
|
632
|
+
if ((obj = seq.get(i)) instanceof Map) {
|
633
|
+
seq.set(i, new Column((Map)obj));
|
634
|
+
}
|
635
|
+
}
|
636
|
+
}
|
637
|
+
_columns = seq;
|
638
|
+
}
|
639
|
+
|
640
|
+
public String getName() { return _name; }
|
641
|
+
public void setName(String name_) { _name = name_; }
|
642
|
+
public String getDesc() { return _desc; }
|
643
|
+
public void setDesc(String desc_) { _desc = desc_; }
|
644
|
+
public List getColumns() { return _columns; }
|
645
|
+
public void setColumns(List columns_) { _columns = columns_; }
|
646
|
+
}
|
647
|
+
|
648
|
+
"Column.java": |
|
649
|
+
// generated by kwalify from action_genclass_java2.schema
|
650
|
+
|
651
|
+
package my.dto;
|
652
|
+
import java.util.*;
|
653
|
+
|
654
|
+
/**
|
655
|
+
*
|
656
|
+
*/
|
657
|
+
public class Column extends java.lang.Object implements java.io.Serializable {
|
658
|
+
|
659
|
+
private String _name;
|
660
|
+
private String _type;
|
661
|
+
private String _desc;
|
662
|
+
private boolean _not_null;
|
663
|
+
private boolean _primary_key;
|
664
|
+
private Object _default;
|
665
|
+
private String _ref;
|
666
|
+
private String _namepattern;
|
667
|
+
|
668
|
+
public Column() {}
|
669
|
+
|
670
|
+
public Column(Map map) {
|
671
|
+
_name = (String)map.get("name");
|
672
|
+
_type = (String)map.get("type");
|
673
|
+
_desc = (String)map.get("desc");
|
674
|
+
if (map.get("not-null") != null) {
|
675
|
+
_not_null = ((Boolean)map.get("not-null")).booleanValue();
|
676
|
+
}
|
677
|
+
if (map.get("primary-key") != null) {
|
678
|
+
_primary_key = ((Boolean)map.get("primary-key")).booleanValue();
|
679
|
+
}
|
680
|
+
_default = (Object)map.get("default");
|
681
|
+
_ref = (String)map.get("ref");
|
682
|
+
_namepattern = (String)map.get("namepattern");
|
683
|
+
}
|
684
|
+
|
685
|
+
public String getName() { return _name; }
|
686
|
+
public void setName(String name_) { _name = name_; }
|
687
|
+
public String getType() { return _type; }
|
688
|
+
public void setType(String type_) { _type = type_; }
|
689
|
+
public String getDesc() { return _desc; }
|
690
|
+
public void setDesc(String desc_) { _desc = desc_; }
|
691
|
+
public boolean isNotNull() { return _not_null; }
|
692
|
+
public void setNotNull(boolean not_null_) { _not_null = not_null_; }
|
693
|
+
public boolean isPrimaryKey() { return _primary_key; }
|
694
|
+
public void setPrimaryKey(boolean primary_key_) { _primary_key = primary_key_; }
|
695
|
+
public Object getDefault() { return _default; }
|
696
|
+
public void setDefault(Object default_) { _default = default_; }
|
697
|
+
public String getRef() { return _ref; }
|
698
|
+
public void setRef(String ref_) { _ref = ref_; }
|
699
|
+
public String getNamepattern() { return _namepattern; }
|
700
|
+
public void setNamepattern(String namepattern_) { _namepattern = namepattern_; }
|
701
|
+
}
|
702
|
+
|
703
|
+
"Columnset.java": |
|
704
|
+
// generated by kwalify from action_genclass_java2.schema
|
705
|
+
|
706
|
+
package my.dto;
|
707
|
+
import java.util.*;
|
708
|
+
|
709
|
+
/**
|
710
|
+
*
|
711
|
+
*/
|
712
|
+
public class Columnset extends java.lang.Object implements java.io.Serializable {
|
713
|
+
|
714
|
+
private String _name;
|
715
|
+
private List _columns;
|
716
|
+
|
717
|
+
public Columnset() {}
|
718
|
+
|
719
|
+
public Columnset(Map map) {
|
720
|
+
_name = (String)map.get("name");
|
721
|
+
List seq;
|
722
|
+
Object obj;
|
723
|
+
if ((seq = (List)map.get("columns")) != null) {
|
724
|
+
for (int i = 0; i < seq.size(); i++) {
|
725
|
+
if ((obj = seq.get(i)) instanceof Map) {
|
726
|
+
seq.set(i, new Column((Map)obj));
|
727
|
+
}
|
728
|
+
}
|
729
|
+
}
|
730
|
+
_columns = seq;
|
731
|
+
}
|
732
|
+
|
733
|
+
public String getName() { return _name; }
|
734
|
+
public void setName(String name_) { _name = name_; }
|
735
|
+
public List getColumns() { return _columns; }
|
736
|
+
public void setColumns(List columns_) { _columns = columns_; }
|
737
|
+
}
|
738
|
+
##
|