dc-kwalify 0.7.2

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.
Files changed (209) hide show
  1. data/CHANGES.txt +252 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +61 -0
  4. data/bin/kwalify +13 -0
  5. data/contrib/inline-require +179 -0
  6. data/contrib/kwalify +4160 -0
  7. data/doc/docstyle.css +188 -0
  8. data/doc/img/fig01.png +0 -0
  9. data/doc/users-guide.html +2050 -0
  10. data/doc-api/classes/CommandOptionError.html +184 -0
  11. data/doc-api/classes/CommandOptionParser.html +325 -0
  12. data/doc-api/classes/Kwalify/AssertionError.html +148 -0
  13. data/doc-api/classes/Kwalify/BaseError.html +297 -0
  14. data/doc-api/classes/Kwalify/BaseParser.html +461 -0
  15. data/doc-api/classes/Kwalify/CommandOptionError.html +168 -0
  16. data/doc-api/classes/Kwalify/ErrorHelper.html +223 -0
  17. data/doc-api/classes/Kwalify/HashInterface.html +118 -0
  18. data/doc-api/classes/Kwalify/Json.html +105 -0
  19. data/doc-api/classes/Kwalify/KwalifyError.html +111 -0
  20. data/doc-api/classes/Kwalify/Main.html +339 -0
  21. data/doc-api/classes/Kwalify/MetaValidator.html +448 -0
  22. data/doc-api/classes/Kwalify/Parser.html +155 -0
  23. data/doc-api/classes/Kwalify/PlainYamlParser/Alias.html +165 -0
  24. data/doc-api/classes/Kwalify/PlainYamlParser.html +523 -0
  25. data/doc-api/classes/Kwalify/Rule.html +433 -0
  26. data/doc-api/classes/Kwalify/SchemaError.html +148 -0
  27. data/doc-api/classes/Kwalify/SyntaxError.html +185 -0
  28. data/doc-api/classes/Kwalify/Types.html +302 -0
  29. data/doc-api/classes/Kwalify/Util/HashLike.html +246 -0
  30. data/doc-api/classes/Kwalify/Util/OrderedHash.html +330 -0
  31. data/doc-api/classes/Kwalify/Util.html +390 -0
  32. data/doc-api/classes/Kwalify/ValidationError.html +148 -0
  33. data/doc-api/classes/Kwalify/Validator.html +381 -0
  34. data/doc-api/classes/Kwalify/Yaml/Parser.html +1538 -0
  35. data/doc-api/classes/Kwalify/Yaml.html +194 -0
  36. data/doc-api/classes/Kwalify/YamlParser.html +542 -0
  37. data/doc-api/classes/Kwalify/YamlSyntaxError.html +119 -0
  38. data/doc-api/classes/Kwalify.html +292 -0
  39. data/doc-api/classes/Test/Unit.html +101 -0
  40. data/doc-api/classes/Test.html +107 -0
  41. data/doc-api/created.rid +1 -0
  42. data/doc-api/files/__/README_txt.html +172 -0
  43. data/doc-api/files/kwalify/errors_rb.html +114 -0
  44. data/doc-api/files/kwalify/main_rb.html +118 -0
  45. data/doc-api/files/kwalify/messages_rb.html +107 -0
  46. data/doc-api/files/kwalify/meta-validator_rb.html +117 -0
  47. data/doc-api/files/kwalify/parser/base_rb.html +116 -0
  48. data/doc-api/files/kwalify/parser/yaml_rb.html +117 -0
  49. data/doc-api/files/kwalify/rule_rb.html +116 -0
  50. data/doc-api/files/kwalify/types_rb.html +114 -0
  51. data/doc-api/files/kwalify/util/assert-text-equal_rb.html +115 -0
  52. data/doc-api/files/kwalify/util/hash-interface_rb.html +114 -0
  53. data/doc-api/files/kwalify/util/hashlike_rb.html +107 -0
  54. data/doc-api/files/kwalify/util/option-parser_rb.html +107 -0
  55. data/doc-api/files/kwalify/util/ordered-hash_rb.html +107 -0
  56. data/doc-api/files/kwalify/util/testcase-helper_rb.html +115 -0
  57. data/doc-api/files/kwalify/util_rb.html +107 -0
  58. data/doc-api/files/kwalify/validator_rb.html +117 -0
  59. data/doc-api/files/kwalify/yaml-parser_rb.html +117 -0
  60. data/doc-api/files/kwalify_rb.html +121 -0
  61. data/doc-api/fr_class_index.html +57 -0
  62. data/doc-api/fr_file_index.html +45 -0
  63. data/doc-api/fr_method_index.html +168 -0
  64. data/doc-api/index.html +24 -0
  65. data/doc-api/rdoc-style.css +208 -0
  66. data/examples/address-book/Makefile +10 -0
  67. data/examples/address-book/address-book.schema.yaml +45 -0
  68. data/examples/address-book/address-book.yaml +36 -0
  69. data/examples/data-binding/BABEL.data.yaml +63 -0
  70. data/examples/data-binding/BABEL.schema.yaml +31 -0
  71. data/examples/data-binding/Makefile +8 -0
  72. data/examples/data-binding/Rakefile +13 -0
  73. data/examples/data-binding/main.rb +27 -0
  74. data/examples/invoice/Makefile +9 -0
  75. data/examples/invoice/invoice.schema.yaml +43 -0
  76. data/examples/invoice/invoice.yaml +32 -0
  77. data/examples/tapkit/Makefile +10 -0
  78. data/examples/tapkit/main.rb +7 -0
  79. data/examples/tapkit/tapkit.schema.yaml +146 -0
  80. data/examples/tapkit/tapkit.yaml +85 -0
  81. data/lib/kwalify/errors.rb +127 -0
  82. data/lib/kwalify/kwalify.schema.yaml +58 -0
  83. data/lib/kwalify/main.rb +442 -0
  84. data/lib/kwalify/messages.rb +173 -0
  85. data/lib/kwalify/meta-validator.rb +275 -0
  86. data/lib/kwalify/parser/base.rb +127 -0
  87. data/lib/kwalify/parser/yaml.rb +841 -0
  88. data/lib/kwalify/rule.rb +559 -0
  89. data/lib/kwalify/templates/genclass-java.eruby +222 -0
  90. data/lib/kwalify/templates/genclass-php.eruby +104 -0
  91. data/lib/kwalify/templates/genclass-ruby.eruby +113 -0
  92. data/lib/kwalify/types.rb +156 -0
  93. data/lib/kwalify/util/assert-text-equal.rb +46 -0
  94. data/lib/kwalify/util/hash-interface.rb +18 -0
  95. data/lib/kwalify/util/hashlike.rb +51 -0
  96. data/lib/kwalify/util/option-parser.rb +220 -0
  97. data/lib/kwalify/util/ordered-hash.rb +57 -0
  98. data/lib/kwalify/util/testcase-helper.rb +112 -0
  99. data/lib/kwalify/util.rb +158 -0
  100. data/lib/kwalify/validator.rb +282 -0
  101. data/lib/kwalify/yaml-parser.rb +870 -0
  102. data/lib/kwalify.rb +67 -0
  103. data/setup.rb +1585 -0
  104. data/test/Rookbook.yaml +10 -0
  105. data/test/data/users-guide/AddressBook.java.expected +40 -0
  106. data/test/data/users-guide/BABEL.data.yaml +24 -0
  107. data/test/data/users-guide/BABEL.schema.yaml +30 -0
  108. data/test/data/users-guide/ExampleAddressBook.java +47 -0
  109. data/test/data/users-guide/Group.java.expected +24 -0
  110. data/test/data/users-guide/Person.java.expected +44 -0
  111. data/test/data/users-guide/address_book.rb +52 -0
  112. data/test/data/users-guide/address_book.schema.yaml +28 -0
  113. data/test/data/users-guide/address_book.yaml +27 -0
  114. data/test/data/users-guide/answers-schema.yaml +12 -0
  115. data/test/data/users-guide/answers-validator.rb +52 -0
  116. data/test/data/users-guide/babel_genclass.result +26 -0
  117. data/test/data/users-guide/config.schema.yaml +7 -0
  118. data/test/data/users-guide/config.yaml +4 -0
  119. data/test/data/users-guide/document01a.yaml +3 -0
  120. data/test/data/users-guide/document01b.yaml +3 -0
  121. data/test/data/users-guide/document02a.yaml +4 -0
  122. data/test/data/users-guide/document02b.yaml +4 -0
  123. data/test/data/users-guide/document03a.yaml +6 -0
  124. data/test/data/users-guide/document03b.yaml +6 -0
  125. data/test/data/users-guide/document04a.yaml +9 -0
  126. data/test/data/users-guide/document04b.yaml +9 -0
  127. data/test/data/users-guide/document05a.yaml +11 -0
  128. data/test/data/users-guide/document05b.yaml +12 -0
  129. data/test/data/users-guide/document06a.yaml +15 -0
  130. data/test/data/users-guide/document06b.yaml +16 -0
  131. data/test/data/users-guide/document07a.yaml +9 -0
  132. data/test/data/users-guide/document07b.yaml +7 -0
  133. data/test/data/users-guide/document12a.json +10 -0
  134. data/test/data/users-guide/document12b.json +6 -0
  135. data/test/data/users-guide/document13a.yaml +17 -0
  136. data/test/data/users-guide/document14a.yaml +3 -0
  137. data/test/data/users-guide/document14b.yaml +3 -0
  138. data/test/data/users-guide/document15a.yaml +6 -0
  139. data/test/data/users-guide/document15b.yaml +5 -0
  140. data/test/data/users-guide/example_address_book.rb +10 -0
  141. data/test/data/users-guide/example_address_book_java.result +32 -0
  142. data/test/data/users-guide/example_address_book_ruby.result +31 -0
  143. data/test/data/users-guide/genclass_java.result +4 -0
  144. data/test/data/users-guide/howto-validation-with-parsing.rb +28 -0
  145. data/test/data/users-guide/howto-validation.rb +25 -0
  146. data/test/data/users-guide/howto3.rb +6 -0
  147. data/test/data/users-guide/howto3.result +5 -0
  148. data/test/data/users-guide/howto3.yaml +8 -0
  149. data/test/data/users-guide/howto5_databinding.result +111 -0
  150. data/test/data/users-guide/invalid01.result +3 -0
  151. data/test/data/users-guide/invalid02.result +5 -0
  152. data/test/data/users-guide/invalid03.result +5 -0
  153. data/test/data/users-guide/invalid04.result +4 -0
  154. data/test/data/users-guide/invalid05.result +11 -0
  155. data/test/data/users-guide/invalid06.result +4 -0
  156. data/test/data/users-guide/invalid07.result +3 -0
  157. data/test/data/users-guide/invalid08.result +3 -0
  158. data/test/data/users-guide/invalid12.json +8 -0
  159. data/test/data/users-guide/invalid14.result +4 -0
  160. data/test/data/users-guide/invalid15.result +4 -0
  161. data/test/data/users-guide/loadbabel.rb +27 -0
  162. data/test/data/users-guide/loadconfig.rb +16 -0
  163. data/test/data/users-guide/loadconfig.result +6 -0
  164. data/test/data/users-guide/models.rb +22 -0
  165. data/test/data/users-guide/option_ha.result +6 -0
  166. data/test/data/users-guide/option_ha_genclass_java.result +7 -0
  167. data/test/data/users-guide/schema01.yaml +3 -0
  168. data/test/data/users-guide/schema02.yaml +12 -0
  169. data/test/data/users-guide/schema03.yaml +9 -0
  170. data/test/data/users-guide/schema04.yaml +20 -0
  171. data/test/data/users-guide/schema05.yaml +29 -0
  172. data/test/data/users-guide/schema06.yaml +11 -0
  173. data/test/data/users-guide/schema12.json +12 -0
  174. data/test/data/users-guide/schema13.yaml +13 -0
  175. data/test/data/users-guide/schema14.yaml +5 -0
  176. data/test/data/users-guide/schema15.yaml +21 -0
  177. data/test/data/users-guide/valid01.result +2 -0
  178. data/test/data/users-guide/valid02.result +2 -0
  179. data/test/data/users-guide/valid03.result +2 -0
  180. data/test/data/users-guide/valid04.result +2 -0
  181. data/test/data/users-guide/valid05.result +2 -0
  182. data/test/data/users-guide/valid06.result +2 -0
  183. data/test/data/users-guide/valid07.result +2 -0
  184. data/test/data/users-guide/valid08.result +2 -0
  185. data/test/data/users-guide/valid12.result +2 -0
  186. data/test/data/users-guide/valid13.result +2 -0
  187. data/test/data/users-guide/valid14.result +2 -0
  188. data/test/data/users-guide/valid15.result +2 -0
  189. data/test/data/users-guide/validate08.rb +37 -0
  190. data/test/test-action.rb +78 -0
  191. data/test/test-action.yaml +738 -0
  192. data/test/test-databinding.rb +83 -0
  193. data/test/test-databinding.yaml +339 -0
  194. data/test/test-main.rb +157 -0
  195. data/test/test-main.yaml +415 -0
  196. data/test/test-metavalidator.rb +80 -0
  197. data/test/test-metavalidator.yaml +1179 -0
  198. data/test/test-parser-yaml.rb +57 -0
  199. data/test/test-parser-yaml.yaml +1749 -0
  200. data/test/test-rule.rb +26 -0
  201. data/test/test-rule.yaml +317 -0
  202. data/test/test-users-guide.rb +75 -0
  203. data/test/test-util.rb +125 -0
  204. data/test/test-validator.rb +95 -0
  205. data/test/test-validator.yaml +986 -0
  206. data/test/test-yaml-parser.rb +47 -0
  207. data/test/test-yaml-parser.yaml +1226 -0
  208. data/test/test.rb +61 -0
  209. metadata +274 -0
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -0,0 +1,10 @@
1
+
2
+ all:
3
+ kwalify -lm address-book.schema.yaml
4
+ kwalify -lf address-book.schema.yaml address-book.yaml
5
+ kwalify -a genclass-ruby -lf address-book.schema.yaml > address-book.rb
6
+ # kwalify -a genclass-java -lf address-book.schema.yaml
7
+
8
+
9
+ clean:
10
+ rm -f address-book.rb
@@ -0,0 +1,45 @@
1
+ ##
2
+ ## Kwalify schema example for address book
3
+ ##
4
+ ## $Release: 0.7.2 $
5
+ ## copyright(c) 2005-2010 kuwata-lab all rights reserved.
6
+ ##
7
+ ##
8
+ ## NOTE: 'type: str' is omitted in this example because 'str' is default type.
9
+ ##
10
+
11
+ type: seq
12
+ required: yes
13
+ sequence:
14
+ - type: map
15
+ classname: Person
16
+ required: yes
17
+ mapping:
18
+ "name":
19
+ type: str
20
+ required: yes
21
+ unique: yes
22
+ "email":
23
+ type: str
24
+ pattern: /@/
25
+ "tel":
26
+ type: str
27
+ pattern: /^\d+-\d+-\d+$/
28
+ "birth":
29
+ type: date
30
+ "age":
31
+ type: int
32
+ "zip":
33
+ type: str
34
+ pattern: /^\d+-\d+$/
35
+ "addr":
36
+ type: str
37
+ "blood":
38
+ type: str
39
+ enum:
40
+ - A
41
+ - B
42
+ - O
43
+ - AB
44
+ "memo":
45
+ type: any
@@ -0,0 +1,36 @@
1
+ ##
2
+ ## address book example
3
+ ##
4
+
5
+ - name: Sumire
6
+ email: amethyst@mail.com
7
+ tel: 012-111-1111
8
+ birth: 1985-01-01
9
+ age: 20
10
+ zip: 123-4567
11
+ addr: xxxx xxxx xxxx
12
+ blood: B
13
+ memo: My friend
14
+
15
+ - name: Kasumi
16
+ email: mist@mail.net
17
+ tel: 012-222-2222
18
+ birth: 1980-02-02
19
+ age: 25
20
+ blood: AB
21
+ memo:
22
+ - Home tutor
23
+ - A doctor (university)
24
+
25
+ - name: Nana
26
+ email: seven@mail.com
27
+ tel: 012-333-3333
28
+ birth: 1990-03-03
29
+ age: 15
30
+ blood: O
31
+ memo: My sister
32
+
33
+ - name: Sizuka
34
+ email: quiet@mail.org
35
+ memo: Firend of Sumire
36
+
@@ -0,0 +1,63 @@
1
+ teams:
2
+ - &thechildren
3
+ name: The Children
4
+ desc: Level 7 ESPers
5
+ chief: *minamoto # preceding alias
6
+ members: [*kaoru, *aoi, *shiho] # preceding alias
7
+ - &thewildcat
8
+ name: The WildCat
9
+ desc: Level 6 Esper
10
+ chief: *tanizaki # preceding alias
11
+ members: [*naomi] # preceding alias
12
+ - &thehounds
13
+ name: The Hounds
14
+ desc: Hatsune & Akira
15
+ chief: *kojika # preceding alias
16
+ members: [*hatsune, *akira] # preceding alias
17
+
18
+ members:
19
+ - &minamoto
20
+ name: Kohichi Minamoto
21
+ desc: Scientist
22
+ team: *thechildren
23
+ kind: normal
24
+ - &kaoru
25
+ name: Kaoru Akashi
26
+ desc: Psychokino
27
+ team: *thechildren
28
+ kind: esper
29
+ - &aoi
30
+ name: Aoi Nogami
31
+ desc: Teleporter
32
+ team: *thechildren
33
+ kind: esper
34
+ - &shiho
35
+ name: Shiho Sannomiya
36
+ desc: Psycometrer
37
+ team: *thechildren
38
+ kind: esper
39
+ - &tanizaki
40
+ name: Ichiro Tanizaki
41
+ desc: Hentai Oyaji
42
+ team: *thewildcat
43
+ kind: normal
44
+ - &naomi
45
+ name: Naomi Umegae
46
+ desc: Psychokino
47
+ team: *thewildcat
48
+ kind: esper
49
+ - &kojika
50
+ name: Keiko Kojika
51
+ desc: Naturalist
52
+ team: *thehounds
53
+ kind: normal
54
+ - &hatsune
55
+ name: Hatsune Inugami
56
+ desc: Wolfwoman
57
+ team: *thehounds
58
+ kind: esper
59
+ - &akira
60
+ name: Akira Yadorigi
61
+ desc: Animal Controller
62
+ team: *thehounds
63
+ kind: esper
@@ -0,0 +1,31 @@
1
+ type: map
2
+ required: yes
3
+ mapping:
4
+ "teams":
5
+ type: seq
6
+ required: yes
7
+ sequence:
8
+ - &team
9
+ type: map
10
+ required: yes
11
+ class: Team
12
+ mapping:
13
+ "name": {type: str, required: yes, unique: yes}
14
+ "desc": {type: str}
15
+ "chief": *member # preceding alias
16
+ "members":
17
+ type: seq
18
+ sequence: [*member] # preceding alias
19
+ "members":
20
+ type: seq
21
+ required: yes
22
+ sequence:
23
+ - &member
24
+ type: map
25
+ required: yes
26
+ class: Member
27
+ mapping:
28
+ "name": {type: str, required: yes, unique: yes}
29
+ "desc": {type: str}
30
+ "team": *team
31
+ "kind": {type: str, enum: [normal, esper] }
@@ -0,0 +1,8 @@
1
+ all: main.rb models.rb
2
+ ruby main.rb
3
+
4
+ models.rb: BABEL.schema.yaml
5
+ kwalify -a genclass-ruby -f BABEL.schema.yaml -tP --hashlike --module=Babel --initialize=false > models.rb
6
+
7
+ clean:
8
+ rm -f models.rb
@@ -0,0 +1,13 @@
1
+ task :default => 'main'
2
+
3
+ task 'main' => ['models.rb'] do
4
+ sh "ruby main.rb"
5
+ end
6
+
7
+ file 'models.rb' => ['BABEL.schema.yaml'] do
8
+ sh "kwalify -a genclass-ruby -f BABEL.schema.yaml -tP --hashlike --module=Babel --initialize=false > models.rb"
9
+ end
10
+
11
+ task 'clean' do
12
+ rm_f 'models.rb'
13
+ end
@@ -0,0 +1,27 @@
1
+ require 'kwalify'
2
+ require 'models'
3
+
4
+ ## load schema definition
5
+ schema = Kwalify::Yaml.load_file('BABEL.schema.yaml',
6
+ :untabify=>true,
7
+ :preceding_alias=>true)
8
+
9
+ ## add module name to 'class:'
10
+ Kwalify::Util.traverse_schema(schema) do |rulehash|
11
+ if rulehash['class']
12
+ rulehash['class'] = 'Babel::' + rulehash['class']
13
+ end
14
+ end
15
+
16
+ ## create validator
17
+ validator = Kwalify::Validator.new(schema)
18
+
19
+ ## parse with data-binding
20
+ parser = Kwalify::Yaml::Parser.new(validator)
21
+ parser.preceding_alias = true
22
+ parser.data_binding = true
23
+ ydoc = parser.parse_file('BABEL.data.yaml', :untabify=>true)
24
+
25
+ ## show document
26
+ require 'pp'
27
+ pp ydoc
@@ -0,0 +1,9 @@
1
+ all:
2
+ kwalify -lm invoice.schema.yaml
3
+ kwalify -lf invoice.schema.yaml invoice.yaml
4
+ kwalify -a genclass-ruby -lf invoice.schema.yaml > invoice.rb
5
+ # kwalify -a genclass-java -lf invoice.schema.yaml
6
+
7
+
8
+ clean:
9
+ rm -f invoice.rb
@@ -0,0 +1,43 @@
1
+ ###
2
+ ### Kwalify schema example for invoice
3
+ ###
4
+ ### $Rev$
5
+ ### $Release: 0.7.2 $
6
+ ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
7
+ ###
8
+
9
+ type: map
10
+ classname: Invoice
11
+ required: yes
12
+ mapping:
13
+ "invoice": { type: int, required: yes, unique: yes }
14
+ "date": { type: date, required: yes }
15
+ "bill-to": &customer
16
+ type: map
17
+ required: yes
18
+ mapping:
19
+ "given": { type: str, required: yes }
20
+ "family": { type: str, required: yes }
21
+ "address":
22
+ type: map
23
+ required: yes
24
+ mapping:
25
+ "lines": { type: str }
26
+ "city": { type: str }
27
+ "state": { type: str }
28
+ "postal": { type: int }
29
+ "ship-to": *customer
30
+ "product":
31
+ type: seq
32
+ required: yes
33
+ sequence:
34
+ - type: map
35
+ required: yes
36
+ mapping:
37
+ "sku": { type: str, required: yes, pattern: '/^[A-Z0-9]+$/' }
38
+ "quantity": { type: int, required: yes }
39
+ "description": { type: str }
40
+ "price": { type: float }
41
+ "tax": { type: float }
42
+ "total": { type: float, required: yes }
43
+ "comments": { type: str }
@@ -0,0 +1,32 @@
1
+ ##
2
+ ## from http://www.yaml.org/start.html
3
+ ##
4
+ --- !clarkevans.com/^invoice
5
+ invoice: 34843
6
+ date : 2001-01-23
7
+ bill-to: &id001
8
+ given : Chris
9
+ family : Dumars
10
+ address:
11
+ lines: |
12
+ 458 Walkman Dr.
13
+ Suite #292
14
+ city : Royal Oak
15
+ state : MI
16
+ postal : 48046
17
+ ship-to: *id001
18
+ product:
19
+ - sku : BL394D
20
+ quantity : 4
21
+ description : Basketball
22
+ price : 450.00
23
+ - sku : BL4438H
24
+ quantity : 1
25
+ description : Super Hoop
26
+ price : 2392.00
27
+ tax : 251.42
28
+ total: 4443.52
29
+ comments: >
30
+ Late afternoon is best.
31
+ Backup contact is Nancy
32
+ Billsmer @ 338-4338.
@@ -0,0 +1,10 @@
1
+
2
+ all:
3
+ kwalify -lm tapkit.schema.yaml
4
+ kwalify -lf tapkit.schema.yaml tapkit.yaml
5
+ kwalify -a genclass-ruby -lf tapkit.schema.yaml --module=Tapkit > tapkit.rb
6
+ # kwalify -a genclass-java -lf tapkit.schema.yaml --package=tapkit
7
+
8
+
9
+ clean:
10
+ rm -f tapkit.rb
@@ -0,0 +1,7 @@
1
+ require 'yaml'
2
+ ydoc = YAML.load_file('tapkit.yaml')
3
+
4
+ require 'tapkit'
5
+ schema = Tapkit::Schema.new(ydoc)
6
+ require 'pp'
7
+ pp schema
@@ -0,0 +1,146 @@
1
+ ##
2
+ ## Kwalify schema example for TapKit
3
+ ##
4
+ ## $Release: 0.7.2 $
5
+ ## copyright(c) 2005-2010 kuwata-lab all rights reserved.
6
+ ##
7
+
8
+ type: map
9
+ classname: Schema
10
+ mapping:
11
+ "adapter_name":
12
+ type: str
13
+ enum:
14
+ - DBI
15
+ - CSV
16
+ #- MySQL
17
+ #- PostgreSQL
18
+ #- OpenBase
19
+ "connection":
20
+ type: map
21
+ classname: Connection
22
+ mapping:
23
+ "url":
24
+ type: str
25
+ required: yes
26
+ "user":
27
+ type: str
28
+ "password":
29
+ type: str
30
+ "encoding":
31
+ type: str
32
+ enum:
33
+ - jis
34
+ - sjis
35
+ - euc
36
+ "path":
37
+ type: str
38
+ "entities":
39
+ type: seq
40
+ sequence:
41
+ - type: map
42
+ classname: Entity
43
+ mapping:
44
+ "name":
45
+ type: str
46
+ required: yes
47
+ unique: yes
48
+ "external_name":
49
+ type: str
50
+ required: yes
51
+ "class_properties":
52
+ type: seq
53
+ required: yes
54
+ sequence:
55
+ - type: str
56
+ "primary_key_attributes":
57
+ type: seq
58
+ required: yes
59
+ sequence:
60
+ - type: str
61
+ unique: yes
62
+ "attributes":
63
+ type: seq
64
+ required: yes
65
+ sequence:
66
+ - type: map
67
+ classname: Attribute
68
+ mapping:
69
+ "name":
70
+ type: str
71
+ required: yes
72
+ unique: yes
73
+ "column_name":
74
+ type: str
75
+ required: yes
76
+ "class_name":
77
+ type: str
78
+ enum:
79
+ - String
80
+ - Integer
81
+ - Float
82
+ - Date
83
+ - Time
84
+ - Timestamp
85
+ - Boolean
86
+ "external_type":
87
+ type: str
88
+ required: yes
89
+ enum: [
90
+ char, character, varchar, char varying, character varying,
91
+ nchar, national char, national character,
92
+ national character varying, bit, bit varying,
93
+ int, integer, smallint, interval,
94
+ numeric, decimal, dec, float, real, double presicion,
95
+ date, time, timestamp
96
+ ]
97
+ "allow_null":
98
+ type: bool
99
+ "read_only":
100
+ type: bool
101
+ "width":
102
+ type: int
103
+ "factory_method":
104
+ type: str
105
+ "convertion_method":
106
+ type: str
107
+ "relationships":
108
+ type: seq
109
+ sequence:
110
+ - type: map
111
+ classname: Relationship
112
+ mapping:
113
+ "name":
114
+ type: str
115
+ required: yes
116
+ unique: yes
117
+ "destination":
118
+ type: str
119
+ required: yes
120
+ "joins":
121
+ type: seq
122
+ required: yes
123
+ sequence:
124
+ - type: map
125
+ mapping:
126
+ "source":
127
+ type: str
128
+ "destination":
129
+ type: str
130
+ "join-semantic":
131
+ type: str
132
+ enum:
133
+ - inner
134
+ - left_outer
135
+ - right_outer
136
+ - full_outer
137
+ "to_many":
138
+ type: bool
139
+ "mandatory":
140
+ type: bool
141
+ "delete_rule":
142
+ type: str
143
+ enum:
144
+ - nullify
145
+ - cascade
146
+ - deny