schemacop 2.4.7 → 3.0.0.rc0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +25 -1
  4. data/.travis.yml +2 -1
  5. data/CHANGELOG.md +8 -0
  6. data/README.md +41 -708
  7. data/README_V2.md +775 -0
  8. data/README_V3.md +683 -0
  9. data/Rakefile +8 -12
  10. data/VERSION +1 -1
  11. data/lib/schemacop.rb +35 -37
  12. data/lib/schemacop/base_schema.rb +37 -0
  13. data/lib/schemacop/railtie.rb +10 -0
  14. data/lib/schemacop/schema.rb +1 -60
  15. data/lib/schemacop/schema2.rb +22 -0
  16. data/lib/schemacop/schema3.rb +21 -0
  17. data/lib/schemacop/scoped_env.rb +25 -13
  18. data/lib/schemacop/v2.rb +26 -0
  19. data/lib/schemacop/{caster.rb → v2/caster.rb} +16 -2
  20. data/lib/schemacop/{collector.rb → v2/collector.rb} +5 -2
  21. data/lib/schemacop/{dupper.rb → v2/dupper.rb} +1 -1
  22. data/lib/schemacop/{field_node.rb → v2/field_node.rb} +4 -3
  23. data/lib/schemacop/v2/node.rb +142 -0
  24. data/lib/schemacop/{node_resolver.rb → v2/node_resolver.rb} +1 -1
  25. data/lib/schemacop/{node_supporting_field.rb → v2/node_supporting_field.rb} +8 -10
  26. data/lib/schemacop/{node_supporting_type.rb → v2/node_supporting_type.rb} +6 -3
  27. data/lib/schemacop/{node_with_block.rb → v2/node_with_block.rb} +3 -2
  28. data/lib/schemacop/v2/root_node.rb +6 -0
  29. data/lib/schemacop/v2/validator/array_validator.rb +32 -0
  30. data/lib/schemacop/{validator → v2/validator}/boolean_validator.rb +1 -1
  31. data/lib/schemacop/v2/validator/float_validator.rb +7 -0
  32. data/lib/schemacop/v2/validator/hash_validator.rb +37 -0
  33. data/lib/schemacop/v2/validator/integer_validator.rb +7 -0
  34. data/lib/schemacop/{validator → v2/validator}/nil_validator.rb +1 -1
  35. data/lib/schemacop/v2/validator/number_validator.rb +21 -0
  36. data/lib/schemacop/v2/validator/object_validator.rb +29 -0
  37. data/lib/schemacop/v2/validator/string_validator.rb +39 -0
  38. data/lib/schemacop/{validator → v2/validator}/symbol_validator.rb +1 -1
  39. data/lib/schemacop/v3.rb +45 -0
  40. data/lib/schemacop/v3/all_of_node.rb +27 -0
  41. data/lib/schemacop/v3/any_of_node.rb +28 -0
  42. data/lib/schemacop/v3/array_node.rb +219 -0
  43. data/lib/schemacop/v3/boolean_node.rb +16 -0
  44. data/lib/schemacop/v3/combination_node.rb +45 -0
  45. data/lib/schemacop/v3/context.rb +17 -0
  46. data/lib/schemacop/v3/dsl_scope.rb +46 -0
  47. data/lib/schemacop/v3/global_context.rb +114 -0
  48. data/lib/schemacop/v3/hash_node.rb +217 -0
  49. data/lib/schemacop/v3/integer_node.rb +13 -0
  50. data/lib/schemacop/v3/is_not_node.rb +32 -0
  51. data/lib/schemacop/v3/node.rb +214 -0
  52. data/lib/schemacop/v3/node_registry.rb +49 -0
  53. data/lib/schemacop/v3/number_node.rb +18 -0
  54. data/lib/schemacop/v3/numeric_node.rb +76 -0
  55. data/lib/schemacop/v3/object_node.rb +40 -0
  56. data/lib/schemacop/v3/one_of_node.rb +28 -0
  57. data/lib/schemacop/v3/reference_node.rb +49 -0
  58. data/lib/schemacop/v3/result.rb +58 -0
  59. data/lib/schemacop/v3/string_node.rb +124 -0
  60. data/lib/schemacop/v3/symbol_node.rb +13 -0
  61. data/schemacop.gemspec +24 -27
  62. data/test/lib/test_helper.rb +152 -0
  63. data/test/schemas/nested/group.rb +6 -0
  64. data/test/schemas/user.rb +7 -0
  65. data/test/unit/schemacop/v2/casting_test.rb +120 -0
  66. data/test/unit/schemacop/v2/collector_test.rb +47 -0
  67. data/test/unit/schemacop/v2/custom_check_test.rb +95 -0
  68. data/test/unit/schemacop/v2/custom_if_test.rb +97 -0
  69. data/test/unit/schemacop/v2/defaults_test.rb +95 -0
  70. data/test/unit/schemacop/v2/empty_test.rb +16 -0
  71. data/test/unit/schemacop/v2/nil_dis_allow_test.rb +43 -0
  72. data/test/unit/schemacop/v2/node_resolver_test.rb +28 -0
  73. data/test/unit/schemacop/v2/short_forms_test.rb +351 -0
  74. data/test/unit/schemacop/v2/types_test.rb +88 -0
  75. data/test/unit/schemacop/v2/validator_array_test.rb +99 -0
  76. data/test/unit/schemacop/v2/validator_boolean_test.rb +17 -0
  77. data/test/unit/schemacop/v2/validator_float_test.rb +59 -0
  78. data/test/unit/schemacop/v2/validator_hash_test.rb +95 -0
  79. data/test/unit/schemacop/v2/validator_integer_test.rb +48 -0
  80. data/test/unit/schemacop/v2/validator_nil_test.rb +15 -0
  81. data/test/unit/schemacop/v2/validator_number_test.rb +62 -0
  82. data/test/unit/schemacop/v2/validator_object_test.rb +141 -0
  83. data/test/unit/schemacop/v2/validator_string_test.rb +78 -0
  84. data/test/unit/schemacop/v2/validator_symbol_test.rb +18 -0
  85. data/test/unit/schemacop/v3/all_of_node_test.rb +199 -0
  86. data/test/unit/schemacop/v3/any_of_node_test.rb +218 -0
  87. data/test/unit/schemacop/v3/array_node_test.rb +805 -0
  88. data/test/unit/schemacop/v3/boolean_node_test.rb +126 -0
  89. data/test/unit/schemacop/v3/global_context_test.rb +164 -0
  90. data/test/unit/schemacop/v3/hash_node_test.rb +775 -0
  91. data/test/unit/schemacop/v3/integer_node_test.rb +323 -0
  92. data/test/unit/schemacop/v3/is_not_node_test.rb +173 -0
  93. data/test/unit/schemacop/v3/node_test.rb +148 -0
  94. data/test/unit/schemacop/v3/number_node_test.rb +292 -0
  95. data/test/unit/schemacop/v3/object_node_test.rb +170 -0
  96. data/test/unit/schemacop/v3/one_of_node_test.rb +187 -0
  97. data/test/unit/schemacop/v3/reference_node_test.rb +351 -0
  98. data/test/unit/schemacop/v3/string_node_test.rb +334 -0
  99. data/test/unit/schemacop/v3/symbol_node_test.rb +75 -0
  100. metadata +152 -145
  101. data/doc/Schemacop.html +0 -146
  102. data/doc/Schemacop/ArrayValidator.html +0 -329
  103. data/doc/Schemacop/BooleanValidator.html +0 -145
  104. data/doc/Schemacop/Caster.html +0 -379
  105. data/doc/Schemacop/Collector.html +0 -787
  106. data/doc/Schemacop/Dupper.html +0 -214
  107. data/doc/Schemacop/Exceptions.html +0 -115
  108. data/doc/Schemacop/Exceptions/InvalidSchemaError.html +0 -124
  109. data/doc/Schemacop/Exceptions/ValidationError.html +0 -124
  110. data/doc/Schemacop/FieldNode.html +0 -421
  111. data/doc/Schemacop/FloatValidator.html +0 -158
  112. data/doc/Schemacop/HashValidator.html +0 -293
  113. data/doc/Schemacop/IntegerValidator.html +0 -158
  114. data/doc/Schemacop/NilValidator.html +0 -145
  115. data/doc/Schemacop/Node.html +0 -1438
  116. data/doc/Schemacop/NodeResolver.html +0 -258
  117. data/doc/Schemacop/NodeSupportingField.html +0 -590
  118. data/doc/Schemacop/NodeSupportingType.html +0 -612
  119. data/doc/Schemacop/NodeWithBlock.html +0 -289
  120. data/doc/Schemacop/NumberValidator.html +0 -232
  121. data/doc/Schemacop/ObjectValidator.html +0 -298
  122. data/doc/Schemacop/RootNode.html +0 -171
  123. data/doc/Schemacop/Schema.html +0 -699
  124. data/doc/Schemacop/StringValidator.html +0 -295
  125. data/doc/Schemacop/SymbolValidator.html +0 -145
  126. data/doc/ScopedEnv.html +0 -351
  127. data/doc/_index.html +0 -379
  128. data/doc/class_list.html +0 -51
  129. data/doc/css/common.css +0 -1
  130. data/doc/css/full_list.css +0 -58
  131. data/doc/css/style.css +0 -496
  132. data/doc/file.README.html +0 -833
  133. data/doc/file_list.html +0 -56
  134. data/doc/frames.html +0 -17
  135. data/doc/index.html +0 -833
  136. data/doc/inheritance.graphml +0 -524
  137. data/doc/inheritance.pdf +0 -825
  138. data/doc/js/app.js +0 -303
  139. data/doc/js/full_list.js +0 -216
  140. data/doc/js/jquery.js +0 -4
  141. data/doc/method_list.html +0 -587
  142. data/doc/top-level-namespace.html +0 -112
  143. data/lib/schemacop/node.rb +0 -139
  144. data/lib/schemacop/root_node.rb +0 -4
  145. data/lib/schemacop/validator/array_validator.rb +0 -30
  146. data/lib/schemacop/validator/float_validator.rb +0 -5
  147. data/lib/schemacop/validator/hash_validator.rb +0 -35
  148. data/lib/schemacop/validator/integer_validator.rb +0 -5
  149. data/lib/schemacop/validator/number_validator.rb +0 -19
  150. data/lib/schemacop/validator/object_validator.rb +0 -27
  151. data/lib/schemacop/validator/string_validator.rb +0 -37
  152. data/test/casting_test.rb +0 -118
  153. data/test/collector_test.rb +0 -45
  154. data/test/custom_check_test.rb +0 -93
  155. data/test/custom_if_test.rb +0 -95
  156. data/test/defaults_test.rb +0 -93
  157. data/test/empty_test.rb +0 -14
  158. data/test/nil_dis_allow_test.rb +0 -41
  159. data/test/node_resolver_test.rb +0 -26
  160. data/test/short_forms_test.rb +0 -349
  161. data/test/test_helper.rb +0 -13
  162. data/test/types_test.rb +0 -84
  163. data/test/validator_array_test.rb +0 -97
  164. data/test/validator_boolean_test.rb +0 -15
  165. data/test/validator_float_test.rb +0 -57
  166. data/test/validator_hash_test.rb +0 -93
  167. data/test/validator_integer_test.rb +0 -46
  168. data/test/validator_nil_test.rb +0 -13
  169. data/test/validator_number_test.rb +0 -60
  170. data/test/validator_object_test.rb +0 -139
  171. data/test/validator_string_test.rb +0 -76
  172. data/test/validator_symbol_test.rb +0 -16
