Ricardo SIGNES > Data-Rx > Data::Rx

Download:
Data-Rx-0.100110.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
Stalled  1
View/Report Bugs
Module Version: 0.100110   Source   Latest Release: Data-Rx-0.200000-TRIAL

NAME ^

Data::Rx - perl implementation of Rx schema system

VERSION ^

version 0.100110

SYNOPSIS ^

  my $rx = Data::Rx->new;

  my $success = {
    type     => '//rec',
    required => {
      location => '//str',
      status   => { type => '//int', value => 201 },
    },
    optional => {
      comments => {
        type     => '//arr',
        contents => '//str',
      },
    },
  };

  my $schema = $rx->make_schema($success);

  my $reply = $json->decode( $agent->get($http_request) );

  die "invalid reply" unless $schema->check($reply);

METHODS ^

new

  my $rx = Data::Rx->new(\%arg);

This returns a new Data::Rx object.

Valid arguments are:

  prefix        - optional; a hashref of prefix pairs for type shorthand
  type_plugins  - optional; an arrayref of type or type bundle plugins
  no_core_types - optional; if true, core type bundle is not loaded

The prefix hashref should look something like this:

  {
    'pobox'  => 'tag:pobox.com,1995:rx/core/',
    'skynet' => 'tag:skynet.mil,1997-08-29:types/rx/',
  }

make_schema

  my $schema = $rx->make_schema($schema);

This returns a new schema checker (something with a check method) for the given Rx input.

register_type_plugin

  $rx->register_type_plugin($type_or_bundle);

Given a type plugin, this registers the plugin with the Data::Rx object. Bundles are expanded recursively and all their plugins are registered. Type plugins must have a type_uri method and a new_checker method.

add_prefix

  $rx->add_prefix($name => $prefix_string);

For example:

  $rx->add_prefix('.meta' => 'tag:codesimply.com,2008:rx/meta/');

SEE ALSO ^

http://rjbs.manxome.org/rx

AUTHOR ^

  Ricardo SIGNES <rjbs@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2010 by Ricardo SIGNES.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: