jsoncons 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/jsoncons/extconf.rb +43 -0
- data/ext/jsoncons/jsoncons.cpp +161 -0
- data/ext/jsoncons/jsoncons.h +10 -0
- data/jsoncons.gemspec +44 -0
- data/lib/jsoncons/jsoncons/examples/input/address-book.json +13 -0
- data/lib/jsoncons/jsoncons/examples/input/books.json +28 -0
- data/lib/jsoncons/jsoncons/examples/input/countries.json +7 -0
- data/lib/jsoncons/jsoncons/examples/input/employees.json +30 -0
- data/lib/jsoncons/jsoncons/examples/input/jsonschema/name.json +15 -0
- data/lib/jsoncons/jsoncons/examples/input/multiple-json-objects.json +3 -0
- data/lib/jsoncons/jsoncons/examples/input/sales.csv +6 -0
- data/lib/jsoncons/jsoncons/examples/input/store.json +28 -0
- data/lib/jsoncons/jsoncons/examples/input/tasks.csv +6 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/allocator_holder.hpp +38 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/basic_json.hpp +5905 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/bigint.hpp +1611 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/byte_string.hpp +820 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/config/binary_config.hpp +226 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/config/compiler_support.hpp +375 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/config/jsoncons_config.hpp +309 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/config/version.hpp +40 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/conv_error.hpp +218 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/decode_json.hpp +209 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/decode_traits.hpp +651 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/endian.hpp +44 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/grisu3.hpp +312 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/optional.hpp +483 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/parse_number.hpp +1133 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/span.hpp +188 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/string_view.hpp +537 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/string_wrapper.hpp +370 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/detail/write_number.hpp +567 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/encode_json.hpp +315 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/encode_traits.hpp +378 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json.hpp +18 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_array.hpp +324 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_content_handler.hpp +12 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_cursor.hpp +448 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_decoder.hpp +420 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_encoder.hpp +1587 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_error.hpp +156 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_exception.hpp +241 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_filter.hpp +653 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_fwd.hpp +23 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_object.hpp +1772 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_options.hpp +862 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_parser.hpp +2900 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_reader.hpp +731 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_traits_macros.hpp +1072 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_traits_macros_deprecated.hpp +144 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_type.hpp +206 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_type_traits.hpp +1830 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_visitor.hpp +1560 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/json_visitor2.hpp +2079 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/pretty_print.hpp +89 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/ser_context.hpp +62 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/sink.hpp +289 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/source.hpp +777 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/source_adaptor.hpp +148 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/staj2_cursor.hpp +1189 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/staj_cursor.hpp +1254 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/staj_iterator.hpp +449 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/tag_type.hpp +245 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/text_source_adaptor.hpp +144 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/traits_extension.hpp +884 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/typed_array_view.hpp +250 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/unicode_traits.hpp +1330 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/uri.hpp +635 -0
- data/lib/jsoncons/jsoncons/include/jsoncons/value_converter.hpp +340 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson.hpp +23 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_cursor.hpp +320 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_decimal128.hpp +865 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_encoder.hpp +585 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_error.hpp +103 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_oid.hpp +245 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_options.hpp +75 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_parser.hpp +645 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_reader.hpp +92 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/bson_type.hpp +44 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/decode_bson.hpp +201 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/bson/encode_bson.hpp +144 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor.hpp +26 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_cursor.hpp +351 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_cursor2.hpp +265 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_detail.hpp +93 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_encoder.hpp +1766 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_error.hpp +105 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_options.hpp +113 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_parser.hpp +1942 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/cbor_reader.hpp +116 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/decode_cbor.hpp +203 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/cbor/encode_cbor.hpp +151 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv.hpp +17 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_cursor.hpp +358 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_encoder.hpp +954 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_error.hpp +85 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_options.hpp +973 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_parser.hpp +2099 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_reader.hpp +348 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/csv_serializer.hpp +12 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/decode_csv.hpp +208 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/csv/encode_csv.hpp +122 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jmespath/jmespath.hpp +5215 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jmespath/jmespath_error.hpp +215 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpatch/jsonpatch.hpp +579 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpatch/jsonpatch_error.hpp +121 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/expression.hpp +3329 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/flatten.hpp +432 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/json_location.hpp +445 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/json_query.hpp +115 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/jsonpath.hpp +13 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/jsonpath_error.hpp +240 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/jsonpath_expression.hpp +2612 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpath/jsonpath_selector.hpp +1322 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpointer/jsonpointer.hpp +1577 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonpointer/jsonpointer_error.hpp +119 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/format_validator.hpp +968 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/json_validator.hpp +120 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/jsonschema.hpp +13 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/jsonschema_error.hpp +105 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/jsonschema_version.hpp +18 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/keyword_validator.hpp +1745 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/keyword_validator_factory.hpp +556 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/schema_draft7.hpp +198 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/schema_location.hpp +200 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/schema_version.hpp +35 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/jsonschema/subschema.hpp +144 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/mergepatch/mergepatch.hpp +103 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/decode_msgpack.hpp +202 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/encode_msgpack.hpp +142 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack.hpp +24 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_cursor.hpp +343 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_cursor2.hpp +259 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_encoder.hpp +753 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_error.hpp +94 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_options.hpp +74 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_parser.hpp +748 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_reader.hpp +116 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/msgpack/msgpack_type.hpp +63 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/decode_ubjson.hpp +201 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/encode_ubjson.hpp +142 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson.hpp +23 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_cursor.hpp +307 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_encoder.hpp +502 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_error.hpp +100 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_options.hpp +87 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_parser.hpp +880 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_reader.hpp +92 -0
- data/lib/jsoncons/jsoncons/include/jsoncons_ext/ubjson/ubjson_type.hpp +43 -0
- data/lib/jsoncons/version.rb +5 -0
- data/lib/jsoncons.rb +33 -0
- data/test/jsoncons_test.rb +108 -0
- data/test/test_helper.rb +7 -0
- metadata +268 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Copyright 2020 Daniel Parker
|
|
2
|
+
// Distributed under the Boost license, Version 1.0.
|
|
3
|
+
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
4
|
+
|
|
5
|
+
// See https://github.com/danielaparker/jsoncons for latest version
|
|
6
|
+
|
|
7
|
+
#ifndef JSONCONS_JSONSCHEMA_JSON_VALIDATOR_HPP
|
|
8
|
+
#define JSONCONS_JSONSCHEMA_JSON_VALIDATOR_HPP
|
|
9
|
+
|
|
10
|
+
#include <jsoncons/config/jsoncons_config.hpp>
|
|
11
|
+
#include <jsoncons/uri.hpp>
|
|
12
|
+
#include <jsoncons/json.hpp>
|
|
13
|
+
#include <jsoncons_ext/jsonpointer/jsonpointer.hpp>
|
|
14
|
+
#include <jsoncons_ext/jsonschema/keyword_validator_factory.hpp>
|
|
15
|
+
#include <cassert>
|
|
16
|
+
#include <set>
|
|
17
|
+
#include <sstream>
|
|
18
|
+
#include <iostream>
|
|
19
|
+
#include <cassert>
|
|
20
|
+
#include <functional>
|
|
21
|
+
|
|
22
|
+
namespace jsoncons {
|
|
23
|
+
namespace jsonschema {
|
|
24
|
+
|
|
25
|
+
class throwing_error_reporter : public error_reporter
|
|
26
|
+
{
|
|
27
|
+
void do_error(const validation_output& o) override
|
|
28
|
+
{
|
|
29
|
+
JSONCONS_THROW(validation_error(o.message()));
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
class fail_early_reporter : public error_reporter
|
|
34
|
+
{
|
|
35
|
+
void do_error(const validation_output&) override
|
|
36
|
+
{
|
|
37
|
+
}
|
|
38
|
+
public:
|
|
39
|
+
fail_early_reporter()
|
|
40
|
+
: error_reporter(true)
|
|
41
|
+
{
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
using error_reporter_t = std::function<void(const validation_output& o)>;
|
|
46
|
+
|
|
47
|
+
struct error_reporter_adaptor : public error_reporter
|
|
48
|
+
{
|
|
49
|
+
error_reporter_t reporter_;
|
|
50
|
+
|
|
51
|
+
error_reporter_adaptor(const error_reporter_t& reporter)
|
|
52
|
+
: reporter_(reporter)
|
|
53
|
+
{
|
|
54
|
+
}
|
|
55
|
+
private:
|
|
56
|
+
void do_error(const validation_output& e) override
|
|
57
|
+
{
|
|
58
|
+
reporter_(e);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template <class Json>
|
|
63
|
+
class json_validator
|
|
64
|
+
{
|
|
65
|
+
std::shared_ptr<json_schema<Json>> root_;
|
|
66
|
+
|
|
67
|
+
public:
|
|
68
|
+
json_validator(std::shared_ptr<json_schema<Json>> root)
|
|
69
|
+
: root_(root)
|
|
70
|
+
{
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
json_validator(json_validator &&) = default;
|
|
74
|
+
json_validator &operator=(json_validator &&) = default;
|
|
75
|
+
|
|
76
|
+
json_validator(json_validator const &) = delete;
|
|
77
|
+
json_validator &operator=(json_validator const &) = delete;
|
|
78
|
+
|
|
79
|
+
~json_validator() = default;
|
|
80
|
+
|
|
81
|
+
// Validate input JSON against a JSON Schema with a default throwing error reporter
|
|
82
|
+
Json validate(const Json& instance) const
|
|
83
|
+
{
|
|
84
|
+
throwing_error_reporter reporter;
|
|
85
|
+
jsonpointer::json_pointer instance_location("#");
|
|
86
|
+
Json patch(json_array_arg);
|
|
87
|
+
|
|
88
|
+
root_->validate(instance, instance_location, reporter, patch);
|
|
89
|
+
return patch;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Validate input JSON against a JSON Schema
|
|
93
|
+
bool is_valid(const Json& instance) const
|
|
94
|
+
{
|
|
95
|
+
fail_early_reporter reporter;
|
|
96
|
+
jsonpointer::json_pointer instance_location("#");
|
|
97
|
+
Json patch(json_array_arg);
|
|
98
|
+
|
|
99
|
+
root_->validate(instance, instance_location, reporter, patch);
|
|
100
|
+
return reporter.error_count() == 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Validate input JSON against a JSON Schema with a provided error reporter
|
|
104
|
+
template <class Reporter>
|
|
105
|
+
typename std::enable_if<traits_extension::is_unary_function_object_exact<Reporter,void,validation_output>::value,Json>::type
|
|
106
|
+
validate(const Json& instance, const Reporter& reporter) const
|
|
107
|
+
{
|
|
108
|
+
jsonpointer::json_pointer instance_location("#");
|
|
109
|
+
Json patch(json_array_arg);
|
|
110
|
+
|
|
111
|
+
error_reporter_adaptor adaptor(reporter);
|
|
112
|
+
root_->validate(instance, instance_location, adaptor, patch);
|
|
113
|
+
return patch;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
} // namespace jsonschema
|
|
118
|
+
} // namespace jsoncons
|
|
119
|
+
|
|
120
|
+
#endif // JSONCONS_JSONSCHEMA_JSON_VALIDATOR_HPP
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright 2020 Daniel Parker
|
|
2
|
+
// Distributed under the Boost license, Version 1.0.
|
|
3
|
+
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
4
|
+
|
|
5
|
+
// See https://github.com/danielaparker/jsoncons for latest version
|
|
6
|
+
|
|
7
|
+
#ifndef JSONCONS_JSONSCHEMA_JSONSCHEMA_HPP
|
|
8
|
+
#define JSONCONS_JSONSCHEMA_JSONSCHEMA_HPP
|
|
9
|
+
|
|
10
|
+
#include <jsoncons_ext/jsonschema/keyword_validator.hpp>
|
|
11
|
+
#include <jsoncons_ext/jsonschema/json_validator.hpp>
|
|
12
|
+
|
|
13
|
+
#endif // JSONCONS_JSONSCHEMA_JSONSCHEMA_HPP
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/// Copyright 2020 Daniel Parker
|
|
2
|
+
// Distributed under the Boost license, Version 1.0.
|
|
3
|
+
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
4
|
+
|
|
5
|
+
// See https://github.com/danielaparker/jsoncons for latest version
|
|
6
|
+
|
|
7
|
+
#ifndef JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP
|
|
8
|
+
#define JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP
|
|
9
|
+
|
|
10
|
+
#include <jsoncons/json_exception.hpp>
|
|
11
|
+
#include <system_error>
|
|
12
|
+
|
|
13
|
+
namespace jsoncons {
|
|
14
|
+
namespace jsonschema {
|
|
15
|
+
|
|
16
|
+
class schema_error : public std::runtime_error, public virtual json_exception
|
|
17
|
+
{
|
|
18
|
+
public:
|
|
19
|
+
schema_error(const std::string& message)
|
|
20
|
+
: std::runtime_error(message)
|
|
21
|
+
{
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const char* what() const noexcept override
|
|
25
|
+
{
|
|
26
|
+
return std::runtime_error::what();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
class validation_error : public std::runtime_error, public virtual json_exception
|
|
31
|
+
{
|
|
32
|
+
public:
|
|
33
|
+
validation_error(const std::string& message)
|
|
34
|
+
: std::runtime_error(message)
|
|
35
|
+
{
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const char* what() const noexcept override
|
|
39
|
+
{
|
|
40
|
+
return std::runtime_error::what();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
class validation_output
|
|
45
|
+
{
|
|
46
|
+
std::string keyword_;
|
|
47
|
+
std::string absolute_keyword_location_;
|
|
48
|
+
std::string instance_location_;
|
|
49
|
+
std::string message_;
|
|
50
|
+
std::vector<validation_output> nested_errors_;
|
|
51
|
+
public:
|
|
52
|
+
validation_output(std::string keyword,
|
|
53
|
+
std::string absolute_keyword_location,
|
|
54
|
+
std::string instance_location,
|
|
55
|
+
std::string message)
|
|
56
|
+
: keyword_(std::move(keyword)),
|
|
57
|
+
absolute_keyword_location_(std::move(absolute_keyword_location)),
|
|
58
|
+
instance_location_(std::move(instance_location)),
|
|
59
|
+
message_(std::move(message))
|
|
60
|
+
{
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
validation_output(const std::string& keyword,
|
|
64
|
+
const std::string& absolute_keyword_location,
|
|
65
|
+
const std::string& instance_location,
|
|
66
|
+
const std::string& message,
|
|
67
|
+
const std::vector<validation_output>& nested_errors)
|
|
68
|
+
: keyword_(keyword),
|
|
69
|
+
absolute_keyword_location_(absolute_keyword_location),
|
|
70
|
+
instance_location_(instance_location),
|
|
71
|
+
message_(message),
|
|
72
|
+
nested_errors_(nested_errors)
|
|
73
|
+
{
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const std::string& instance_location() const
|
|
77
|
+
{
|
|
78
|
+
return instance_location_;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const std::string& message() const
|
|
82
|
+
{
|
|
83
|
+
return message_;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const std::string& absolute_keyword_location() const
|
|
87
|
+
{
|
|
88
|
+
return absolute_keyword_location_;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const std::string& keyword() const
|
|
92
|
+
{
|
|
93
|
+
return keyword_;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const std::vector<validation_output>& nested_errors() const
|
|
97
|
+
{
|
|
98
|
+
return nested_errors_;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
} // namespace jsonschema
|
|
103
|
+
} // namespace jsoncons
|
|
104
|
+
|
|
105
|
+
#endif // JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Copyright 2021 Daniel Parker
|
|
2
|
+
// Distributed under the Boost license, Version 1.0.
|
|
3
|
+
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
4
|
+
|
|
5
|
+
// See https://github.com/danielaparker/jsoncons for latest version
|
|
6
|
+
|
|
7
|
+
#ifndef JSONCONS_JSONSCHEMA_JSONSCHEMA_VERSION_HPP
|
|
8
|
+
#define JSONCONS_JSONSCHEMA_JSONSCHEMA_VERSION_HPP
|
|
9
|
+
|
|
10
|
+
#include <jsoncons/json.hpp>
|
|
11
|
+
|
|
12
|
+
namespace jsoncons {
|
|
13
|
+
namespace jsonschema {
|
|
14
|
+
|
|
15
|
+
} // namespace jsonschema
|
|
16
|
+
} // namespace jsoncons
|
|
17
|
+
|
|
18
|
+
#endif // JSONCONS_JSONSCHEMA_JSONSCHEMA_VERSION_HPP
|