-
-
02 Jan 2021 00:50:04 UTC
- Distribution: Perinci-Object
- Module version: 0.311
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (2832 / 0 / 0)
- Kwalitee
Bus factor: 1- 93.03% Coverage
- License: perl_5
- Perl: v5.10.1
- Activity
24 month- Tools
- Download (23.18KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- FUNCTIONS
- HOMEPAGE
- SOURCE
- BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT AND LICENSE
NAME
Perinci::Object - Object-oriented interface for Rinci metadata
VERSION
This document describes version 0.311 of Perinci::Object (from Perl distribution Perinci-Object), released on 2020-01-02.
SYNOPSIS
use Perinci::Object; # automatically exports risub(), rivar(), ripkg(), # envres(), envresmulti(), envrestable(), 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.1 $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({lang=>'id_ID'}, 'summary'), # '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 { ... }; # an example of using envresmulti() sub myfunc { ... my $envres = envresmulti(); # add result for each item $envres->add_result(200, "OK", {item_id=>1, payload=>"a"}); $envres->add_result(202, "OK", {item_id=>2, note=>"blah", payload=>"b"}); $envres->add_result(404, "Not found", {item_id=>3}); ... # finally, return the result return $envres->as_struct; } # an example of using envrestable() sub myfunc { ... my $envres = envrestable(); $envres->add_field('foo'); $envres->add_field('bar'); ... return $envres->as_struct; }
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).
envresmulti $res => OBJECT
Exported by default. A shortcut for Perinci::Object::EnvResultMulti->new($res).
envrestable $res => OBJECT
Exported by default. A shortcut for Perinci::Object::EnvResultTable->new($res).
riresmeta $resmeta => OBJECT
Exported by default. A shortcut for Perinci::Object::ResMeta->new($res).
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Perinci-Object.
SOURCE
Source repository is at https://github.com/perlancar/perl-Perinci-Object.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/perlancar/perl-Perinci-Object/issues
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.
SEE ALSO
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021, 2017, 2016, 2015, 2014, 2013, 2012, 2011 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.
Module Install Instructions
To install Perinci::Object, copy and paste the appropriate command in to your terminal.
cpanm Perinci::Object
perl -MCPAN -e shell install Perinci::Object
For more information on module installation, please visit the detailed CPAN module installation guide.