NAME
    Perinci::Object - Object-oriented interface for Rinci metadata

VERSION
    version 0.13

SYNOPSIS
     use Perinci::Object; # automatically exports risub(), rivar(), ripkg(),
                          # envres(), riresmeta()
     use Data::Dump; # for dd()

     # OO interface to function metadata.

     my $risub = risub {
         v => 1.1,
         summary => 'Calculate foo and bar',
         "summary.alt.lang.id_ID" => 'Menghitung foo dan bar',
         args => { a1 => { schema => 'int*' }, a2 => { schema => 'str' } },
         features => { pure=>1 },
     };
     dd $risub->type,                         # "function"
        $risub->v,                            # 1.0
        $risub->arg('a1'),                    # { schema=>'int*' }
        $risub->arg('a3'),                    # undef
        $risub->feature('pure'),              # 1
        $risub->feature('foo'),               # undef
        $risub->langprop('summary'),          # 'Calculate foo and bar'
        $risub->langprop('summary', 'id_ID'), # 'Menghitung foo dan bar'

     # setting arg and property
     $risub->arg('a3', 'array');  # will actually fail for 1.0 metadata
     $risub->feature('foo', 2);   # ditto

     # OO interface to variable metadata

     my $rivar = rivar { ... };

     # OO interface to package metadata

     my $ripkg = ripkg { ... };

     # OO interface to enveloped result

     my $envres = envres [200, "OK", [1, 2, 3]];
     dd $envres->is_success, # 1
        $envres->status,     # 200
        $envres->message,    # "OK"
        $envres->result,     # [1, 2, 3]
        $envres->meta;       # undef

     # setting status, message, result, extra
     $envres->status(404);
     $envres->message('Not found');
     $envres->result(undef);
     $envres->meta({errno=>-100});

     # OO interface to function/method result metadata
     my $riresmeta = riresmeta { ... };

DESCRIPTION
    Rinci works using pure data structures, but sometimes it's convenient to
    have an object-oriented interface (wrapper) for those data. This module
    provides just that.

FUNCTIONS
  rimeta $meta => OBJECT
    Exported by default. A shortcut for
    Perinci::Object::Metadata->new($meta).

  risub $meta => OBJECT
    Exported by default. A shortcut for
    Perinci::Object::function->new($meta).

  rivar $meta => OBJECT
    Exported by default. A shortcut for
    Perinci::Object::variable->new($meta).

  ripkg $meta => OBJECT
    Exported by default. A shortcut for
    Perinci::Object::package->new($meta).

  riresmeta $res => OBJECT
    Exported by default. A shortcut for Perinci::Object::Result->new($res).

SEE ALSO
    Rinci

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Perinci-Object>.

SOURCE
    Source repository is at
    <https://github.com/sharyanto/perl-Perinci-Object>.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Perinci-Object>

    When submitting a bug or request, please include a test-file or a patch
    to an existing test-file that illustrates the bug or desired feature.

AUTHOR
    Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Steven Haryanto.

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

