The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

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

VERSION

version 0.522

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

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

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

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.

traverse_array_schemas

Recursively traverses the list of subschemas at the current keyword.

traverse_object_schemas

Recursively traverses the (subschema) values of the object at the current 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.

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.

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.