NAME
JSON::Schema::Modern::Vocabulary - Base role for JSON Schema vocabulary classes
VERSION
version 0.617
SYNOPSIS
package MyApp::Vocabulary::Awesome;
use Moo;
with 'JSON::Schema::Modern::Vocabulary';
DESCRIPTION
This package is the role which all all vocabulary classes for JSON::Schema::Modern must compose, describing the basic structure expected of a vocabulary class and defining some basic methods which are useful for traversing or evaluating various keywords.
ATTRIBUTES
METHODS
vocabulary
Returns the canonical URI(s) describing the vocabulary for each draft specification version, as described in JSON Schema Core Meta-specification, section 8.1.2. Must be implemented by the composing class.
evaluation_order
Returns a positive integer, used as a sort key for determining the evaluation order of this vocabulary. If not overridden in a custom vocabulary class, its evaluation order will be after all built-in vocabularies. You probably don't need to define this.
keywords
Returns the list of keywords defined by the vocabulary. Must be implemented by the composing class.
traverse
Traverses a subschema. Callers are expected to establish a new $state
scope.
traverse_subschema
Recursively traverses the schema at the current keyword, as in the not
keyword.
traverse_array_schemas
Recursively traverses the list of subschemas at the current keyword, as in the allOf
keyword.
traverse_object_schemas
Recursively traverses the (subschema) values of the object at the current keyword, as in the $defs
keyword.
traverse_property_schema
Recursively traverses the subschema under one property of the object at the current keyword.
eval
Evaluates a subschema. Callers are expected to establish a new $state
scope.
eval_subschema_at_uri
Resolves a URI to a subschema, then evaluates that subschema (essentially the $ref
keyword).
SUPPORT
Bugs may be submitted through https://github.com/karenetheridge/JSON-Schema-Modern/issues.
I am also usually active on irc, as 'ether' at irc.perl.org
and irc.libera.chat
.
You can also find me on the JSON Schema Slack server and OpenAPI Slack server, which are also great resources for finding help.
AUTHOR
Karen Etheridge <ether@cpan.org>
COPYRIGHT AND LICENCE
This software is copyright (c) 2020 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Some schema files have their own licence, in share/LICENSE.