@@ -1,612 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: Schemacop::NodeSupportingType
8
-
9
- &mdash; Documentation by YARD 0.9.20
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "Schemacop::NodeSupportingType";
19
- relpath = '../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../_index.html">Index (N)</a> &raquo;
40
- <span class='title'><span class='object_link'><a href="../Schemacop.html" title="Schemacop (module)">Schemacop</a></span></span>
41
- &raquo;
42
- <span class="title">NodeSupportingType</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Class: Schemacop::NodeSupportingType
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
- <dl>
70
- <dt>Inherits:</dt>
71
- <dd>
72
- <span class="inheritName"><span class='object_link'><a href="NodeWithBlock.html" title="Schemacop::NodeWithBlock (class)">NodeWithBlock</a></span></span>
73
-
74
- <ul class="fullTree">
75
- <li>Object</li>
76
-
77
- <li class="next"><span class='object_link'><a href="Node.html" title="Schemacop::Node (class)">Node</a></span></li>
78
-
79
- <li class="next"><span class='object_link'><a href="NodeWithBlock.html" title="Schemacop::NodeWithBlock (class)">NodeWithBlock</a></span></li>
80
-
81
- <li class="next">Schemacop::NodeSupportingType</li>
82
-
83
- </ul>
84
- <a href="#" class="inheritanceTree">show all</a>
85
-
86
- </dd>
87
- </dl>
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
- <dl>
100
- <dt>Defined in:</dt>
101
- <dd>lib/schemacop/node_supporting_type.rb</dd>
102
- </dl>
103
-
104
- </div>
105
-
106
- <div id="subclasses">
107
- <h2>Direct Known Subclasses</h2>
108
- <p class="children"><span class='object_link'><a href="ArrayValidator.html" title="Schemacop::ArrayValidator (class)">ArrayValidator</a></span>, <span class='object_link'><a href="FieldNode.html" title="Schemacop::FieldNode (class)">FieldNode</a></span>, <span class='object_link'><a href="RootNode.html" title="Schemacop::RootNode (class)">RootNode</a></span></p>
109
- </div>
110
-
111
-
112
-
113
-
114
-
115
-
116
- <h2>Instance Attribute Summary</h2>
117
-
118
- <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Node.html" title="Schemacop::Node (class)">Node</a></span></h3>
119
- <p class="inherited"><span class='object_link'><a href="Node.html#options-instance_method" title="Schemacop::Node#options (method)">#options</a></span></p>
120
-
121
-
122
-
123
- <h2>
124
- Class Method Summary
125
- <small><a href="#" class="summary_toggle">collapse</a></small>
126
- </h2>
127
-
128
- <ul class="summary">
129
-
130
- <li class="public ">
131
- <span class="summary_signature">
132
-
133
- <a href="#build-class_method" title="build (class method)">.<strong>build</strong>(options, &amp;block) &#x21d2; Object </a>
134
-
135
-
136
-
137
- </span>
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
- <span class="summary_desc"><div class='inline'></div></span>
148
-
149
- </li>
150
-
151
-
152
- </ul>
153
-
154
- <h2>
155
- Instance Method Summary
156
- <small><a href="#" class="summary_toggle">collapse</a></small>
157
- </h2>
158
-
159
- <ul class="summary">
160
-
161
- <li class="public ">
162
- <span class="summary_signature">
163
-
164
- <a href="#exec_block-instance_method" title="#exec_block (instance method)">#<strong>exec_block</strong>(&amp;block) &#x21d2; Object </a>
165
-
166
-
167
-
168
- </span>
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
- <span class="summary_desc"><div class='inline'></div></span>
179
-
180
- </li>
181
-
182
-
183
- <li class="public ">
184
- <span class="summary_signature">
185
-
186
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(options = {}, &amp;block) &#x21d2; NodeSupportingType </a>
187
-
188
-
189
-
190
- </span>
191
-
192
-
193
- <span class="note title constructor">constructor</span>
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
- <span class="summary_desc"><div class='inline'><p>A new instance of NodeSupportingType.</p>
203
- </div></span>
204
-
205
- </li>
206
-
207
-
208
- <li class="public ">
209
- <span class="summary_signature">
210
-
211
- <a href="#type-instance_method" title="#type (instance method)">#<strong>type</strong>(*args, &amp;block) &#x21d2; Object </a>
212
-
213
-
214
-
215
- </span>
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
- <span class="summary_desc"><div class='inline'><p>required signature: First argument must be a type or an array of types Following arguments may be subtypes Last argument may be an options hash.</p>
226
- </div></span>
227
-
228
- </li>
229
-
230
-
231
- <li class="public ">
232
- <span class="summary_signature">
233
-
234
- <a href="#validate-instance_method" title="#validate (instance method)">#<strong>validate</strong>(data, collector) &#x21d2; Object </a>
235
-
236
-
237
-
238
- </span>
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
- <span class="summary_desc"><div class='inline'></div></span>
249
-
250
- </li>
251
-
252
-
253
- </ul>
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
- <h3 class="inherited">Methods inherited from <span class='object_link'><a href="NodeWithBlock.html" title="Schemacop::NodeWithBlock (class)">NodeWithBlock</a></span></h3>
266
- <p class="inherited"><span class='object_link'><a href="NodeWithBlock.html#block_method-class_method" title="Schemacop::NodeWithBlock.block_method (method)">block_method</a></span></p>
267
-
268
-
269
-
270
-
271
-
272
-
273
-
274
-
275
-
276
- <h3 class="inherited">Methods inherited from <span class='object_link'><a href="Node.html" title="Schemacop::Node (class)">Node</a></span></h3>
277
- <p class="inherited"><span class='object_link'><a href="Node.html#class_matches%3F-class_method" title="Schemacop::Node.class_matches? (method)">class_matches?</a></span>, <span class='object_link'><a href="Node.html#clear_klasses-class_method" title="Schemacop::Node.clear_klasses (method)">clear_klasses</a></span>, <span class='object_link'><a href="Node.html#clear_symbols-class_method" title="Schemacop::Node.clear_symbols (method)">clear_symbols</a></span>, <span class='object_link'><a href="Node.html#klass-class_method" title="Schemacop::Node.klass (method)">klass</a></span>, <span class='object_link'><a href="Node.html#option-instance_method" title="Schemacop::Node#option (method)">#option</a></span>, <span class='object_link'><a href="Node.html#option-class_method" title="Schemacop::Node.option (method)">option</a></span>, <span class='object_link'><a href="Node.html#option%3F-instance_method" title="Schemacop::Node#option? (method)">#option?</a></span>, <span class='object_link'><a href="Node.html#register-class_method" title="Schemacop::Node.register (method)">register</a></span>, <span class='object_link'><a href="Node.html#resolve_type_klass-instance_method" title="Schemacop::Node#resolve_type_klass (method)">#resolve_type_klass</a></span>, <span class='object_link'><a href="Node.html#symbol-class_method" title="Schemacop::Node.symbol (method)">symbol</a></span>, <span class='object_link'><a href="Node.html#symbol_matches%3F-class_method" title="Schemacop::Node.symbol_matches? (method)">symbol_matches?</a></span>, <span class='object_link'><a href="Node.html#type_filter_matches%3F-instance_method" title="Schemacop::Node#type_filter_matches? (method)">#type_filter_matches?</a></span>, <span class='object_link'><a href="Node.html#type_label-instance_method" title="Schemacop::Node#type_label (method)">#type_label</a></span>, <span class='object_link'><a href="Node.html#type_matches%3F-class_method" title="Schemacop::Node.type_matches? (method)">type_matches?</a></span>, <span class='object_link'><a href="Node.html#type_matches%3F-instance_method" title="Schemacop::Node#type_matches? (method)">#type_matches?</a></span></p>
278
- <div id="constructor_details" class="method_details_list">
279
- <h2>Constructor Details</h2>
280
-
281
- <div class="method_details first">
282
- <h3 class="signature first" id="initialize-instance_method">
283
-
284
- #<strong>initialize</strong>(options = {}, &amp;block) &#x21d2; <tt><span class='object_link'><a href="" title="Schemacop::NodeSupportingType (class)">NodeSupportingType</a></span></tt>
285
-
286
-
287
-
288
-
289
-
290
- </h3><div class="docstring">
291
- <div class="discussion">
292
- <p>Returns a new instance of NodeSupportingType</p>
293
-
294
-
295
- </div>
296
- </div>
297
- <div class="tags">
298
-
299
-
300
- </div><table class="source_code">
301
- <tr>
302
- <td>
303
- <pre class="lines">
304
-
305
-
306
- 9
307
- 10
308
- 11
309
- 12
310
- 13
311
- 14
312
- 15
313
- 16
314
- 17
315
- 18
316
- 19
317
- 20
318
- 21
319
- 22
320
- 23
321
- 24
322
- 25
323
- 26
324
- 27
325
- 28
326
- 29</pre>
327
- </td>
328
- <td>
329
- <pre class="code"><span class="info file"># File 'lib/schemacop/node_supporting_type.rb', line 9</span>
330
-
331
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
332
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
333
-
334
- <span class='ivar'>@types</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
335
- <span class='id identifier rubyid_exec_block'>exec_block</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
336
-
337
- <span class='kw'>if</span> <span class='ivar'>@types</span><span class='period'>.</span><span class='id identifier rubyid_none?'>none?</span>
338
- <span class='id identifier rubyid_fail'>fail</span> <span class='const'><span class='object_link'><a href="Exceptions.html" title="Schemacop::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exceptions/InvalidSchemaError.html" title="Schemacop::Exceptions::InvalidSchemaError (class)">InvalidSchemaError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Block must contain a type definition or not be given at all.</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
339
- <span class='id identifier rubyid_type'>type</span> <span class='symbol'>:object</span>
340
- <span class='kw'>end</span>
341
-
342
- <span class='comment'># if @types.none?
343
- </span> <span class='comment'># super(options)
344
- </span> <span class='comment'># exec_block(&amp;block)
345
- </span> <span class='comment'># if @types.none?
346
- </span> <span class='comment'># fail Exceptions::InvalidSchemaError, &#39;Block must contain a type definition or not be given at all.&#39; if block_given?
347
- </span> <span class='comment'># end
348
- </span> <span class='comment'># else
349
- </span> <span class='comment'># super({})
350
- </span> <span class='comment'># end
351
- </span><span class='kw'>end</span></pre>
352
- </td>
353
- </tr>
354
- </table>
355
- </div>
356
-
357
- </div>
358
-
359
-
360
- <div id="class_method_details" class="method_details_list">
361
- <h2>Class Method Details</h2>
362
-
363
-
364
- <div class="method_details first">
365
- <h3 class="signature first" id="build-class_method">
366
-
367
- .<strong>build</strong>(options, &amp;block) &#x21d2; <tt>Object</tt>
368
-
369
-
370
-
371
-
372
-
373
- </h3><table class="source_code">
374
- <tr>
375
- <td>
376
- <pre class="lines">
377
-
378
-
379
- 5
380
- 6
381
- 7</pre>
382
- </td>
383
- <td>
384
- <pre class="code"><span class="info file"># File 'lib/schemacop/node_supporting_type.rb', line 5</span>
385
-
386
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_build'>build</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
387
- <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
388
- <span class='kw'>end</span></pre>
389
- </td>
390
- </tr>
391
- </table>
392
- </div>
393
-
394
- </div>
395
-
396
- <div id="instance_method_details" class="method_details_list">
397
- <h2>Instance Method Details</h2>
398
-
399
-
400
- <div class="method_details first">
401
- <h3 class="signature first" id="exec_block-instance_method">
402
-
403
- #<strong>exec_block</strong>(&amp;block) &#x21d2; <tt>Object</tt>
404
-
405
-
406
-
407
-
408
-
409
- </h3><table class="source_code">
410
- <tr>
411
- <td>
412
- <pre class="lines">
413
-
414
-
415
- 31
416
- 32
417
- 33
418
- 34
419
- 35
420
- 36</pre>
421
- </td>
422
- <td>
423
- <pre class="code"><span class="info file"># File 'lib/schemacop/node_supporting_type.rb', line 31</span>
424
-
425
- <span class='kw'>def</span> <span class='id identifier rubyid_exec_block'>exec_block</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
426
- <span class='kw'>super</span>
427
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
428
- <span class='ivar'>@types</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
429
- <span class='id identifier rubyid_type'>type</span> <span class='symbol'>:hash</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
430
- <span class='kw'>end</span></pre>
431
- </td>
432
- </tr>
433
- </table>
434
- </div>
435
-
436
- <div class="method_details ">
437
- <h3 class="signature " id="type-instance_method">
438
-
439
- #<strong>type</strong>(*args, &amp;block) &#x21d2; <tt>Object</tt>
440
-
441
-
442
-
443
-
444
-
445
- </h3><div class="docstring">
446
- <div class="discussion">
447
- <p>required signature:
448
- First argument must be a type or an array of types
449
- Following arguments may be subtypes
450
- Last argument may be an options hash.
451
- Options and given block are passed to the last specified type.
452
- Not permitted to give subtypes / options / a block if an array of types is given.</p>
453
-
454
- <p>TODO: Probably change this method so that the &#39;rescue NoMethodError&#39;
455
- happens in here directly and not in the constructor. This way we can
456
- always call &#39;type&#39;, even if we don&#39;t have one and the type is auto-guessed
457
- as it formerly was the case in the constructor.</p>
458
-
459
-
460
- </div>
461
- </div>
462
- <div class="tags">
463
-
464
-
465
- </div><table class="source_code">
466
- <tr>
467
- <td>
468
- <pre class="lines">
469
-
470
-
471
- 49
472
- 50
473
- 51
474
- 52
475
- 53
476
- 54
477
- 55
478
- 56
479
- 57
480
- 58
481
- 59
482
- 60
483
- 61
484
- 62
485
- 63
486
- 64
487
- 65
488
- 66
489
- 67
490
- 68
491
- 69
492
- 70
493
- 71
494
- 72
495
- 73
496
- 74
497
- 75
498
- 76
499
- 77
500
- 78
501
- 79
502
- 80
503
- 81
504
- 82
505
- 83
506
- 84
507
- 85
508
- 86
509
- 87
510
- 88
511
- 89
512
- 90
513
- 91
514
- 92</pre>
515
- </td>
516
- <td>
517
- <pre class="code"><span class="info file"># File 'lib/schemacop/node_supporting_type.rb', line 49</span>
518
-
519
- <span class='kw'>def</span> <span class='id identifier rubyid_type'>type</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
520
- <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span> <span class='op'>:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
521
- <span class='id identifier rubyid_types'>types</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span><span class='rbracket'>]</span>
522
- <span class='id identifier rubyid_subtypes'>subtypes</span> <span class='op'>=</span> <span class='id identifier rubyid_args'>args</span>
523
-
524
- <span class='kw'>unless</span> <span class='id identifier rubyid_types'>types</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
525
- <span class='id identifier rubyid_fail'>fail</span> <span class='const'><span class='object_link'><a href="Exceptions.html" title="Schemacop::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exceptions/InvalidSchemaError.html" title="Schemacop::Exceptions::InvalidSchemaError (class)">InvalidSchemaError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>At least one type must be given.</span><span class='tstring_end'>&#39;</span></span>
526
- <span class='kw'>end</span>
527
-
528
- <span class='kw'>if</span> <span class='id identifier rubyid_subtypes'>subtypes</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_types'>types</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
529
- <span class='id identifier rubyid_fail'>fail</span> <span class='const'><span class='object_link'><a href="Exceptions.html" title="Schemacop::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exceptions/InvalidSchemaError.html" title="Schemacop::Exceptions::InvalidSchemaError (class)">InvalidSchemaError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>First given type can&#39;t be an array if subtypes are given.</span><span class='tstring_end'>&quot;</span></span>
530
- <span class='kw'>end</span>
531
-
532
- <span class='kw'>if</span> <span class='id identifier rubyid_types'>types</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
533
- <span class='id identifier rubyid_fail'>fail</span> <span class='const'><span class='object_link'><a href="Exceptions.html" title="Schemacop::Exceptions (module)">Exceptions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exceptions/InvalidSchemaError.html" title="Schemacop::Exceptions::InvalidSchemaError (class)">InvalidSchemaError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>No options can be specified if multiple types are given.</span><span class='tstring_end'>&#39;</span></span>
534
- <span class='kw'>end</span>
535
-
536
- <span class='id identifier rubyid_types'>types</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_type'>type</span><span class='op'>|</span>
537
- <span class='id identifier rubyid_klass'>klass</span> <span class='op'>=</span> <span class='id identifier rubyid_resolve_type_klass'>resolve_type_klass</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span>
538
-
539
- <span class='kw'>if</span> <span class='id identifier rubyid_subtypes'>subtypes</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
540
- <span class='kw'>unless</span> <span class='id identifier rubyid_klass'>klass</span> <span class='op'>&lt;=</span> <span class='const'><span class='object_link'><a href="" title="Schemacop::NodeSupportingType (class)">NodeSupportingType</a></span></span>
541
- <span class='id identifier rubyid_fail'>fail</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Node </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_klass'>klass</span><span class='embexpr_end'>}</span><span class='tstring_content'> does not support subtypes.</span><span class='tstring_end'>&quot;</span></span>
542
- <span class='kw'>end</span>
543
-
544
- <span class='id identifier rubyid_child'>child</span> <span class='op'>=</span> <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
545
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_subtypes'>subtypes</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
546
- <span class='kw'>end</span>
547
-
548
- <span class='comment'># child = klass.build(options)
549
- </span> <span class='comment'>#
550
- </span> <span class='comment'>#
551
- </span> <span class='comment'># child.type(*subtypes, &amp;block)
552
- </span> <span class='kw'>else</span>
553
- <span class='kw'>if</span> <span class='id identifier rubyid_klass'>klass</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="ObjectValidator.html" title="Schemacop::ObjectValidator (class)">ObjectValidator</a></span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Class</span><span class='rparen'>)</span>
554
- <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:classes</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span>
555
- <span class='kw'>end</span>
556
-
557
- <span class='id identifier rubyid_child'>child</span> <span class='op'>=</span> <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
558
- <span class='kw'>end</span>
559
-
560
- <span class='ivar'>@types</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_child'>child</span>
561
- <span class='kw'>end</span>
562
- <span class='kw'>end</span></pre>
563
- </td>
564
- </tr>
565
- </table>
566
- </div>
567
-
568
- <div class="method_details ">
569
- <h3 class="signature " id="validate-instance_method">
570
-
571
- #<strong>validate</strong>(data, collector) &#x21d2; <tt>Object</tt>
572
-
573
-
574
-
575
-
576
-
577
- </h3><table class="source_code">
578
- <tr>
579
- <td>
580
- <pre class="lines">
581
-
582
-
583
- 94
584
- 95
585
- 96
586
- 97</pre>
587
- </td>
588
- <td>
589
- <pre class="code"><span class="info file"># File 'lib/schemacop/node_supporting_type.rb', line 94</span>
590
-
591
- <span class='kw'>def</span> <span class='id identifier rubyid_validate'>validate</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_collector'>collector</span><span class='rparen'>)</span>
592
- <span class='kw'>super</span>
593
- <span class='id identifier rubyid_validate_types'>validate_types</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_collector'>collector</span><span class='rparen'>)</span>
594
- <span class='kw'>end</span></pre>
595
- </td>
596
- </tr>
597
- </table>
598
- </div>
599
-
600
- </div>
601
-
602
- </div>
603
-
604
- <div id="footer">
605
- Generated on Thu Jul 2 11:30:34 2020 by
606
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
607
- 0.9.20 (ruby-2.6.2).
608
- </div>
609
-
610
- </div>
611
- </body>
612
- </html>