rj_schema 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (299) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +18 -0
  3. data/ext/rj_schema/extconf.rb +7 -0
  4. data/ext/rj_schema/rapidjson/CHANGELOG.md +158 -0
  5. data/ext/rj_schema/rapidjson/CMakeLists.txt +221 -0
  6. data/ext/rj_schema/rapidjson/CMakeModules/FindGTestSrc.cmake +30 -0
  7. data/ext/rj_schema/rapidjson/RapidJSON.pc.in +7 -0
  8. data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +15 -0
  9. data/ext/rj_schema/rapidjson/RapidJSONConfigVersion.cmake.in +10 -0
  10. data/ext/rj_schema/rapidjson/appveyor.yml +41 -0
  11. data/ext/rj_schema/rapidjson/bin/data/glossary.json +22 -0
  12. data/ext/rj_schema/rapidjson/bin/data/menu.json +27 -0
  13. data/ext/rj_schema/rapidjson/bin/data/readme.txt +1 -0
  14. data/ext/rj_schema/rapidjson/bin/data/sample.json +3315 -0
  15. data/ext/rj_schema/rapidjson/bin/data/webapp.json +88 -0
  16. data/ext/rj_schema/rapidjson/bin/data/widget.json +26 -0
  17. data/ext/rj_schema/rapidjson/bin/draft-04/schema +150 -0
  18. data/ext/rj_schema/rapidjson/bin/encodings/utf16be.json +0 -0
  19. data/ext/rj_schema/rapidjson/bin/encodings/utf16bebom.json +0 -0
  20. data/ext/rj_schema/rapidjson/bin/encodings/utf16le.json +0 -0
  21. data/ext/rj_schema/rapidjson/bin/encodings/utf16lebom.json +0 -0
  22. data/ext/rj_schema/rapidjson/bin/encodings/utf32be.json +0 -0
  23. data/ext/rj_schema/rapidjson/bin/encodings/utf32bebom.json +0 -0
  24. data/ext/rj_schema/rapidjson/bin/encodings/utf32le.json +0 -0
  25. data/ext/rj_schema/rapidjson/bin/encodings/utf32lebom.json +0 -0
  26. data/ext/rj_schema/rapidjson/bin/encodings/utf8.json +7 -0
  27. data/ext/rj_schema/rapidjson/bin/encodings/utf8bom.json +7 -0
  28. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail1.json +1 -0
  29. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail10.json +1 -0
  30. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail11.json +1 -0
  31. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail12.json +1 -0
  32. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail13.json +1 -0
  33. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail14.json +1 -0
  34. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail15.json +1 -0
  35. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail16.json +1 -0
  36. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail17.json +1 -0
  37. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail18.json +1 -0
  38. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail19.json +1 -0
  39. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail2.json +1 -0
  40. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail20.json +1 -0
  41. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail21.json +1 -0
  42. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail22.json +1 -0
  43. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail23.json +1 -0
  44. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail24.json +1 -0
  45. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail25.json +1 -0
  46. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail26.json +1 -0
  47. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail27.json +2 -0
  48. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail28.json +2 -0
  49. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail29.json +1 -0
  50. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail3.json +1 -0
  51. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail30.json +1 -0
  52. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail31.json +1 -0
  53. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail32.json +1 -0
  54. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail33.json +1 -0
  55. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail4.json +1 -0
  56. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail5.json +1 -0
  57. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail6.json +1 -0
  58. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail7.json +1 -0
  59. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail8.json +1 -0
  60. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail9.json +1 -0
  61. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass1.json +58 -0
  62. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass2.json +1 -0
  63. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass3.json +6 -0
  64. data/ext/rj_schema/rapidjson/bin/jsonchecker/readme.txt +3 -0
  65. data/ext/rj_schema/rapidjson/bin/jsonschema/LICENSE +19 -0
  66. data/ext/rj_schema/rapidjson/bin/jsonschema/README.md +148 -0
  67. data/ext/rj_schema/rapidjson/bin/jsonschema/bin/jsonschema_suite +283 -0
  68. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json +3 -0
  69. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/integer.json +3 -0
  70. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/subSchemas.json +8 -0
  71. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json +82 -0
  72. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json +88 -0
  73. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/default.json +49 -0
  74. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/dependencies.json +108 -0
  75. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/disallow.json +80 -0
  76. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json +60 -0
  77. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/enum.json +71 -0
  78. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/extends.json +94 -0
  79. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/items.json +46 -0
  80. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxItems.json +28 -0
  81. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxLength.json +33 -0
  82. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maximum.json +42 -0
  83. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minItems.json +28 -0
  84. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minLength.json +33 -0
  85. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minimum.json +42 -0
  86. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json +107 -0
  87. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/format.json +222 -0
  88. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json +18 -0
  89. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
  90. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/pattern.json +34 -0
  91. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json +110 -0
  92. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/properties.json +92 -0
  93. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/ref.json +159 -0
  94. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/refRemote.json +74 -0
  95. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/required.json +53 -0
  96. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/type.json +474 -0
  97. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/uniqueItems.json +79 -0
  98. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalItems.json +82 -0
  99. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalProperties.json +88 -0
  100. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/allOf.json +112 -0
  101. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/anyOf.json +68 -0
  102. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/default.json +49 -0
  103. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/definitions.json +32 -0
  104. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/dependencies.json +113 -0
  105. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/enum.json +72 -0
  106. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/items.json +46 -0
  107. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxItems.json +28 -0
  108. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxLength.json +33 -0
  109. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxProperties.json +28 -0
  110. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maximum.json +42 -0
  111. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minItems.json +28 -0
  112. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minLength.json +33 -0
  113. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minProperties.json +28 -0
  114. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minimum.json +42 -0
  115. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json +60 -0
  116. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/not.json +96 -0
  117. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/oneOf.json +68 -0
  118. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/bignum.json +107 -0
  119. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/format.json +148 -0
  120. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  121. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/pattern.json +34 -0
  122. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/patternProperties.json +110 -0
  123. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/properties.json +92 -0
  124. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/ref.json +159 -0
  125. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/refRemote.json +74 -0
  126. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/required.json +39 -0
  127. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/type.json +330 -0
  128. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/uniqueItems.json +79 -0
  129. data/ext/rj_schema/rapidjson/bin/jsonschema/tox.ini +8 -0
  130. data/ext/rj_schema/rapidjson/bin/types/booleans.json +102 -0
  131. data/ext/rj_schema/rapidjson/bin/types/floats.json +102 -0
  132. data/ext/rj_schema/rapidjson/bin/types/guids.json +102 -0
  133. data/ext/rj_schema/rapidjson/bin/types/integers.json +102 -0
  134. data/ext/rj_schema/rapidjson/bin/types/mixed.json +592 -0
  135. data/ext/rj_schema/rapidjson/bin/types/nulls.json +102 -0
  136. data/ext/rj_schema/rapidjson/bin/types/paragraphs.json +102 -0
  137. data/ext/rj_schema/rapidjson/bin/types/readme.txt +1 -0
  138. data/ext/rj_schema/rapidjson/contrib/natvis/LICENSE +45 -0
  139. data/ext/rj_schema/rapidjson/contrib/natvis/README.md +7 -0
  140. data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +38 -0
  141. data/ext/rj_schema/rapidjson/doc/CMakeLists.txt +27 -0
  142. data/ext/rj_schema/rapidjson/doc/Doxyfile.in +2369 -0
  143. data/ext/rj_schema/rapidjson/doc/Doxyfile.zh-cn.in +2369 -0
  144. data/ext/rj_schema/rapidjson/doc/diagram/architecture.dot +50 -0
  145. data/ext/rj_schema/rapidjson/doc/diagram/architecture.png +0 -0
  146. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.dot +65 -0
  147. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.png +0 -0
  148. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.dot +62 -0
  149. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
  150. data/ext/rj_schema/rapidjson/doc/diagram/makefile +8 -0
  151. data/ext/rj_schema/rapidjson/doc/diagram/move1.dot +47 -0
  152. data/ext/rj_schema/rapidjson/doc/diagram/move1.png +0 -0
  153. data/ext/rj_schema/rapidjson/doc/diagram/move2.dot +62 -0
  154. data/ext/rj_schema/rapidjson/doc/diagram/move2.png +0 -0
  155. data/ext/rj_schema/rapidjson/doc/diagram/move3.dot +60 -0
  156. data/ext/rj_schema/rapidjson/doc/diagram/move3.png +0 -0
  157. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.dot +56 -0
  158. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.png +0 -0
  159. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.dot +54 -0
  160. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.png +0 -0
  161. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.dot +58 -0
  162. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.png +0 -0
  163. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.dot +73 -0
  164. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.png +0 -0
  165. data/ext/rj_schema/rapidjson/doc/dom.md +280 -0
  166. data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +284 -0
  167. data/ext/rj_schema/rapidjson/doc/encoding.md +146 -0
  168. data/ext/rj_schema/rapidjson/doc/encoding.zh-cn.md +152 -0
  169. data/ext/rj_schema/rapidjson/doc/faq.md +289 -0
  170. data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +290 -0
  171. data/ext/rj_schema/rapidjson/doc/features.md +104 -0
  172. data/ext/rj_schema/rapidjson/doc/features.zh-cn.md +103 -0
  173. data/ext/rj_schema/rapidjson/doc/internals.md +368 -0
  174. data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +363 -0
  175. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.png +0 -0
  176. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.svg +119 -0
  177. data/ext/rj_schema/rapidjson/doc/misc/DoxygenLayout.xml +194 -0
  178. data/ext/rj_schema/rapidjson/doc/misc/doxygenextra.css +274 -0
  179. data/ext/rj_schema/rapidjson/doc/misc/footer.html +11 -0
  180. data/ext/rj_schema/rapidjson/doc/misc/header.html +24 -0
  181. data/ext/rj_schema/rapidjson/doc/npm.md +31 -0
  182. data/ext/rj_schema/rapidjson/doc/performance.md +26 -0
  183. data/ext/rj_schema/rapidjson/doc/performance.zh-cn.md +26 -0
  184. data/ext/rj_schema/rapidjson/doc/pointer.md +234 -0
  185. data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +234 -0
  186. data/ext/rj_schema/rapidjson/doc/sax.md +509 -0
  187. data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +487 -0
  188. data/ext/rj_schema/rapidjson/doc/schema.md +505 -0
  189. data/ext/rj_schema/rapidjson/doc/schema.zh-cn.md +237 -0
  190. data/ext/rj_schema/rapidjson/doc/stream.md +426 -0
  191. data/ext/rj_schema/rapidjson/doc/stream.zh-cn.md +426 -0
  192. data/ext/rj_schema/rapidjson/doc/tutorial.md +536 -0
  193. data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +534 -0
  194. data/ext/rj_schema/rapidjson/docker/debian/Dockerfile +8 -0
  195. data/ext/rj_schema/rapidjson/example/CMakeLists.txt +45 -0
  196. data/ext/rj_schema/rapidjson/example/archiver/archiver.cpp +292 -0
  197. data/ext/rj_schema/rapidjson/example/archiver/archiver.h +145 -0
  198. data/ext/rj_schema/rapidjson/example/archiver/archivertest.cpp +287 -0
  199. data/ext/rj_schema/rapidjson/example/capitalize/capitalize.cpp +67 -0
  200. data/ext/rj_schema/rapidjson/example/condense/condense.cpp +32 -0
  201. data/ext/rj_schema/rapidjson/example/filterkey/filterkey.cpp +135 -0
  202. data/ext/rj_schema/rapidjson/example/filterkeydom/filterkeydom.cpp +170 -0
  203. data/ext/rj_schema/rapidjson/example/jsonx/jsonx.cpp +207 -0
  204. data/ext/rj_schema/rapidjson/example/lookaheadparser/lookaheadparser.cpp +350 -0
  205. data/ext/rj_schema/rapidjson/example/messagereader/messagereader.cpp +105 -0
  206. data/ext/rj_schema/rapidjson/example/parsebyparts/parsebyparts.cpp +176 -0
  207. data/ext/rj_schema/rapidjson/example/pretty/pretty.cpp +30 -0
  208. data/ext/rj_schema/rapidjson/example/prettyauto/prettyauto.cpp +56 -0
  209. data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +78 -0
  210. data/ext/rj_schema/rapidjson/example/serialize/serialize.cpp +173 -0
  211. data/ext/rj_schema/rapidjson/example/simpledom/simpledom.cpp +29 -0
  212. data/ext/rj_schema/rapidjson/example/simplepullreader/simplepullreader.cpp +53 -0
  213. data/ext/rj_schema/rapidjson/example/simplereader/simplereader.cpp +42 -0
  214. data/ext/rj_schema/rapidjson/example/simplewriter/simplewriter.cpp +36 -0
  215. data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +151 -0
  216. data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +271 -0
  217. data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +78 -0
  218. data/ext/rj_schema/rapidjson/include/rapidjson/document.h +2630 -0
  219. data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +299 -0
  220. data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +716 -0
  221. data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +74 -0
  222. data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +161 -0
  223. data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +99 -0
  224. data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +104 -0
  225. data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +151 -0
  226. data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +290 -0
  227. data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +258 -0
  228. data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +245 -0
  229. data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +78 -0
  230. data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +304 -0
  231. data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +181 -0
  232. data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +55 -0
  233. data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +734 -0
  234. data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +231 -0
  235. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +69 -0
  236. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +269 -0
  237. data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +46 -0
  238. data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +115 -0
  239. data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +70 -0
  240. data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +71 -0
  241. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/inttypes.h +316 -0
  242. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/stdint.h +300 -0
  243. data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +81 -0
  244. data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +1363 -0
  245. data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +277 -0
  246. data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +628 -0
  247. data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +2222 -0
  248. data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +2479 -0
  249. data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +223 -0
  250. data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +121 -0
  251. data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +716 -0
  252. data/ext/rj_schema/rapidjson/include_dirs.js +2 -0
  253. data/ext/rj_schema/rapidjson/library.json +15 -0
  254. data/ext/rj_schema/rapidjson/license.txt +57 -0
  255. data/ext/rj_schema/rapidjson/package.json +24 -0
  256. data/ext/rj_schema/rapidjson/rapidjson.autopkg +77 -0
  257. data/ext/rj_schema/rapidjson/readme.md +160 -0
  258. data/ext/rj_schema/rapidjson/readme.zh-cn.md +152 -0
  259. data/ext/rj_schema/rapidjson/test/CMakeLists.txt +20 -0
  260. data/ext/rj_schema/rapidjson/test/perftest/CMakeLists.txt +28 -0
  261. data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +974 -0
  262. data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +24 -0
  263. data/ext/rj_schema/rapidjson/test/perftest/perftest.h +185 -0
  264. data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +166 -0
  265. data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +472 -0
  266. data/ext/rj_schema/rapidjson/test/perftest/schematest.cpp +216 -0
  267. data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +92 -0
  268. data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +102 -0
  269. data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +133 -0
  270. data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +115 -0
  271. data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +672 -0
  272. data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +98 -0
  273. data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +313 -0
  274. data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +451 -0
  275. data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +112 -0
  276. data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +230 -0
  277. data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +181 -0
  278. data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +160 -0
  279. data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +143 -0
  280. data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +70 -0
  281. data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +92 -0
  282. data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +1529 -0
  283. data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +344 -0
  284. data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +1895 -0
  285. data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +638 -0
  286. data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +2009 -0
  287. data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +219 -0
  288. data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +30 -0
  289. data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +192 -0
  290. data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +132 -0
  291. data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +51 -0
  292. data/ext/rj_schema/rapidjson/test/unittest/unittest.h +140 -0
  293. data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +1829 -0
  294. data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +598 -0
  295. data/ext/rj_schema/rapidjson/test/valgrind.supp +17 -0
  296. data/ext/rj_schema/rapidjson/travis-doxygen.sh +121 -0
  297. data/ext/rj_schema/rj_schema.cpp +136 -0
  298. data/lib/rj_schema.rb +7 -0
  299. metadata +371 -0
