Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
vendorpull https://github.com/sourcemeta/vendorpull 1dcbac42809cf87cb5b045106b863e17ad84ba02
core https://github.com/sourcemeta/core b890ad46edb22694e9fecb194facdafbfd682648
blaze https://github.com/sourcemeta/blaze 685ec8353495d8f13e5f34a23c5ce53118997a48
core https://github.com/sourcemeta/core 277dcfa984d2a1ba3ef3d643361a69f2a0bddbc3
blaze https://github.com/sourcemeta/blaze 079b9d438b37ee40966730c79a498abda84c04f8
bootstrap https://github.com/twbs/bootstrap 1a6fdfae6be09b09eaced8f0e442ca6f7680a61e
5 changes: 4 additions & 1 deletion src/compiler/compiler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,10 @@ auto compile(sourcemeta::core::JSON &schema,
assert(mapper_result.first);

// The "any" encoding is always the last resort
const auto dialect{sourcemeta::blaze::dialect(schema)};
const auto *declared{schema.is_object() ? schema.try_at("$schema") : nullptr};
const auto dialect{declared != nullptr && declared->is_string()
? declared->to_string()
: std::string_view{}};
if (dialect.empty() || dialect != ENCODING_V1) {
make_encoding(schema, "ANY_PACKED_TYPE_TAG_BYTE_PREFIX",
sourcemeta::core::JSON::make_object());
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/enum_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class Enum8Bit final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("enum") &&
schema.at("enum").is_array() && !location.pointer.empty() &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/enum_8_bit_top_level.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class Enum8BitTopLevel final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("enum") &&
schema.at("enum").is_array() && location.pointer.empty() &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/enum_arbitrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ class EnumArbitrary final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("enum") &&
schema.at("enum").is_array() && !location.pointer.empty() &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/enum_singleton.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class EnumSingleton final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("enum") &&
schema.at("enum").is_array() && schema.at("enum").size() == 1;
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_bounded_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class IntegerBounded8Bit final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_bounded_greater_than_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerBoundedGreaterThan8Bit final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_bounded_multiplier_8_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerBoundedMultiplier8Bit final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
if (location.dialect != "https://json-schema.org/draft/2020-12/schema" ||
!vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
!vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) ||
!schema.is_object() || !schema.defines("type") ||
schema.at("type").to_string() != "integer" ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerBoundedMultiplierGreaterThan8Bit final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
if (location.dialect != "https://json-schema.org/draft/2020-12/schema" ||
!vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
!vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) ||
!schema.is_object() || !schema.defines("type") ||
schema.at("type").to_string() != "integer" ||
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_lower_bound.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class IntegerLowerBound final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_lower_bound_multiplier.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerLowerBoundMultiplier final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_unbound.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class IntegerUnbound final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_unbound_multiplier.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerUnboundMultiplier final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_upper_bound.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class IntegerUpperBound final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/integer_upper_bound_multiplier.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ class IntegerUpperBoundMultiplier final
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "integer" &&
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/mapper/number_arbitrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class NumberArbitrary final : public sourcemeta::blaze::SchemaTransformRule {
[[nodiscard]] auto
condition(const sourcemeta::core::JSON &schema,
const sourcemeta::core::JSON &,
const sourcemeta::blaze::Vocabularies &vocabularies,
const sourcemeta::blaze::SchemaVocabularies &vocabularies,
const sourcemeta::blaze::SchemaFrame &,
const sourcemeta::blaze::SchemaFrame::Location &location,
const sourcemeta::blaze::SchemaWalker &,
const sourcemeta::blaze::SchemaResolver &, const bool) const
-> sourcemeta::blaze::SchemaTransformRule::Result override {
return location.dialect == "https://json-schema.org/draft/2020-12/schema" &&
vocabularies.contains(sourcemeta::blaze::Vocabularies::Known::
vocabularies.contains(sourcemeta::blaze::SchemaVocabularies::Known::
JSON_Schema_2020_12_Validation) &&
schema.is_object() && schema.defines("type") &&
schema.at("type").to_string() == "number";
Expand Down
9 changes: 0 additions & 9 deletions vendor/blaze/CMakeLists.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading