rj_schema 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +18 -0
- data/ext/rj_schema/extconf.rb +7 -0
- data/ext/rj_schema/rapidjson/CHANGELOG.md +158 -0
- data/ext/rj_schema/rapidjson/CMakeLists.txt +221 -0
- data/ext/rj_schema/rapidjson/CMakeModules/FindGTestSrc.cmake +30 -0
- data/ext/rj_schema/rapidjson/RapidJSON.pc.in +7 -0
- data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +15 -0
- data/ext/rj_schema/rapidjson/RapidJSONConfigVersion.cmake.in +10 -0
- data/ext/rj_schema/rapidjson/appveyor.yml +41 -0
- data/ext/rj_schema/rapidjson/bin/data/glossary.json +22 -0
- data/ext/rj_schema/rapidjson/bin/data/menu.json +27 -0
- data/ext/rj_schema/rapidjson/bin/data/readme.txt +1 -0
- data/ext/rj_schema/rapidjson/bin/data/sample.json +3315 -0
- data/ext/rj_schema/rapidjson/bin/data/webapp.json +88 -0
- data/ext/rj_schema/rapidjson/bin/data/widget.json +26 -0
- data/ext/rj_schema/rapidjson/bin/draft-04/schema +150 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf16be.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf16bebom.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf16le.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf16lebom.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf32be.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf32bebom.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf32le.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf32lebom.json +0 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf8.json +7 -0
- data/ext/rj_schema/rapidjson/bin/encodings/utf8bom.json +7 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail1.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail10.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail11.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail12.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail13.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail14.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail15.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail16.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail17.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail18.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail19.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail2.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail20.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail21.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail22.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail23.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail24.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail25.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail26.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail27.json +2 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail28.json +2 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail29.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail3.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail30.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail31.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail32.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail33.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail4.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail5.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail6.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail7.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail8.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/fail9.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/pass1.json +58 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/pass2.json +1 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/pass3.json +6 -0
- data/ext/rj_schema/rapidjson/bin/jsonchecker/readme.txt +3 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/LICENSE +19 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/README.md +148 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/bin/jsonschema_suite +283 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json +3 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/integer.json +3 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/subSchemas.json +8 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json +82 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json +88 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/default.json +49 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/dependencies.json +108 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/disallow.json +80 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json +60 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/enum.json +71 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/extends.json +94 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/items.json +46 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxItems.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxLength.json +33 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maximum.json +42 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minItems.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minLength.json +33 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minimum.json +42 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json +107 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/format.json +222 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json +18 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/pattern.json +34 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json +110 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/properties.json +92 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/ref.json +159 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/refRemote.json +74 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/required.json +53 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/type.json +474 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/uniqueItems.json +79 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalItems.json +82 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalProperties.json +88 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/allOf.json +112 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/anyOf.json +68 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/default.json +49 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/definitions.json +32 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/dependencies.json +113 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/enum.json +72 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/items.json +46 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxItems.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxLength.json +33 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxProperties.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maximum.json +42 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minItems.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minLength.json +33 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minProperties.json +28 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minimum.json +42 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json +60 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/not.json +96 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/oneOf.json +68 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/bignum.json +107 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/format.json +148 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/pattern.json +34 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/patternProperties.json +110 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/properties.json +92 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/ref.json +159 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/refRemote.json +74 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/required.json +39 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/type.json +330 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/uniqueItems.json +79 -0
- data/ext/rj_schema/rapidjson/bin/jsonschema/tox.ini +8 -0
- data/ext/rj_schema/rapidjson/bin/types/booleans.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/floats.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/guids.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/integers.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/mixed.json +592 -0
- data/ext/rj_schema/rapidjson/bin/types/nulls.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/paragraphs.json +102 -0
- data/ext/rj_schema/rapidjson/bin/types/readme.txt +1 -0
- data/ext/rj_schema/rapidjson/contrib/natvis/LICENSE +45 -0
- data/ext/rj_schema/rapidjson/contrib/natvis/README.md +7 -0
- data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +38 -0
- data/ext/rj_schema/rapidjson/doc/CMakeLists.txt +27 -0
- data/ext/rj_schema/rapidjson/doc/Doxyfile.in +2369 -0
- data/ext/rj_schema/rapidjson/doc/Doxyfile.zh-cn.in +2369 -0
- data/ext/rj_schema/rapidjson/doc/diagram/architecture.dot +50 -0
- data/ext/rj_schema/rapidjson/doc/diagram/architecture.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.dot +65 -0
- data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.dot +62 -0
- data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/makefile +8 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move1.dot +47 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move1.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move2.dot +62 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move2.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move3.dot +60 -0
- data/ext/rj_schema/rapidjson/doc/diagram/move3.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.dot +56 -0
- data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/simpledom.dot +54 -0
- data/ext/rj_schema/rapidjson/doc/diagram/simpledom.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/tutorial.dot +58 -0
- data/ext/rj_schema/rapidjson/doc/diagram/tutorial.png +0 -0
- data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.dot +73 -0
- data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.png +0 -0
- data/ext/rj_schema/rapidjson/doc/dom.md +280 -0
- data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +284 -0
- data/ext/rj_schema/rapidjson/doc/encoding.md +146 -0
- data/ext/rj_schema/rapidjson/doc/encoding.zh-cn.md +152 -0
- data/ext/rj_schema/rapidjson/doc/faq.md +289 -0
- data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +290 -0
- data/ext/rj_schema/rapidjson/doc/features.md +104 -0
- data/ext/rj_schema/rapidjson/doc/features.zh-cn.md +103 -0
- data/ext/rj_schema/rapidjson/doc/internals.md +368 -0
- data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +363 -0
- data/ext/rj_schema/rapidjson/doc/logo/rapidjson.png +0 -0
- data/ext/rj_schema/rapidjson/doc/logo/rapidjson.svg +119 -0
- data/ext/rj_schema/rapidjson/doc/misc/DoxygenLayout.xml +194 -0
- data/ext/rj_schema/rapidjson/doc/misc/doxygenextra.css +274 -0
- data/ext/rj_schema/rapidjson/doc/misc/footer.html +11 -0
- data/ext/rj_schema/rapidjson/doc/misc/header.html +24 -0
- data/ext/rj_schema/rapidjson/doc/npm.md +31 -0
- data/ext/rj_schema/rapidjson/doc/performance.md +26 -0
- data/ext/rj_schema/rapidjson/doc/performance.zh-cn.md +26 -0
- data/ext/rj_schema/rapidjson/doc/pointer.md +234 -0
- data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +234 -0
- data/ext/rj_schema/rapidjson/doc/sax.md +509 -0
- data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +487 -0
- data/ext/rj_schema/rapidjson/doc/schema.md +505 -0
- data/ext/rj_schema/rapidjson/doc/schema.zh-cn.md +237 -0
- data/ext/rj_schema/rapidjson/doc/stream.md +426 -0
- data/ext/rj_schema/rapidjson/doc/stream.zh-cn.md +426 -0
- data/ext/rj_schema/rapidjson/doc/tutorial.md +536 -0
- data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +534 -0
- data/ext/rj_schema/rapidjson/docker/debian/Dockerfile +8 -0
- data/ext/rj_schema/rapidjson/example/CMakeLists.txt +45 -0
- data/ext/rj_schema/rapidjson/example/archiver/archiver.cpp +292 -0
- data/ext/rj_schema/rapidjson/example/archiver/archiver.h +145 -0
- data/ext/rj_schema/rapidjson/example/archiver/archivertest.cpp +287 -0
- data/ext/rj_schema/rapidjson/example/capitalize/capitalize.cpp +67 -0
- data/ext/rj_schema/rapidjson/example/condense/condense.cpp +32 -0
- data/ext/rj_schema/rapidjson/example/filterkey/filterkey.cpp +135 -0
- data/ext/rj_schema/rapidjson/example/filterkeydom/filterkeydom.cpp +170 -0
- data/ext/rj_schema/rapidjson/example/jsonx/jsonx.cpp +207 -0
- data/ext/rj_schema/rapidjson/example/lookaheadparser/lookaheadparser.cpp +350 -0
- data/ext/rj_schema/rapidjson/example/messagereader/messagereader.cpp +105 -0
- data/ext/rj_schema/rapidjson/example/parsebyparts/parsebyparts.cpp +176 -0
- data/ext/rj_schema/rapidjson/example/pretty/pretty.cpp +30 -0
- data/ext/rj_schema/rapidjson/example/prettyauto/prettyauto.cpp +56 -0
- data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +78 -0
- data/ext/rj_schema/rapidjson/example/serialize/serialize.cpp +173 -0
- data/ext/rj_schema/rapidjson/example/simpledom/simpledom.cpp +29 -0
- data/ext/rj_schema/rapidjson/example/simplepullreader/simplepullreader.cpp +53 -0
- data/ext/rj_schema/rapidjson/example/simplereader/simplereader.cpp +42 -0
- data/ext/rj_schema/rapidjson/example/simplewriter/simplewriter.cpp +36 -0
- data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +151 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +271 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +78 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/document.h +2630 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +299 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +716 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +74 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +161 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +99 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +104 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +151 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +290 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +258 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +245 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +78 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +304 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +181 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +55 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +734 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +231 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +69 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +269 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +46 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +115 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +70 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +71 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/inttypes.h +316 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/stdint.h +300 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +81 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +1363 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +277 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +628 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +2222 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +2479 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +223 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +121 -0
- data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +716 -0
- data/ext/rj_schema/rapidjson/include_dirs.js +2 -0
- data/ext/rj_schema/rapidjson/library.json +15 -0
- data/ext/rj_schema/rapidjson/license.txt +57 -0
- data/ext/rj_schema/rapidjson/package.json +24 -0
- data/ext/rj_schema/rapidjson/rapidjson.autopkg +77 -0
- data/ext/rj_schema/rapidjson/readme.md +160 -0
- data/ext/rj_schema/rapidjson/readme.zh-cn.md +152 -0
- data/ext/rj_schema/rapidjson/test/CMakeLists.txt +20 -0
- data/ext/rj_schema/rapidjson/test/perftest/CMakeLists.txt +28 -0
- data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +974 -0
- data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +24 -0
- data/ext/rj_schema/rapidjson/test/perftest/perftest.h +185 -0
- data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +166 -0
- data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +472 -0
- data/ext/rj_schema/rapidjson/test/perftest/schematest.cpp +216 -0
- data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +92 -0
- data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +102 -0
- data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +133 -0
- data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +115 -0
- data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +672 -0
- data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +98 -0
- data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +313 -0
- data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +451 -0
- data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +112 -0
- data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +230 -0
- data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +181 -0
- data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +160 -0
- data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +143 -0
- data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +70 -0
- data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +92 -0
- data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +1529 -0
- data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +344 -0
- data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +1895 -0
- data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +638 -0
- data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +2009 -0
- data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +219 -0
- data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +30 -0
- data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +192 -0
- data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +132 -0
- data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +51 -0
- data/ext/rj_schema/rapidjson/test/unittest/unittest.h +140 -0
- data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +1829 -0
- data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +598 -0
- data/ext/rj_schema/rapidjson/test/valgrind.supp +17 -0
- data/ext/rj_schema/rapidjson/travis-doxygen.sh +121 -0
- data/ext/rj_schema/rj_schema.cpp +136 -0
- data/lib/rj_schema.rb +7 -0
- metadata +371 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
// Reading a message JSON with Reader (SAX-style API).
|
2
|
+
// The JSON should be an object with key-string pairs.
|
3
|
+
|
4
|
+
#include "rapidjson/reader.h"
|
5
|
+
#include "rapidjson/error/en.h"
|
6
|
+
#include <iostream>
|
7
|
+
#include <string>
|
8
|
+
#include <map>
|
9
|
+
|
10
|
+
using namespace std;
|
11
|
+
using namespace rapidjson;
|
12
|
+
|
13
|
+
typedef map<string, string> MessageMap;
|
14
|
+
|
15
|
+
#if defined(__GNUC__)
|
16
|
+
RAPIDJSON_DIAG_PUSH
|
17
|
+
RAPIDJSON_DIAG_OFF(effc++)
|
18
|
+
#endif
|
19
|
+
|
20
|
+
#ifdef __clang__
|
21
|
+
RAPIDJSON_DIAG_PUSH
|
22
|
+
RAPIDJSON_DIAG_OFF(switch-enum)
|
23
|
+
#endif
|
24
|
+
|
25
|
+
struct MessageHandler
|
26
|
+
: public BaseReaderHandler<UTF8<>, MessageHandler> {
|
27
|
+
MessageHandler() : messages_(), state_(kExpectObjectStart), name_() {}
|
28
|
+
|
29
|
+
bool StartObject() {
|
30
|
+
switch (state_) {
|
31
|
+
case kExpectObjectStart:
|
32
|
+
state_ = kExpectNameOrObjectEnd;
|
33
|
+
return true;
|
34
|
+
default:
|
35
|
+
return false;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
bool String(const char* str, SizeType length, bool) {
|
40
|
+
switch (state_) {
|
41
|
+
case kExpectNameOrObjectEnd:
|
42
|
+
name_ = string(str, length);
|
43
|
+
state_ = kExpectValue;
|
44
|
+
return true;
|
45
|
+
case kExpectValue:
|
46
|
+
messages_.insert(MessageMap::value_type(name_, string(str, length)));
|
47
|
+
state_ = kExpectNameOrObjectEnd;
|
48
|
+
return true;
|
49
|
+
default:
|
50
|
+
return false;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
bool EndObject(SizeType) { return state_ == kExpectNameOrObjectEnd; }
|
55
|
+
|
56
|
+
bool Default() { return false; } // All other events are invalid.
|
57
|
+
|
58
|
+
MessageMap messages_;
|
59
|
+
enum State {
|
60
|
+
kExpectObjectStart,
|
61
|
+
kExpectNameOrObjectEnd,
|
62
|
+
kExpectValue
|
63
|
+
}state_;
|
64
|
+
std::string name_;
|
65
|
+
};
|
66
|
+
|
67
|
+
#if defined(__GNUC__)
|
68
|
+
RAPIDJSON_DIAG_POP
|
69
|
+
#endif
|
70
|
+
|
71
|
+
#ifdef __clang__
|
72
|
+
RAPIDJSON_DIAG_POP
|
73
|
+
#endif
|
74
|
+
|
75
|
+
static void ParseMessages(const char* json, MessageMap& messages) {
|
76
|
+
Reader reader;
|
77
|
+
MessageHandler handler;
|
78
|
+
StringStream ss(json);
|
79
|
+
if (reader.Parse(ss, handler))
|
80
|
+
messages.swap(handler.messages_); // Only change it if success.
|
81
|
+
else {
|
82
|
+
ParseErrorCode e = reader.GetParseErrorCode();
|
83
|
+
size_t o = reader.GetErrorOffset();
|
84
|
+
cout << "Error: " << GetParseError_En(e) << endl;;
|
85
|
+
cout << " at offset " << o << " near '" << string(json).substr(o, 10) << "...'" << endl;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
int main() {
|
90
|
+
MessageMap messages;
|
91
|
+
|
92
|
+
const char* json1 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\" }";
|
93
|
+
cout << json1 << endl;
|
94
|
+
ParseMessages(json1, messages);
|
95
|
+
|
96
|
+
for (MessageMap::const_iterator itr = messages.begin(); itr != messages.end(); ++itr)
|
97
|
+
cout << itr->first << ": " << itr->second << endl;
|
98
|
+
|
99
|
+
cout << endl << "Parse a JSON with invalid schema." << endl;
|
100
|
+
const char* json2 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\", \"foo\" : {} }";
|
101
|
+
cout << json2 << endl;
|
102
|
+
ParseMessages(json2, messages);
|
103
|
+
|
104
|
+
return 0;
|
105
|
+
}
|
@@ -0,0 +1,176 @@
|
|
1
|
+
// Example of parsing JSON to document by parts.
|
2
|
+
|
3
|
+
// Using C++11 threads
|
4
|
+
// Temporarily disable for clang (older version) due to incompatibility with libstdc++
|
5
|
+
#if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700)) && !defined(__clang__)
|
6
|
+
|
7
|
+
#include "rapidjson/document.h"
|
8
|
+
#include "rapidjson/error/en.h"
|
9
|
+
#include "rapidjson/writer.h"
|
10
|
+
#include "rapidjson/ostreamwrapper.h"
|
11
|
+
#include <condition_variable>
|
12
|
+
#include <iostream>
|
13
|
+
#include <mutex>
|
14
|
+
#include <thread>
|
15
|
+
|
16
|
+
using namespace rapidjson;
|
17
|
+
|
18
|
+
template<unsigned parseFlags = kParseDefaultFlags>
|
19
|
+
class AsyncDocumentParser {
|
20
|
+
public:
|
21
|
+
AsyncDocumentParser(Document& d)
|
22
|
+
: stream_(*this)
|
23
|
+
, d_(d)
|
24
|
+
, parseThread_()
|
25
|
+
, mutex_()
|
26
|
+
, notEmpty_()
|
27
|
+
, finish_()
|
28
|
+
, completed_()
|
29
|
+
{
|
30
|
+
// Create and execute thread after all member variables are initialized.
|
31
|
+
parseThread_ = std::thread(&AsyncDocumentParser::Parse, this);
|
32
|
+
}
|
33
|
+
|
34
|
+
~AsyncDocumentParser() {
|
35
|
+
if (!parseThread_.joinable())
|
36
|
+
return;
|
37
|
+
|
38
|
+
{
|
39
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
40
|
+
|
41
|
+
// Wait until the buffer is read up (or parsing is completed)
|
42
|
+
while (!stream_.Empty() && !completed_)
|
43
|
+
finish_.wait(lock);
|
44
|
+
|
45
|
+
// Automatically append '\0' as the terminator in the stream.
|
46
|
+
static const char terminator[] = "";
|
47
|
+
stream_.src_ = terminator;
|
48
|
+
stream_.end_ = terminator + 1;
|
49
|
+
notEmpty_.notify_one(); // unblock the AsyncStringStream
|
50
|
+
}
|
51
|
+
|
52
|
+
parseThread_.join();
|
53
|
+
}
|
54
|
+
|
55
|
+
void ParsePart(const char* buffer, size_t length) {
|
56
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
57
|
+
|
58
|
+
// Wait until the buffer is read up (or parsing is completed)
|
59
|
+
while (!stream_.Empty() && !completed_)
|
60
|
+
finish_.wait(lock);
|
61
|
+
|
62
|
+
// Stop further parsing if the parsing process is completed.
|
63
|
+
if (completed_)
|
64
|
+
return;
|
65
|
+
|
66
|
+
// Set the buffer to stream and unblock the AsyncStringStream
|
67
|
+
stream_.src_ = buffer;
|
68
|
+
stream_.end_ = buffer + length;
|
69
|
+
notEmpty_.notify_one();
|
70
|
+
}
|
71
|
+
|
72
|
+
private:
|
73
|
+
void Parse() {
|
74
|
+
d_.ParseStream<parseFlags>(stream_);
|
75
|
+
|
76
|
+
// The stream may not be fully read, notify finish anyway to unblock ParsePart()
|
77
|
+
std::unique_lock<std::mutex> lock(mutex_);
|
78
|
+
completed_ = true; // Parsing process is completed
|
79
|
+
finish_.notify_one(); // Unblock ParsePart() or destructor if they are waiting.
|
80
|
+
}
|
81
|
+
|
82
|
+
struct AsyncStringStream {
|
83
|
+
typedef char Ch;
|
84
|
+
|
85
|
+
AsyncStringStream(AsyncDocumentParser& parser) : parser_(parser), src_(), end_(), count_() {}
|
86
|
+
|
87
|
+
char Peek() const {
|
88
|
+
std::unique_lock<std::mutex> lock(parser_.mutex_);
|
89
|
+
|
90
|
+
// If nothing in stream, block to wait.
|
91
|
+
while (Empty())
|
92
|
+
parser_.notEmpty_.wait(lock);
|
93
|
+
|
94
|
+
return *src_;
|
95
|
+
}
|
96
|
+
|
97
|
+
char Take() {
|
98
|
+
std::unique_lock<std::mutex> lock(parser_.mutex_);
|
99
|
+
|
100
|
+
// If nothing in stream, block to wait.
|
101
|
+
while (Empty())
|
102
|
+
parser_.notEmpty_.wait(lock);
|
103
|
+
|
104
|
+
count_++;
|
105
|
+
char c = *src_++;
|
106
|
+
|
107
|
+
// If all stream is read up, notify that the stream is finish.
|
108
|
+
if (Empty())
|
109
|
+
parser_.finish_.notify_one();
|
110
|
+
|
111
|
+
return c;
|
112
|
+
}
|
113
|
+
|
114
|
+
size_t Tell() const { return count_; }
|
115
|
+
|
116
|
+
// Not implemented
|
117
|
+
char* PutBegin() { return 0; }
|
118
|
+
void Put(char) {}
|
119
|
+
void Flush() {}
|
120
|
+
size_t PutEnd(char*) { return 0; }
|
121
|
+
|
122
|
+
bool Empty() const { return src_ == end_; }
|
123
|
+
|
124
|
+
AsyncDocumentParser& parser_;
|
125
|
+
const char* src_; //!< Current read position.
|
126
|
+
const char* end_; //!< End of buffer
|
127
|
+
size_t count_; //!< Number of characters taken so far.
|
128
|
+
};
|
129
|
+
|
130
|
+
AsyncStringStream stream_;
|
131
|
+
Document& d_;
|
132
|
+
std::thread parseThread_;
|
133
|
+
std::mutex mutex_;
|
134
|
+
std::condition_variable notEmpty_;
|
135
|
+
std::condition_variable finish_;
|
136
|
+
bool completed_;
|
137
|
+
};
|
138
|
+
|
139
|
+
int main() {
|
140
|
+
Document d;
|
141
|
+
|
142
|
+
{
|
143
|
+
AsyncDocumentParser<> parser(d);
|
144
|
+
|
145
|
+
const char json1[] = " { \"hello\" : \"world\", \"t\" : tr";
|
146
|
+
//const char json1[] = " { \"hello\" : \"world\", \"t\" : trX"; // Fot test parsing error
|
147
|
+
const char json2[] = "ue, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.14";
|
148
|
+
const char json3[] = "16, \"a\":[1, 2, 3, 4] } ";
|
149
|
+
|
150
|
+
parser.ParsePart(json1, sizeof(json1) - 1);
|
151
|
+
parser.ParsePart(json2, sizeof(json2) - 1);
|
152
|
+
parser.ParsePart(json3, sizeof(json3) - 1);
|
153
|
+
}
|
154
|
+
|
155
|
+
if (d.HasParseError()) {
|
156
|
+
std::cout << "Error at offset " << d.GetErrorOffset() << ": " << GetParseError_En(d.GetParseError()) << std::endl;
|
157
|
+
return EXIT_FAILURE;
|
158
|
+
}
|
159
|
+
|
160
|
+
// Stringify the JSON to cout
|
161
|
+
OStreamWrapper os(std::cout);
|
162
|
+
Writer<OStreamWrapper> writer(os);
|
163
|
+
d.Accept(writer);
|
164
|
+
std::cout << std::endl;
|
165
|
+
|
166
|
+
return EXIT_SUCCESS;
|
167
|
+
}
|
168
|
+
|
169
|
+
#else // Not supporting C++11
|
170
|
+
|
171
|
+
#include <iostream>
|
172
|
+
int main() {
|
173
|
+
std::cout << "This example requires C++11 compiler" << std::endl;
|
174
|
+
}
|
175
|
+
|
176
|
+
#endif
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// JSON pretty formatting example
|
2
|
+
// This example can only handle UTF-8. For handling other encodings, see prettyauto example.
|
3
|
+
|
4
|
+
#include "rapidjson/reader.h"
|
5
|
+
#include "rapidjson/prettywriter.h"
|
6
|
+
#include "rapidjson/filereadstream.h"
|
7
|
+
#include "rapidjson/filewritestream.h"
|
8
|
+
#include "rapidjson/error/en.h"
|
9
|
+
|
10
|
+
using namespace rapidjson;
|
11
|
+
|
12
|
+
int main(int, char*[]) {
|
13
|
+
// Prepare reader and input stream.
|
14
|
+
Reader reader;
|
15
|
+
char readBuffer[65536];
|
16
|
+
FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
|
17
|
+
|
18
|
+
// Prepare writer and output stream.
|
19
|
+
char writeBuffer[65536];
|
20
|
+
FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer));
|
21
|
+
PrettyWriter<FileWriteStream> writer(os);
|
22
|
+
|
23
|
+
// JSON reader parse from the input stream and let writer generate the output.
|
24
|
+
if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) {
|
25
|
+
fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode()));
|
26
|
+
return 1;
|
27
|
+
}
|
28
|
+
|
29
|
+
return 0;
|
30
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
// JSON pretty formatting example
|
2
|
+
// This example can handle UTF-8/UTF-16LE/UTF-16BE/UTF-32LE/UTF-32BE.
|
3
|
+
// The input firstly convert to UTF8, and then write to the original encoding with pretty formatting.
|
4
|
+
|
5
|
+
#include "rapidjson/reader.h"
|
6
|
+
#include "rapidjson/prettywriter.h"
|
7
|
+
#include "rapidjson/filereadstream.h"
|
8
|
+
#include "rapidjson/filewritestream.h"
|
9
|
+
#include "rapidjson/encodedstream.h" // NEW
|
10
|
+
#include "rapidjson/error/en.h"
|
11
|
+
#ifdef _WIN32
|
12
|
+
#include <fcntl.h>
|
13
|
+
#include <io.h>
|
14
|
+
#endif
|
15
|
+
|
16
|
+
using namespace rapidjson;
|
17
|
+
|
18
|
+
int main(int, char*[]) {
|
19
|
+
#ifdef _WIN32
|
20
|
+
// Prevent Windows converting between CR+LF and LF
|
21
|
+
_setmode(_fileno(stdin), _O_BINARY); // NEW
|
22
|
+
_setmode(_fileno(stdout), _O_BINARY); // NEW
|
23
|
+
#endif
|
24
|
+
|
25
|
+
// Prepare reader and input stream.
|
26
|
+
//Reader reader;
|
27
|
+
GenericReader<AutoUTF<unsigned>, UTF8<> > reader; // CHANGED
|
28
|
+
char readBuffer[65536];
|
29
|
+
FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
|
30
|
+
AutoUTFInputStream<unsigned, FileReadStream> eis(is); // NEW
|
31
|
+
|
32
|
+
// Prepare writer and output stream.
|
33
|
+
char writeBuffer[65536];
|
34
|
+
FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer));
|
35
|
+
|
36
|
+
#if 1
|
37
|
+
// Use the same Encoding of the input. Also use BOM according to input.
|
38
|
+
typedef AutoUTFOutputStream<unsigned, FileWriteStream> OutputStream; // NEW
|
39
|
+
OutputStream eos(os, eis.GetType(), eis.HasBOM()); // NEW
|
40
|
+
PrettyWriter<OutputStream, UTF8<>, AutoUTF<unsigned> > writer(eos); // CHANGED
|
41
|
+
#else
|
42
|
+
// You may also use static bound encoding type, such as output to UTF-16LE with BOM
|
43
|
+
typedef EncodedOutputStream<UTF16LE<>,FileWriteStream> OutputStream; // NEW
|
44
|
+
OutputStream eos(os, true); // NEW
|
45
|
+
PrettyWriter<OutputStream, UTF8<>, UTF16LE<> > writer(eos); // CHANGED
|
46
|
+
#endif
|
47
|
+
|
48
|
+
// JSON reader parse from the input stream and let writer generate the output.
|
49
|
+
//if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) {
|
50
|
+
if (!reader.Parse<kParseValidateEncodingFlag>(eis, writer)) { // CHANGED
|
51
|
+
fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode()));
|
52
|
+
return 1;
|
53
|
+
}
|
54
|
+
|
55
|
+
return 0;
|
56
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
// Schema Validator example
|
2
|
+
|
3
|
+
// The example validates JSON text from stdin with a JSON schema specified in the argument.
|
4
|
+
|
5
|
+
#include "rapidjson/error/en.h"
|
6
|
+
#include "rapidjson/filereadstream.h"
|
7
|
+
#include "rapidjson/schema.h"
|
8
|
+
#include "rapidjson/stringbuffer.h"
|
9
|
+
#include "rapidjson/prettywriter.h"
|
10
|
+
|
11
|
+
using namespace rapidjson;
|
12
|
+
|
13
|
+
int main(int argc, char *argv[]) {
|
14
|
+
if (argc != 2) {
|
15
|
+
fprintf(stderr, "Usage: schemavalidator schema.json < input.json\n");
|
16
|
+
return EXIT_FAILURE;
|
17
|
+
}
|
18
|
+
|
19
|
+
// Read a JSON schema from file into Document
|
20
|
+
Document d;
|
21
|
+
char buffer[4096];
|
22
|
+
|
23
|
+
{
|
24
|
+
FILE *fp = fopen(argv[1], "r");
|
25
|
+
if (!fp) {
|
26
|
+
printf("Schema file '%s' not found\n", argv[1]);
|
27
|
+
return -1;
|
28
|
+
}
|
29
|
+
FileReadStream fs(fp, buffer, sizeof(buffer));
|
30
|
+
d.ParseStream(fs);
|
31
|
+
if (d.HasParseError()) {
|
32
|
+
fprintf(stderr, "Schema file '%s' is not a valid JSON\n", argv[1]);
|
33
|
+
fprintf(stderr, "Error(offset %u): %s\n",
|
34
|
+
static_cast<unsigned>(d.GetErrorOffset()),
|
35
|
+
GetParseError_En(d.GetParseError()));
|
36
|
+
fclose(fp);
|
37
|
+
return EXIT_FAILURE;
|
38
|
+
}
|
39
|
+
fclose(fp);
|
40
|
+
}
|
41
|
+
|
42
|
+
// Then convert the Document into SchemaDocument
|
43
|
+
SchemaDocument sd(d);
|
44
|
+
|
45
|
+
// Use reader to parse the JSON in stdin, and forward SAX events to validator
|
46
|
+
SchemaValidator validator(sd);
|
47
|
+
Reader reader;
|
48
|
+
FileReadStream is(stdin, buffer, sizeof(buffer));
|
49
|
+
if (!reader.Parse(is, validator) && reader.GetParseErrorCode() != kParseErrorTermination) {
|
50
|
+
// Schema validator error would cause kParseErrorTermination, which will handle it in next step.
|
51
|
+
fprintf(stderr, "Input is not a valid JSON\n");
|
52
|
+
fprintf(stderr, "Error(offset %u): %s\n",
|
53
|
+
static_cast<unsigned>(reader.GetErrorOffset()),
|
54
|
+
GetParseError_En(reader.GetParseErrorCode()));
|
55
|
+
}
|
56
|
+
|
57
|
+
// Check the validation result
|
58
|
+
if (validator.IsValid()) {
|
59
|
+
printf("Input JSON is valid.\n");
|
60
|
+
return EXIT_SUCCESS;
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
printf("Input JSON is invalid.\n");
|
64
|
+
StringBuffer sb;
|
65
|
+
validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);
|
66
|
+
fprintf(stderr, "Invalid schema: %s\n", sb.GetString());
|
67
|
+
fprintf(stderr, "Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword());
|
68
|
+
sb.Clear();
|
69
|
+
validator.GetInvalidDocumentPointer().StringifyUriFragment(sb);
|
70
|
+
fprintf(stderr, "Invalid document: %s\n", sb.GetString());
|
71
|
+
// Detailed violation report is available as a JSON value
|
72
|
+
sb.Clear();
|
73
|
+
PrettyWriter<StringBuffer> w(sb);
|
74
|
+
validator.GetError().Accept(w);
|
75
|
+
fprintf(stderr, "Error report:\n%s\n", sb.GetString());
|
76
|
+
return EXIT_FAILURE;
|
77
|
+
}
|
78
|
+
}
|