Blaze 0.0.1
The ultra high-performance JSON Schema evaluator
 
Loading...
Searching...
No Matches
Output

A collection of Blaze output processing utilities. More...

Classes

class  sourcemeta::blaze::SimpleOutput
 
class  sourcemeta::blaze::TraceOutput
 

Enumerations

enum class  sourcemeta::blaze::StandardOutput : std::uint8_t { Flag , Basic }
 

Functions

auto sourcemeta::blaze::standard (Evaluator &evaluator, const Template &schema, const sourcemeta::core::JSON &instance, const StandardOutput format) -> sourcemeta::core::JSON
 
auto sourcemeta::blaze::standard (Evaluator &evaluator, const Template &schema, const sourcemeta::core::JSON &instance, const StandardOutput format, const sourcemeta::core::PointerPositionTracker &instanceTracker) -> sourcemeta::core::JSON
 

Detailed Description

A collection of Blaze output processing utilities.

This functionality is included as follows:

#include <sourcemeta/blaze/output.h>

Class Documentation

◆ sourcemeta::blaze::SimpleOutput

class sourcemeta::blaze::SimpleOutput

A simple evaluation callback that reports a stack trace in the case of validation error that you can report as you with. For example:

#include <sourcemeta/blaze/compiler.h>
#include <sourcemeta/blaze/evaluator.h>
#include <sourcemeta/blaze/output.h>
#include <sourcemeta/core/json.h>
#include <sourcemeta/blaze/foundation.h>
#include <cassert>
#include <functional>
const sourcemeta::core::JSON schema =
sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string"
})JSON");
const auto schema_template{sourcemeta::blaze::compile(
const sourcemeta::core::JSON instance{5};
const auto result{evaluator.validate(
schema_template, instance, std::ref(output))};
if (!result) {
for (const auto &entry : output) {
std::cerr << entry.message << "\n";
sourcemeta::core::stringify(entry.instance_location, std::cerr);
std::cerr << "\n";
sourcemeta::core::stringify(entry.evaluate_path, std::cerr);
std::cerr << "\n";
}
}
auto default_schema_compiler(const Context &, const SchemaContext &, const DynamicContext &, const Instructions &) -> Instructions
auto validate(const Template &schema, const sourcemeta::core::JSON &instance) -> bool
Definition evaluator.h:109
Definition evaluator.h:79
SOURCEMETA_BLAZE_FOUNDATION_EXPORT auto schema_walker(const std::string_view keyword, const Vocabularies &vocabularies) -> const SchemaWalkerResult &
SOURCEMETA_BLAZE_FOUNDATION_EXPORT auto schema_resolver(const std::string_view identifier) -> std::optional< sourcemeta::core::JSON >
Definition output_simple.h:69

Public Types

using container_type = typename std::vector< Entry >
 
using const_iterator = typename container_type::const_iterator
 

Public Member Functions

 SimpleOutput (const sourcemeta::core::JSON &instance, sourcemeta::core::WeakPointer base=sourcemeta::core::empty_weak_pointer)
 
 SimpleOutput (const SimpleOutput &)=delete
 
auto operator= (const SimpleOutput &) -> SimpleOutput &=delete
 
auto operator() (const EvaluationType type, const bool result, const Instruction &step, const InstructionExtra &step_metadata, const sourcemeta::core::WeakPointer &evaluate_path, const sourcemeta::core::WeakPointer &instance_location, const sourcemeta::core::JSON &annotation) -> void
 
auto begin () const -> const_iterator
 
auto end () const -> const_iterator
 
auto cbegin () const -> const_iterator
 
auto cend () const -> const_iterator
 
auto annotations () const -> const auto &
 

Member Function Documentation

◆ annotations()

auto sourcemeta::blaze::SimpleOutput::annotations ( ) const -> const auto &
inline

Access annotations that were collected during evaluation, indexed by instance location and evaluation path

◆ sourcemeta::blaze::TraceOutput

class sourcemeta::blaze::TraceOutput

An evaluation callback that reports a trace of execution. For example:

#include <sourcemeta/blaze/compiler.h>
#include <sourcemeta/blaze/evaluator.h>
#include <sourcemeta/blaze/output.h>
#include <sourcemeta/core/json.h>
#include <sourcemeta/blaze/foundation.h>
#include <cassert>
#include <functional>
#include <iostream>
const sourcemeta::core::JSON schema =
sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string"
})JSON");
const auto schema_template{sourcemeta::blaze::compile(
const sourcemeta::core::JSON instance{5};
std::cerr << entry.name << "\n";
}};
const auto result{evaluator.validate(
schema_template, instance, std::ref(output))};
Definition output_trace.h:62
Definition output_trace.h:67

Public Types

enum class  EntryType : std::uint8_t { Push , Pass , Fail , Annotation }
 
using Callback = std::function< void(const Entry &)>
 

Public Member Functions

 TraceOutput (sourcemeta::blaze::SchemaWalker walker, sourcemeta::blaze::SchemaResolver resolver, Callback callback, sourcemeta::core::WeakPointer base=sourcemeta::core::empty_weak_pointer, const std::optional< std::reference_wrapper< const sourcemeta::blaze::SchemaFrame > > &frame=std::nullopt)
 
 TraceOutput (const TraceOutput &)=delete
 
auto operator= (const TraceOutput &) -> TraceOutput &=delete
 
auto operator() (const EvaluationType type, const bool result, const Instruction &step, const InstructionExtra &step_metadata, const sourcemeta::core::WeakPointer &evaluate_path, const sourcemeta::core::WeakPointer &instance_location, const sourcemeta::core::JSON &annotation) -> void
 

Enumeration Type Documentation

◆ StandardOutput

Function Documentation

◆ standard() [1/2]

auto sourcemeta::blaze::standard ( Evaluator evaluator,
const Template schema,
const sourcemeta::core::JSON &  instance,
const StandardOutput  format 
) -> sourcemeta::core::JSON

Perform JSON Schema evaluation using Standard Output formats. For example:

#include <sourcemeta/blaze/compiler.h>
#include <sourcemeta/blaze/evaluator.h>
#include <sourcemeta/blaze/output.h>
#include <sourcemeta/core/json.h>
#include <sourcemeta/blaze/foundation.h>
#include <cassert>
#include <iostream>
const sourcemeta::core::JSON schema =
sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string"
})JSON");
const auto schema_template{sourcemeta::blaze::compile(
const sourcemeta::core::JSON instance{"foo bar"};
const auto result{sourcemeta::blaze::standard(
evaluator, schema_template, instance,
sourcemeta::blaze::StandardOutput::Basic)};
assert(result.is_object());
assert(result.defines("valid"));
assert(result.at("valid").is_boolean());
assert(result.at("valid").to_boolean());
sourcemeta::core::prettify(result,
std::cout, sourcemeta::blaze::standard_output_compare);
std::cout << "\n";
auto standard(Evaluator &evaluator, const Template &schema, const sourcemeta::core::JSON &instance, const StandardOutput format) -> sourcemeta::core::JSON

Note that this output format is not a class like the others in order to have additional control over how and whether to pass a callback to the evaluator instance.

◆ standard() [2/2]

auto sourcemeta::blaze::standard ( Evaluator evaluator,
const Template schema,
const sourcemeta::core::JSON &  instance,
const StandardOutput  format,
const sourcemeta::core::PointerPositionTracker &  instanceTracker 
) -> sourcemeta::core::JSON

An overload of the standard output function that includes line and column position information as an extension.