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.
Files changed (219) hide show
  1. data/CHANGES.txt +232 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +16 -19
  4. data/bin/kwalify +3 -3
  5. data/contrib/inline-require +6 -4
  6. data/contrib/kwalify +3719 -2427
  7. data/doc-api/classes/CommandOptionError.html +17 -17
  8. data/doc-api/classes/CommandOptionParser.html +63 -63
  9. data/doc-api/classes/Kwalify.html +29 -7
  10. data/doc-api/classes/Kwalify/AssertionError.html +9 -9
  11. data/doc-api/classes/Kwalify/BaseError.html +72 -71
  12. data/doc-api/classes/Kwalify/BaseParser.html +461 -0
  13. data/doc-api/classes/Kwalify/CommandOptionError.html +11 -11
  14. data/doc-api/classes/Kwalify/ErrorHelper.html +51 -46
  15. data/doc-api/classes/Kwalify/HashInterface.html +13 -135
  16. data/doc-api/classes/Kwalify/Json.html +105 -0
  17. data/doc-api/classes/Kwalify/Main.html +129 -126
  18. data/doc-api/classes/Kwalify/MetaValidator.html +248 -232
  19. data/doc-api/classes/Kwalify/Parser.html +12 -12
  20. data/doc-api/classes/Kwalify/PlainYamlParser.html +166 -163
  21. data/doc-api/classes/Kwalify/PlainYamlParser/Alias.html +11 -11
  22. data/doc-api/classes/Kwalify/Rule.html +152 -130
  23. data/doc-api/classes/Kwalify/SchemaError.html +10 -10
  24. data/doc-api/classes/Kwalify/SyntaxError.html +185 -0
  25. data/doc-api/classes/Kwalify/Types.html +26 -25
  26. data/doc-api/classes/Kwalify/Util.html +389 -0
  27. data/doc-api/classes/Kwalify/Util/HashLike.html +246 -0
  28. data/doc-api/classes/Kwalify/Util/OrderedHash.html +330 -0
  29. data/doc-api/classes/Kwalify/ValidationError.html +10 -10
  30. data/doc-api/classes/Kwalify/Validator.html +153 -86
  31. data/doc-api/classes/Kwalify/Yaml.html +181 -0
  32. data/doc-api/classes/Kwalify/Yaml/Parser.html +1538 -0
  33. data/doc-api/classes/Kwalify/YamlParser.html +190 -183
  34. data/doc-api/classes/Kwalify/YamlSyntaxError.html +8 -57
  35. data/doc-api/created.rid +1 -1
  36. data/doc-api/files/__/README_txt.html +17 -22
  37. data/doc-api/files/kwalify/errors_rb.html +2 -2
  38. data/doc-api/files/kwalify/main_rb.html +4 -3
  39. data/doc-api/files/kwalify/messages_rb.html +2 -2
  40. data/doc-api/files/kwalify/meta-validator_rb.html +3 -3
  41. data/doc-api/files/kwalify/{util/yaml-helper_rb.html → parser/base_rb.html} +8 -6
  42. data/doc-api/files/kwalify/parser/yaml_rb.html +117 -0
  43. data/doc-api/files/kwalify/rule_rb.html +2 -2
  44. data/doc-api/files/kwalify/types_rb.html +2 -2
  45. data/doc-api/files/kwalify/util/assert-text-equal_rb.html +2 -2
  46. data/doc-api/files/kwalify/util/hash-interface_rb.html +9 -2
  47. data/doc-api/files/kwalify/util/hashlike_rb.html +107 -0
  48. data/doc-api/files/kwalify/util/option-parser_rb.html +2 -2
  49. data/doc-api/files/kwalify/util/ordered-hash_rb.html +107 -0
  50. data/doc-api/files/kwalify/util/testcase-helper_rb.html +2 -2
  51. data/doc-api/files/kwalify/util_rb.html +107 -0
  52. data/doc-api/files/kwalify/validator_rb.html +2 -2
  53. data/doc-api/files/kwalify/yaml-parser_rb.html +2 -2
  54. data/doc-api/files/kwalify_rb.html +3 -2
  55. data/doc-api/fr_class_index.html +8 -1
  56. data/doc-api/fr_file_index.html +5 -1
  57. data/doc-api/fr_method_index.html +128 -69
  58. data/doc/img/fig01.png +0 -0
  59. data/doc/users-guide.html +882 -717
  60. data/examples/address-book/address-book.schema.yaml +2 -2
  61. data/examples/data-binding/BABEL.data.yaml +63 -0
  62. data/examples/data-binding/BABEL.schema.yaml +31 -0
  63. data/examples/data-binding/Makefile +8 -0
  64. data/examples/data-binding/Rakefile +13 -0
  65. data/examples/data-binding/main.rb +27 -0
  66. data/examples/invoice/invoice.schema.yaml +3 -3
  67. data/examples/tapkit/tapkit.schema.yaml +2 -2
  68. data/lib/kwalify.rb +41 -4
  69. data/lib/kwalify/errors.rb +118 -96
  70. data/lib/kwalify/kwalify.schema.yaml +58 -0
  71. data/lib/kwalify/main.rb +384 -377
  72. data/lib/kwalify/messages.rb +41 -27
  73. data/lib/kwalify/meta-validator.rb +251 -331
  74. data/lib/kwalify/parser/base.rb +127 -0
  75. data/lib/kwalify/parser/yaml.rb +837 -0
  76. data/lib/kwalify/rule.rb +545 -487
  77. data/lib/kwalify/templates/genclass-java.eruby +189 -162
  78. data/lib/kwalify/templates/genclass-php.eruby +104 -0
  79. data/lib/kwalify/templates/genclass-ruby.eruby +95 -66
  80. data/lib/kwalify/types.rb +107 -106
  81. data/lib/kwalify/util.rb +157 -0
  82. data/lib/kwalify/util/assert-text-equal.rb +33 -31
  83. data/lib/kwalify/util/hash-interface.rb +11 -30
  84. data/lib/kwalify/util/hashlike.rb +51 -0
  85. data/lib/kwalify/util/option-parser.rb +144 -144
  86. data/lib/kwalify/util/ordered-hash.rb +57 -0
  87. data/lib/kwalify/util/testcase-helper.rb +3 -3
  88. data/lib/kwalify/validator.rb +267 -212
  89. data/lib/kwalify/yaml-parser.rb +822 -768
  90. data/setup.rb +861 -607
  91. data/test/Rookbook.yaml +10 -0
  92. data/test/{tmp.dir/Context.java → data/users-guide/AddressBook.java.expected} +11 -11
  93. data/test/data/users-guide/BABEL.data.yaml +24 -0
  94. data/test/data/users-guide/BABEL.schema.yaml +30 -0
  95. data/test/data/users-guide/ExampleAddressBook.java +47 -0
  96. data/test/{tmp.dir/Group.java → data/users-guide/Group.java.expected} +2 -11
  97. data/test/data/users-guide/Person.java.expected +44 -0
  98. data/test/data/users-guide/address_book.rb +52 -0
  99. data/test/data/users-guide/address_book.schema.yaml +28 -0
  100. data/test/data/users-guide/address_book.yaml +27 -0
  101. data/test/data/users-guide/answers-schema.yaml +12 -0
  102. data/test/data/users-guide/answers-validator.rb +52 -0
  103. data/test/data/users-guide/babel_genclass.result +26 -0
  104. data/test/data/users-guide/config.schema.yaml +7 -0
  105. data/test/data/users-guide/config.yaml +4 -0
  106. data/test/{tmp.dir/silent1.document → data/users-guide/document01a.yaml} +0 -0
  107. data/test/data/users-guide/document01b.yaml +3 -0
  108. data/test/data/users-guide/document02a.yaml +4 -0
  109. data/test/data/users-guide/document02b.yaml +4 -0
  110. data/test/data/users-guide/document03a.yaml +6 -0
  111. data/test/data/users-guide/document03b.yaml +6 -0
  112. data/test/data/users-guide/document04a.yaml +9 -0
  113. data/test/data/users-guide/document04b.yaml +9 -0
  114. data/test/data/users-guide/document05a.yaml +11 -0
  115. data/test/data/users-guide/document05b.yaml +12 -0
  116. data/test/data/users-guide/document06a.yaml +15 -0
  117. data/test/data/users-guide/document06b.yaml +16 -0
  118. data/test/data/users-guide/document07a.yaml +9 -0
  119. data/test/data/users-guide/document07b.yaml +7 -0
  120. data/test/data/users-guide/document12a.json +10 -0
  121. data/test/data/users-guide/document12b.json +6 -0
  122. data/test/data/users-guide/document13a.yaml +17 -0
  123. data/test/data/users-guide/document14a.yaml +3 -0
  124. data/test/data/users-guide/document14b.yaml +3 -0
  125. data/test/data/users-guide/document15a.yaml +6 -0
  126. data/test/data/users-guide/document15b.yaml +5 -0
  127. data/test/data/users-guide/example_address_book.rb +10 -0
  128. data/test/data/users-guide/example_address_book_java.result +32 -0
  129. data/test/data/users-guide/example_address_book_ruby.result +31 -0
  130. data/test/data/users-guide/genclass_java.result +4 -0
  131. data/test/data/users-guide/howto-validation-with-parsing.rb +28 -0
  132. data/test/data/users-guide/howto-validation.rb +25 -0
  133. data/test/data/users-guide/howto3.rb +6 -0
  134. data/test/data/users-guide/howto3.result +5 -0
  135. data/test/data/users-guide/howto3.yaml +8 -0
  136. data/test/data/users-guide/howto5_databinding.result +111 -0
  137. data/test/data/users-guide/invalid01.result +3 -0
  138. data/test/data/users-guide/invalid02.result +5 -0
  139. data/test/data/users-guide/invalid03.result +5 -0
  140. data/test/data/users-guide/invalid04.result +4 -0
  141. data/test/data/users-guide/invalid05.result +11 -0
  142. data/test/data/users-guide/invalid06.result +4 -0
  143. data/test/data/users-guide/invalid07.result +3 -0
  144. data/test/data/users-guide/invalid08.result +3 -0
  145. data/test/data/users-guide/invalid12.json +8 -0
  146. data/test/data/users-guide/invalid14.result +4 -0
  147. data/test/data/users-guide/invalid15.result +4 -0
  148. data/test/data/users-guide/loadbabel.rb +27 -0
  149. data/test/data/users-guide/loadconfig.rb +15 -0
  150. data/test/data/users-guide/loadconfig.result +2 -0
  151. data/test/data/users-guide/models.rb +22 -0
  152. data/test/data/users-guide/option_ha.result +6 -0
  153. data/test/data/users-guide/option_ha_genclass_java.result +7 -0
  154. data/test/{tmp.dir/meta1.schema → data/users-guide/schema01.yaml} +0 -0
  155. data/test/data/users-guide/schema02.yaml +12 -0
  156. data/test/data/users-guide/schema03.yaml +9 -0
  157. data/test/data/users-guide/schema04.yaml +20 -0
  158. data/test/data/users-guide/schema05.yaml +29 -0
  159. data/test/data/users-guide/schema06.yaml +11 -0
  160. data/test/data/users-guide/schema12.json +12 -0
  161. data/test/data/users-guide/schema13.yaml +13 -0
  162. data/test/data/users-guide/schema14.yaml +5 -0
  163. data/test/data/users-guide/schema15.yaml +21 -0
  164. data/test/data/users-guide/valid01.result +2 -0
  165. data/test/data/users-guide/valid02.result +2 -0
  166. data/test/data/users-guide/valid03.result +2 -0
  167. data/test/data/users-guide/valid04.result +2 -0
  168. data/test/data/users-guide/valid05.result +2 -0
  169. data/test/data/users-guide/valid06.result +2 -0
  170. data/test/data/users-guide/valid07.result +2 -0
  171. data/test/data/users-guide/valid08.result +2 -0
  172. data/test/data/users-guide/valid12.result +2 -0
  173. data/test/data/users-guide/valid13.result +2 -0
  174. data/test/data/users-guide/valid14.result +2 -0
  175. data/test/data/users-guide/valid15.result +2 -0
  176. data/test/data/users-guide/validate08.rb +37 -0
  177. data/test/test-action.rb +78 -0
  178. data/test/test-action.yaml +738 -0
  179. data/test/test-databinding.rb +80 -0
  180. data/test/test-databinding.yaml +301 -0
  181. data/test/test-main.rb +129 -150
  182. data/test/test-main.yaml +126 -321
  183. data/test/test-metavalidator.rb +47 -47
  184. data/test/test-metavalidator.yaml +77 -21
  185. data/test/test-parser-yaml.rb +57 -0
  186. data/test/test-parser-yaml.yaml +1749 -0
  187. data/test/test-rule.rb +14 -15
  188. data/test/test-rule.yaml +6 -3
  189. data/test/test-users-guide.rb +75 -0
  190. data/test/test-validator.rb +77 -52
  191. data/test/test-validator.yaml +168 -6
  192. data/test/test-yaml-parser.rb +47 -0
  193. data/test/{test-yamlparser.yaml → test-yaml-parser.yaml} +159 -52
  194. data/test/test.rb +37 -21
  195. metadata +136 -37
  196. data/COPYING +0 -340
  197. data/ChangeLog +0 -70
  198. data/doc-api/classes/YamlHelper.html +0 -259
  199. data/lib/kwalify/util/yaml-helper.rb +0 -82
  200. data/test/test-yamlparser.rb +0 -58
  201. data/test/tmp.dir/User.java +0 -43
  202. data/test/tmp.dir/action1.document +0 -18
  203. data/test/tmp.dir/action1.schema +0 -32
  204. data/test/tmp.dir/action2.document +0 -18
  205. data/test/tmp.dir/action2.schema +0 -32
  206. data/test/tmp.dir/emacs.document +0 -6
  207. data/test/tmp.dir/emacs.schema +0 -6
  208. data/test/tmp.dir/meta1.document +0 -0
  209. data/test/tmp.dir/meta2.document +0 -0
  210. data/test/tmp.dir/meta2.schema +0 -3
  211. data/test/tmp.dir/silent1.schema +0 -3
  212. data/test/tmp.dir/silent2.document +0 -7
  213. data/test/tmp.dir/silent2.schema +0 -3
  214. data/test/tmp.dir/stream.invalid +0 -8
  215. data/test/tmp.dir/stream.schema +0 -3
  216. data/test/tmp.dir/stream.valid +0 -8
  217. data/test/tmp.dir/untabify.document +0 -5
  218. data/test/tmp.dir/untabify.schema +0 -10
  219. data/todo.txt +0 -34
