Provided by: pkwalify_1.22-2_all bug

NAME

       Kwalify - Kwalify schema for data structures

SYNOPSIS

         use Kwalify qw(validate);
         validate($schema, $data);

       Typically used together with YAML or JSON:

         use YAML;
         validate(YAML::LoadFile($schema_file), YAML::LoadFile($data_file));

         use JSON;
         validate(jsonToObj($schema_data), jsonToObj($data));

DESCRIPTION

       Kwalify is a Perl implementation for validating data structures against the Kwalify
       schema. For a schema definition, see
       <http://www.kuwata-lab.com/kwalify/ruby/users-guide.01.html>, but see also below "SCHEMA
       DEFINITION".

   validate($schema_data, $data)
       Validate $data according to Kwalify schema specified in $schema_data. Dies if the
       validation fails.

       validate may be exported.

SCHEMA DEFINITION

       The original schema definition document is not very specific about types and behaviour.
       Here's how Kwalify.pm implements things:

       pattern
           Perl regular expressions are used for patterns. This may or may not be compatible with
           other Kwalify validators, so restrict to "simple" regular expression constructs to be
           compatible with other validators.

       type
           str Any defined value which is not a number. Most probably you will want to use text
               instead of str.

           int A possibly signed integer. Note that scientific notation is not supported, and it
               is also not clear whether it should be supported.

           float
               A possibly signed floating value with a mandatory decimal point. Note that
               scientific notation is also not supported here.

           bool
               The values yes, true, and 1 for true values and the values no, false, and 0 for
               false values are allowed. The ruby implementation possibly allows more values, but
               this is not documented.

               Note that this definition is problematic, because for example the string no is a
               true boolean value in Perl. So one should stick to 0 and 1 as data values, and
               probably define an additional pattern or enum to ensure this:

                   type: bool
                   enum: [0, 1]

           scalar
               Currently the same as text, but it's not clear if this is correct.

           date
               A string matching "/^\d{4}-\d{2}-\d{2}$/" (i.e. YYYY-MM-DD). Note that no date
               range checks are done (yet).

           time
               A string matching "/^\d{2}:\d{2}:\d{2}$/" (i.e. HH:MM:SS). Note that no time range
               checks are done (yet).

           timestamp
               Not supported --- it is not clear what this is supposed to be.

       assert
           Currently not supported by the Perl implementation.

       classname
           Previously defined what is now class, see
           <http://web.archive.org/web/20071230173101/http://www.kuwata-lab.com/kwalify/users-guide.01.html>.

       class
           Currently not used, as there's no genclass action.

       default
           Currently not used, as there's no genclass action.

TECHNICAL NOTES

       As Kwalify.pm is a pure validator and de-coupled from a parser (in fact, it does not need
       to deal with YAML at all, but just with pure perl data structures), there's no connection
       to the original validated document. This means that no line numbers are available to the
       validator. In case of validation errors the validator is only able to show a path-like
       expression to the data causing the error.

AUTHOR

       Slaven ReziX, <srezic@cpan.org>

COPYRIGHT AND LICENSE

       Copyright (C) 2006,2007,2008,2009,2010 by Slaven ReziX

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of
       Perl 5 you may have available.

SEE ALSO

       pkwalify, kwalify(1).

       Other non-XML schema languages: <http://rjbs.manxome.org/rx/>