NAME
Perinci::Sub::ArgEntity - (DEPRECATED) Convention for
Perinci::Sub::ArgEntity::* modules
VERSION
This document describes version 0.021 of Perinci::Sub::ArgEntity (from
Perl distribution Perinci-Sub-ArgEntity), released on 2019-07-03.
SYNOPSIS
In your Rinci function metadata:
{
v => 1.1,
summary => 'Some function',
args => {
file => {
# specification for 'file' argument
schema => 'str*',
'x.schema.entity' => 'filename',
},
url => {
# specification for 'url' argument
schema => ['array*', of => 'str*'],
'x.schema.element_entity' => 'riap_url',
},
},
}
Now in command-line application:
% myprog --file <tab>
will use completion routine from function "complete_arg_val" in module
Perinci::Sub::ArgEntity::filename, while:
% myprog --url <tab>
will use element completion routine from function "complete_arg_val" in
module Perinci::Sub::ArgEntity::riap_url.
DESCRIPTION
STATUS: This module is now deprecated. It is now preferred to express
the "type" or "entity" of a schema in the schema name itself, e.g.
Sah::Schema::filename instead of Perinci::Sub::ArgEntity::filename,
reducing duplication. To specify completion rule in the Sah schema
instead of in the Rinci argument specification, you can use
Perinci::Sub::XCompletion. So far, Perinci::Sub::ArgEntity *is* only
used to specify completion rule.
The namespace "Perinci::Sub::ArgEntity::*" is used to put data and
routine related to certain types (entities) of function arguments.
Completion
The idea is: instead of having to put completion routine (coderef)
directly in argument specification, like:
file => {
# specification for 'file' argument
schema => 'str*',
completion => \&Complete::File::complete_file,
},
you just specify the argument as being of a certain entity using the
attribute "x.schema.entity":
file => {
# specification for 'file' argument
schema => 'str*',
'x.schema.entity' => 'filename',
},
and module like Perinci::Sub::Complete will search the appropriate
completion routine (if any) for your argument. In this case, it will
search for the module named "Perinci::Sub::ArgEntity::" + *entity_name*
and then look up the function "complete_arg_val".
Note that aside from completion, there are other uses for the
"x.schema.entity" attribute, e.g. in help message generation, etc. More
things will be formally specified in the future.
HOMEPAGE
Please visit the project's homepage at
<https://metacpan.org/release/Perinci-Sub-ArgEntity>.
SOURCE
Source repository is at
<https://github.com/perlancar/perl-Perinci-Sub-ArgEntity>.
BUGS
Please report any bugs or feature requests on the bugtracker website
<https://rt.cpan.org/Public/Dist/Display.html?Name=Perinci-Sub-ArgEntity
>
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
Rinci, Rinci::function
Complete, Perinci::Sub::Complete
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019, 2015 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.