@@ -1,43 +0,0 @@
1
- // generated by kwalify from action2.schema
2
-
3
- import java.util.*;
4
-
5
- /**
6
- *
7
- */
8
- public class User {
9
-
10
- private String _name;
11
- private boolean _gender;
12
- private String _mail;
13
- private String _desc;
14
- private User _manager;
15
-
16
- public User() {}
17
-
18
- public User(Map map) {
19
- _name = (String)map.get("name");
20
- if (map.get("gender") != null) {
21
- _gender = ((Boolean)map.get("gender")).booleanValue();
22
- }
23
- _mail = (String)map.get("mail");
24
- _desc = (String)map.get("desc");
25
- Object obj;
26
- if ((obj = map.get("manager")) != null && obj instanceof Map) {
27
- _manager = new User((Map)obj);
28
- } else {
29
- _manager = (User)obj;
30
- }
31
- }
32
-
33
- public String getName() { return _name; }
34
- public void setName(String name_) { _name = name_; }
35
- public boolean getGender() { return _gender; }
36
- public void setGender(boolean gender_) { _gender = gender_; }
37
- public String getMail() { return _mail; }
38
- public void setMail(String mail_) { _mail = mail_; }
39
- public String getDesc() { return _desc; }
40
- public void setDesc(String desc_) { _desc = desc_; }
41
- public User getManager() { return _manager; }
42
- public void setManager(User manager_) { _manager = manager_; }
43
- }
@@ -1,18 +0,0 @@
1
- groups:
2
- - name: admin
3
- desc: administrator group
4
- owner: &root
5
- name: root
6
- desc: root user
7
- - name: users
8
- desc: user group
9
- owner: &guest
10
- name: guest
11
- desc: guest user
12
- users:
13
- - *root
14
- - *guest
15
- - &user1
16
- name: user1
17
- - name: user2
18
- manager: *user1
@@ -1,32 +0,0 @@
1
- type: map
2
- classname: Context
3
- mapping:
4
- "groups":
5
- type: seq
6
- sequence:
7
- - type: map
8
- classname: Group
9
- mapping:
10
- "name":
11
- type: str
12
- required: yes
13
- "desc":
14
- type: str
15
- "owner": &userschema
16
- type: map
17
- classname: User
18
- mapping:
19
- "name":
20
- type: str
21
- required: yes
22
- "desc":
23
- type: str
24
- "gender":
25
- type: bool
26
- "mail":
27
- type: str
28
- "manager": *userschema
29
- "users":
30
- type: seq
31
- sequence:
32
- - *userschema
@@ -1,18 +0,0 @@
1
- groups:
2
- - name: admin
3
- desc: administrator group
4
- owner: &root
5
- name: root
6
- desc: root user
7
- - name: users
8
- desc: user group
9
- owner: &guest
10
- name: guest
11
- desc: guest user
12
- users:
13
- - *root
14
- - *guest
15
- - &user1
16
- name: user1
17
- - name: user2
18
- manager: *user1
@@ -1,32 +0,0 @@
1
- type: map
2
- classname: Context
3
- mapping:
4
- "groups":
5
- type: seq
6
- sequence:
7
- - type: map
8
- classname: Group
9
- mapping:
10
- "name":
11
- type: str
12
- required: yes
13
- "desc":
14
- type: str
15
- "owner": &userschema
16
- type: map
17
- classname: User
18
- mapping:
19
- "name":
20
- type: str
21
- required: yes
22
- "desc":
23
- type: str
24
- "gender":
25
- type: bool
26
- "mail":
27
- type: str
28
- "manager": *userschema
29
- "users":
30
- type: seq
31
- sequence:
32
- - *userschema
@@ -1,6 +0,0 @@
1
- - key: one
2
- value: 1
3
- - key: 2
4
- val: two
5
- - kye: three
6
- value:
@@ -1,6 +0,0 @@
1
- type: seq
2
- sequence:
3
- - type: map
4
- mapping:
5
- "key": { type: str, required: yes }
6
- "value": { type: any }
File without changes
File without changes
@@ -1,3 +0,0 @@
1
- type: map
2
- sequence:
3
- - type: str
@@ -1,3 +0,0 @@
1
- type: seq
2
- sequence:
3
- - type: str
@@ -1,7 +0,0 @@
1
- - foo
2
- - bar
3
- - baz
4
- ---
5
- - foo
6
- - 123
7
- - true
@@ -1,3 +0,0 @@
1
- type: seq
2
- sequence:
3
- - type: str
@@ -1,8 +0,0 @@
1
- ---
2
- - foo
3
- - 123
4
- - baz
5
- ---
6
- - aaa
7
- - bbb
8
- - true
@@ -1,3 +0,0 @@
1
- type: seq
2
- sequence:
3
- - type: str
@@ -1,8 +0,0 @@
1
- ---
2
- - foo
3
- - bar
4
- - baz
5
- ---
6
- - aaa
7
- - bbb
8
- - ccc
@@ -1,5 +0,0 @@
1
- #
2
- - key: foo
3
- value: 123
4
- - key: bar
5
- value: [a, b, c]
@@ -1,10 +0,0 @@
1
- type: seq
2
- sequence:
3
- - type: map
4
- mapping:
5
- "key":
6
- type: text
7
- required: yes
8
- "value":
9
- type: any
10
- required: yes
data/todo.txt DELETED
@@ -1,34 +0,0 @@
1
- .- [v] change filename 'error-messages.rb' to 'error-msg.rb'
2
- .- [_] support i18n error message
3
- .- [v] change class name 'RuleSet' to 'Rule' or 'Schema'
4
- .- [v] use hash style to define hash children
5
- .- [v] rename 'children' to 'elements' or 'entries'
6
- .- [v] support element anchor
7
- .- [v] users-guide
8
- .- [v] examples
9
- .- [v] gemspec
10
- .- [v] 'unique:'
11
- .- [-] 'not-null:'
12
- .- [-] 'primary-key:'
13
- .- [-] 'constraints:'
14
- .- [v] meta-validation
15
- .- [v] use 'sequence'/'mapping' or 'hash-elems'/'list-elems' instead of 'elements'
16
- .- [X] 'default:'
17
- .- [v] set default type as 'String'
18
- .- [v] type 'Object'
19
- .- [_] check RelaxNG
20
- .- [_] check XML Schema type
21
- .- [v] separate test script
22
- .- [v] 'range:' or 'value:'
23
- .- [v] 'length:' or 'width:'
24
- .- [v] range 'max-ex' and 'min-ex' (or 'ceiling' and 'floor')
25
- .- [_] range 'noteq'
26
- .- [_] range 'reverse' or 'complement'
27
- .- [v] type 'scalar'
28
- .- [_] type 'collection'
29
- .- [_] 'multiple: yes'
30
- .- [v] support validator hook method
31
- .- [_] test for kwalify command
32
- .- [_] error message customizatin
33
- .- [_] data binding
34
- .- [_] symbol support