NAME

JSON::Schema::Modern::Vocabulary - Base role for JSON Schema vocabulary classes

VERSION

version 0.544

SYNOPSIS

package MyApp::Vocabulary::Awesome;
use Moo::Role;
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.

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.