JSON::Schema::Modern::Vocabulary(3pm)

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

VERSION
version 0.641

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 <https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.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).

GIVING THANKS
If you found this module to be useful, please show your appreciation by adding a +1 in MetaCPAN <https://metacpan.org/dist/JSON-Schema-Modern> and a star in GitHub <https://github.com/karenetheridge/JSON-Schema-Modern>.

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 <https://json-schema.slack.com> and OpenAPI Slack server <https://open-api.slack.com>, 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.