@@ -0,0 +1,505 @@
1
+ # Schema
2
+
3
+ (This feature was released in v1.1.0)
4
+
5
+ JSON Schema is a draft standard for describing the format of JSON data. The schema itself is also JSON data. By validating a JSON structure with JSON Schema, your code can safely access the DOM without manually checking types, or whether a key exists, etc. It can also ensure that the serialized JSON conform to a specified schema.
6
+
7
+ RapidJSON implemented a JSON Schema validator for [JSON Schema Draft v4](http://json-schema.org/documentation.html). If you are not familiar with JSON Schema, you may refer to [Understanding JSON Schema](http://spacetelescope.github.io/understanding-json-schema/).
8
+
9
+ [TOC]
10
+
11
+ # Basic Usage {#Basic}
12
+
13
+ First of all, you need to parse a JSON Schema into `Document`, and then compile the `Document` into a `SchemaDocument`.
14
+
15
+ Secondly, construct a `SchemaValidator` with the `SchemaDocument`. It is similar to a `Writer` in the sense of handling SAX events. So, you can use `document.Accept(validator)` to validate a document, and then check the validity.
16
+
17
+ ~~~cpp
18
+ #include "rapidjson/schema.h"
19
+
20
+ // ...
21
+
22
+ Document sd;
23
+ if (sd.Parse(schemaJson).HasParseError()) {
24
+ // the schema is not a valid JSON.
25
+ // ...
26
+ }
27
+ SchemaDocument schema(sd); // Compile a Document to SchemaDocument
28
+ // sd is no longer needed here.
29
+
30
+ Document d;
31
+ if (d.Parse(inputJson).HasParseError()) {
32
+ // the input is not a valid JSON.
33
+ // ...
34
+ }
35
+
36
+ SchemaValidator validator(schema);
37
+ if (!d.Accept(validator)) {
38
+ // Input JSON is invalid according to the schema
39
+ // Output diagnostic information
40
+ StringBuffer sb;
41
+ validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);
42
+ printf("Invalid schema: %s\n", sb.GetString());
43
+ printf("Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword());
44
+ sb.Clear();
45
+ validator.GetInvalidDocumentPointer().StringifyUriFragment(sb);
46
+ printf("Invalid document: %s\n", sb.GetString());
47
+ }
48
+ ~~~
49
+
50
+ Some notes:
51
+
52
+ * One `SchemaDocument` can be referenced by multiple `SchemaValidator`s. It will not be modified by `SchemaValidator`s.
53
+ * A `SchemaValidator` may be reused to validate multiple documents. To run it for other documents, call `validator.Reset()` first.
54
+
55
+ # Validation during parsing/serialization {#Fused}
56
+
57
+ Unlike most JSON Schema validator implementations, RapidJSON provides a SAX-based schema validator. Therefore, you can parse a JSON from a stream while validating it on the fly. If the validator encounters a JSON value that invalidates the supplied schema, the parsing will be terminated immediately. This design is especially useful for parsing large JSON files.
58
+
59
+ ## DOM parsing {#DOM}
60
+
61
+ For using DOM in parsing, `Document` needs some preparation and finalizing tasks, in addition to receiving SAX events, thus it needs some work to route the reader, validator and the document. `SchemaValidatingReader` is a helper class that doing such work.
62
+
63
+ ~~~cpp
64
+ #include "rapidjson/filereadstream.h"
65
+
66
+ // ...
67
+ SchemaDocument schema(sd); // Compile a Document to SchemaDocument
68
+
69
+ // Use reader to parse the JSON
70
+ FILE* fp = fopen("big.json", "r");
71
+ FileReadStream is(fp, buffer, sizeof(buffer));
72
+
73
+ // Parse JSON from reader, validate the SAX events, and store in d.
74
+ Document d;
75
+ SchemaValidatingReader<kParseDefaultFlags, FileReadStream, UTF8<> > reader(is, schema);
76
+ d.Populate(reader);
77
+
78
+ if (!reader.GetParseResult()) {
79
+ // Not a valid JSON
80
+ // When reader.GetParseResult().Code() == kParseErrorTermination,
81
+ // it may be terminated by:
82
+ // (1) the validator found that the JSON is invalid according to schema; or
83
+ // (2) the input stream has I/O error.
84
+
85
+ // Check the validation result
86
+ if (!reader.IsValid()) {
87
+ // Input JSON is invalid according to the schema
88
+ // Output diagnostic information
89
+ StringBuffer sb;
90
+ reader.GetInvalidSchemaPointer().StringifyUriFragment(sb);
91
+ printf("Invalid schema: %s\n", sb.GetString());
92
+ printf("Invalid keyword: %s\n", reader.GetInvalidSchemaKeyword());
93
+ sb.Clear();
94
+ reader.GetInvalidDocumentPointer().StringifyUriFragment(sb);
95
+ printf("Invalid document: %s\n", sb.GetString());
96
+ }
97
+ }
98
+ ~~~
99
+
100
+ ## SAX parsing {#SAX}
101
+
102
+ For using SAX in parsing, it is much simpler. If it only need to validate the JSON without further processing, it is simply:
103
+
104
+ ~~~
105
+ SchemaValidator validator(schema);
106
+ Reader reader;
107
+ if (!reader.Parse(stream, validator)) {
108
+ if (!validator.IsValid()) {
109
+ // ...
110
+ }
111
+ }
112
+ ~~~
113
+
114
+ This is exactly the method used in the [schemavalidator](example/schemavalidator/schemavalidator.cpp) example. The distinct advantage is low memory usage, no matter how big the JSON was (the memory usage depends on the complexity of the schema).
115
+
116
+ If you need to handle the SAX events further, then you need to use the template class `GenericSchemaValidator` to set the output handler of the validator:
117
+
118
+ ~~~
119
+ MyHandler handler;
120
+ GenericSchemaValidator<SchemaDocument, MyHandler> validator(schema, handler);
121
+ Reader reader;
122
+ if (!reader.Parse(ss, validator)) {
123
+ if (!validator.IsValid()) {
124
+ // ...
125
+ }
126
+ }
127
+ ~~~
128
+
129
+ ## Serialization {#Serialization}
130
+
131
+ It is also possible to do validation during serializing. This can ensure the result JSON is valid according to the JSON schema.
132
+
133
+ ~~~
134
+ StringBuffer sb;
135
+ Writer<StringBuffer> writer(sb);
136
+ GenericSchemaValidator<SchemaDocument, Writer<StringBuffer> > validator(s, writer);
137
+ if (!d.Accept(validator)) {
138
+ // Some problem during Accept(), it may be validation or encoding issues.
139
+ if (!validator.IsValid()) {
140
+ // ...
141
+ }
142
+ }
143
+ ~~~
144
+
145
+ Of course, if your application only needs SAX-style serialization, it can simply send SAX events to `SchemaValidator` instead of `Writer`.
146
+
147
+ # Remote Schema {#Remote}
148
+
149
+ JSON Schema supports [`$ref` keyword](http://spacetelescope.github.io/understanding-json-schema/structuring.html), which is a [JSON pointer](doc/pointer.md) referencing to a local or remote schema. Local pointer is prefixed with `#`, while remote pointer is an relative or absolute URI. For example:
150
+
151
+ ~~~js
152
+ { "$ref": "definitions.json#/address" }
153
+ ~~~
154
+
155
+ As `SchemaDocument` does not know how to resolve such URI, it needs a user-provided `IRemoteSchemaDocumentProvider` instance to do so.
156
+
157
+ ~~~
158
+ class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider {
159
+ public:
160
+ virtual const SchemaDocument* GetRemoteDocument(const char* uri, SizeType length) {
161
+ // Resolve the uri and returns a pointer to that schema.
162
+ }
163
+ };
164
+
165
+ // ...
166
+
167
+ MyRemoteSchemaDocumentProvider provider;
168
+ SchemaDocument schema(sd, &provider);
169
+ ~~~
170
+
171
+ # Conformance {#Conformance}
172
+
173
+ RapidJSON passed 262 out of 263 tests in [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (Json Schema draft 4).
174
+
175
+ The failed test is "changed scope ref invalid" of "change resolution scope" in `refRemote.json`. It is due to that `id` schema keyword and URI combining function are not implemented.
176
+
177
+ Besides, the `format` schema keyword for string values is ignored, since it is not required by the specification.
178
+
179
+ ## Regular Expression {#Regex}
180
+
181
+ The schema keyword `pattern` and `patternProperties` uses regular expression to match the required pattern.
182
+
183
+ RapidJSON implemented a simple NFA regular expression engine, which is used by default. It supports the following syntax.
184
+
185
+ |Syntax|Description|
186
+ |------|-----------|
187
+ |`ab` | Concatenation |
188
+ |<code>a&#124;b</code> | Alternation |
189
+ |`a?` | Zero or one |
190
+ |`a*` | Zero or more |
191
+ |`a+` | One or more |
192
+ |`a{3}` | Exactly 3 times |
193
+ |`a{3,}` | At least 3 times |
194
+ |`a{3,5}`| 3 to 5 times |
195
+ |`(ab)` | Grouping |
196
+ |`^a` | At the beginning |
197
+ |`a$` | At the end |
198
+ |`.` | Any character |
199
+ |`[abc]` | Character classes |
200
+ |`[a-c]` | Character class range |
201
+ |`[a-z0-9_]` | Character class combination |
202
+ |`[^abc]` | Negated character classes |
203
+ |`[^a-c]` | Negated character class range |
204
+ |`[\b]` | Backspace (U+0008) |
205
+ |<code>\\&#124;</code>, `\\`, ... | Escape characters |
206
+ |`\f` | Form feed (U+000C) |
207
+ |`\n` | Line feed (U+000A) |
208
+ |`\r` | Carriage return (U+000D) |
209
+ |`\t` | Tab (U+0009) |
210
+ |`\v` | Vertical tab (U+000B) |
211
+
212
+ For C++11 compiler, it is also possible to use the `std::regex` by defining `RAPIDJSON_SCHEMA_USE_INTERNALREGEX=0` and `RAPIDJSON_SCHEMA_USE_STDREGEX=1`. If your schemas do not need `pattern` and `patternProperties`, you can set both macros to zero to disable this feature, which will reduce some code size.
213
+
214
+ # Performance {#Performance}
215
+
216
+ Most C++ JSON libraries do not yet support JSON Schema. So we tried to evaluate the performance of RapidJSON's JSON Schema validator according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), which tests 11 JavaScript libraries running on Node.js.
217
+
218
+ That benchmark runs validations on [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite), in which some test suites and tests are excluded. We made the same benchmarking procedure in [`schematest.cpp`](test/perftest/schematest.cpp).
219
+
220
+ On a Mac Book Pro (2.8 GHz Intel Core i7), the following results are collected.
221
+
222
+ |Validator|Relative speed|Number of test runs per second|
223
+ |---------|:------------:|:----------------------------:|
224
+ |RapidJSON|155%|30682|
225
+ |[`ajv`](https://github.com/epoberezkin/ajv)|100%|19770 (± 1.31%)|
226
+ |[`is-my-json-valid`](https://github.com/mafintosh/is-my-json-valid)|70%|13835 (± 2.84%)|
227
+ |[`jsen`](https://github.com/bugventure/jsen)|57.7%|11411 (± 1.27%)|
228
+ |[`schemasaurus`](https://github.com/AlexeyGrishin/schemasaurus)|26%|5145 (± 1.62%)|
229
+ |[`themis`](https://github.com/playlyfe/themis)|19.9%|3935 (± 2.69%)|
230
+ |[`z-schema`](https://github.com/zaggino/z-schema)|7%|1388 (± 0.84%)|
231
+ |[`jsck`](https://github.com/pandastrike/jsck#readme)|3.1%|606 (± 2.84%)|
232
+ |[`jsonschema`](https://github.com/tdegrunt/jsonschema#readme)|0.9%|185 (± 1.01%)|
233
+ |[`skeemas`](https://github.com/Prestaul/skeemas#readme)|0.8%|154 (± 0.79%)|
234
+ |tv4|0.5%|93 (± 0.94%)|
235
+ |[`jayschema`](https://github.com/natesilva/jayschema)|0.1%|21 (± 1.14%)|
236
+
237
+ That is, RapidJSON is about 1.5x faster than the fastest JavaScript library (ajv). And 1400x faster than the slowest one.
238
+
239
+ # Schema violation reporting {#Reporting}
240
+
241
+ (Unreleased as of 2017-09-20)
242
+
243
+ When validating an instance against a JSON Schema,
244
+ it is often desirable to report not only whether the instance is valid,
245
+ but also the ways in which it violates the schema.
246
+
247
+ The `SchemaValidator` class
248
+ collects errors encountered during validation
249
+ into a JSON `Value`.
250
+ This error object can then be accessed as `validator.GetError()`.
251
+
252
+ The structure of the error object is subject to change
253
+ in future versions of RapidJSON,
254
+ as there is no standard schema for violations.
255
+ The details below this point are provisional only.
256
+
257
+ ## General provisions {#ReportingGeneral}
258
+
259
+ Validation of an instance value against a schema
260
+ produces an error value.
261
+ The error value is always an object.
262
+ An empty object `{}` indicates the instance is valid.
263
+
264
+ * The name of each member
265
+ corresponds to the JSON Schema keyword that is violated.
266
+ * The value is either an object describing a single violation,
267
+ or an array of such objects.
268
+
269
+ Each violation object contains two string-valued members
270
+ named `instanceRef` and `schemaRef`.
271
+ `instanceRef` contains the URI fragment serialization
272
+ of a JSON Pointer to the instance subobject
273
+ in which the violation was detected.
274
+ `schemaRef` contains the URI of the schema
275
+ and the fragment serialization of a JSON Pointer
276
+ to the subschema that was violated.
277
+
278
+ Individual violation objects can contain other keyword-specific members.
279
+ These are detailed further.
280
+
281
+ For example, validating this instance:
282
+
283
+ ~~~json
284
+ {"numbers": [1, 2, "3", 4, 5]}
285
+ ~~~
286
+
287
+ against this schema:
288
+
289
+ ~~~json
290
+ {
291
+ "type": "object",
292
+ "properties": {
293
+ "numbers": {"$ref": "numbers.schema.json"}
294
+ }
295
+ }
296
+ ~~~
297
+
298
+ where `numbers.schema.json` refers
299
+ (via a suitable `IRemoteSchemaDocumentProvider`)
300
+ to this schema:
301
+
302
+ ~~~json
303
+ {
304
+ "type": "array",
305
+ "items": {"type": "number"}
306
+ }
307
+ ~~~
308
+
309
+ produces the following error object:
310
+
311
+ ~~~json
312
+ {
313
+ "type": {
314
+ "instanceRef": "#/numbers/2",
315
+ "schemaRef": "numbers.schema.json#/items",
316
+ "expected": ["number"],
317
+ "actual": "string"
318
+ }
319
+ }
320
+ ~~~
321
+
322
+ ## Validation keywords for numbers {#Numbers}
323
+
324
+ ### multipleOf {#multipleof}
325
+
326
+ * `expected`: required number strictly greater than 0.
327
+ The value of the `multipleOf` keyword specified in the schema.
328
+ * `actual`: required number.
329
+ The instance value.
330
+
331
+ ### maximum {#maximum}
332
+
333
+ * `expected`: required number.
334
+ The value of the `maximum` keyword specified in the schema.
335
+ * `exclusiveMaximum`: optional boolean.
336
+ This will be true if the schema specified `"exclusiveMaximum": true`,
337
+ and will be omitted otherwise.
338
+ * `actual`: required number.
339
+ The instance value.
340
+
341
+ ### minimum {#minimum}
342
+
343
+ * `expected`: required number.
344
+ The value of the `minimum` keyword specified in the schema.
345
+ * `exclusiveMinimum`: optional boolean.
346
+ This will be true if the schema specified `"exclusiveMinimum": true`,
347
+ and will be omitted otherwise.
348
+ * `actual`: required number.
349
+ The instance value.
350
+
351
+ ## Validation keywords for strings {#Strings}
352
+
353
+ ### maxLength {#maxLength}
354
+
355
+ * `expected`: required number greater than or equal to 0.
356
+ The value of the `maxLength` keyword specified in the schema.
357
+ * `actual`: required string.
358
+ The instance value.
359
+
360
+ ### minLength {#minLength}
361
+
362
+ * `expected`: required number greater than or equal to 0.
363
+ The value of the `minLength` keyword specified in the schema.
364
+ * `actual`: required string.
365
+ The instance value.
366
+
367
+ ### pattern {#pattern}
368
+
369
+ * `actual`: required string.
370
+ The instance value.
371
+
372
+ (The expected pattern is not reported
373
+ because the internal representation in `SchemaDocument`
374
+ does not store the pattern in original string form.)
375
+
376
+ ## Validation keywords for arrays {#Arrays}
377
+
378
+ ### additionalItems {#additionalItems}
379
+
380
+ This keyword is reported
381
+ when the value of `items` schema keyword is an array,
382
+ the value of `additionalItems` is `false`,
383
+ and the instance is an array
384
+ with more items than specified in the `items` array.
385
+
386
+ * `disallowed`: required integer greater than or equal to 0.
387
+ The index of the first item that has no corresponding schema.
388
+
389
+ ### maxItems and minItems {#maxItems-minItems}
390
+
391
+ * `expected`: required integer greater than or equal to 0.
392
+ The value of `maxItems` (respectively, `minItems`)
393
+ specified in the schema.
394
+ * `actual`: required integer greater than or equal to 0.
395
+ Number of items in the instance array.
396
+
397
+ ### uniqueItems {#uniqueItems}
398
+
399
+ * `duplicates`: required array
400
+ whose items are integers greater than or equal to 0.
401
+ Indices of items of the instance that are equal.
402
+
403
+ (RapidJSON only reports the first two equal items,
404
+ for performance reasons.)
405
+
406
+ ## Validation keywords for objects
407
+
408
+ ### maxProperties and minProperties {#maxProperties-minProperties}
409
+
410
+ * `expected`: required integer greater than or equal to 0.
411
+ The value of `maxProperties` (respectively, `minProperties`)
412
+ specified in the schema.
413
+ * `actual`: required integer greater than or equal to 0.
414
+ Number of properties in the instance object.
415
+
416
+ ### required {#required}
417
+
418
+ * `missing`: required array of one or more unique strings.
419
+ The names of properties
420
+ that are listed in the value of the `required` schema keyword
421
+ but not present in the instance object.
422
+
423
+ ### additionalProperties {#additionalProperties}
424
+
425
+ This keyword is reported
426
+ when the schema specifies `additionalProperties: false`
427
+ and the name of a property of the instance is
428
+ neither listed in the `properties` keyword
429
+ nor matches any regular expression in the `patternProperties` keyword.
430
+
431
+ * `disallowed`: required string.
432
+ Name of the offending property of the instance.
433
+
434
+ (For performance reasons,
435
+ RapidJSON only reports the first such property encountered.)
436
+
437
+ ### dependencies {#dependencies}
438
+
439
+ * `errors`: required object with one or more properties.
440
+ Names and values of its properties are described below.
441
+
442
+ Recall that JSON Schema Draft 04 supports
443
+ *schema dependencies*,
444
+ where presence of a named *controlling* property
445
+ requires the instance object to be valid against a subschema,
446
+ and *property dependencies*,
447
+ where presence of a controlling property
448
+ requires other *dependent* properties to be also present.
449
+
450
+ For a violated schema dependency,
451
+ `errors` will contain a property
452
+ with the name of the controlling property
453
+ and its value will be the error object
454
+ produced by validating the instance object
455
+ against the dependent schema.
456
+
457
+ For a violated property dependency,
458
+ `errors` will contain a property
459
+ with the name of the controlling property
460
+ and its value will be an array of one or more unique strings
461
+ listing the missing dependent properties.
462
+
463
+ ## Validation keywords for any instance type {#AnyTypes}
464
+
465
+ ### enum {#enum}
466
+
467
+ This keyword has no additional properties
468
+ beyond `instanceRef` and `schemaRef`.
469
+
470
+ * The allowed values are not listed
471
+ because `SchemaDocument` does not store them in original form.
472
+ * The violating value is not reported
473
+ because it might be unwieldy.
474
+
475
+ If you need to report these details to your users,
476
+ you can access the necessary information
477
+ by following `instanceRef` and `schemaRef`.
478
+
479
+ ### type {#type}
480
+
481
+ * `expected`: required array of one or more unique strings,
482
+ each of which is one of the seven primitive types
483
+ defined by the JSON Schema Draft 04 Core specification.
484
+ Lists the types allowed by the `type` schema keyword.
485
+ * `actual`: required string, also one of seven primitive types.
486
+ The primitive type of the instance.
487
+
488
+ ### allOf, anyOf, and oneOf {#allOf-anyOf-oneOf}
489
+
490
+ * `errors`: required array of at least one object.
491
+ There will be as many items as there are subschemas
492
+ in the `allOf`, `anyOf` or `oneOf` schema keyword, respectively.
493
+ Each item will be the error value
494
+ produced by validating the instance
495
+ against the corresponding subschema.
496
+
497
+ For `allOf`, at least one error value will be non-empty.
498
+ For `anyOf`, all error values will be non-empty.
499
+ For `oneOf`, either all error values will be non-empty,
500
+ or more than one will be empty.
501
+
502
+ ### not {#not}
503
+
504
+ This keyword has no additional properties
505
+ apart from `instanceRef` and `schemaRef`.