perlancar > Perinci-Object-0.15 > Perinci::Object

Download:
Perinci-Object-0.15.tar.gz

Dependencies

Annotate this POD

Website

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.15   Source  

NAME ^

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

VERSION ^

This document describes version 0.15 of Perinci::Object (from Perl distribution Perinci-Object), released on 2014-10-20.

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).

envres $res => OBJECT

Exported by default. A shortcut for Perinci::Object::EnvResult->new($res).

riresmeta $resmeta => OBJECT

Exported by default. A shortcut for Perinci::Object::ResMeta->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 ^

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2014 by perlancar@cpan.org.

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: