Data::Sah::Util::Role - Sah utility routines for roles
This document describes version 0.892 of Data::Sah::Util::Role (from Perl distribution Data-Sah), released on 2018-06-05.
This module provides some utility routines to be used in roles, e.g. Data::Sah::Type::* and Data::Sah::FuncSet::*.
Data::Sah::Type::*
Data::Sah::FuncSet::*
Define a clause. Used in type roles (Data::Sah::Type::*). Internally it adds a Moo requires for clause_$name.
requires
clause_$name
Options:
v => int
Specify clause specification version. Must be 2 (the current version).
schema => sah::schema
Define schema for clause value.
prio => int {min=>0, max=>100, default=>50}
Optional. Default is 50. The higher the priority (the lower the number), the earlier the clause will be processed.
aliases => \@aliases OR $alias
Define aliases. Optional.
inspect_elem => bool
If set to true, then this means clause inspect the element(s) of the data. This is only relevant for types that has elements (see HasElems role). An example of clause like this is has or each_elem. When the value of inspect_elem is true, a compiler must prepare by coercing the elements of the data, if there are coercion rules applicable.
has
each_elem
inspect_elem
subschema => coderef
If set, then declare that the clause value contains a subschema. The coderef must provide a way to get the subschema from
code => coderef
Optional. Define implementation for the clause. The code will be installed as 'clause_$name'.
into => str $package
By default it is the caller package, but can be set to other package.
Example:
has_clause minimum => (arg => 'int*', aliases => 'min');
Specify that clause named ALIAS is an alias for TARGET.
You have to define TARGET clause first (see has_clause above).
has_clause max_length => ...; has_clause_alias max_length => "max_len";
Define a Sah function. Used in function set roles (Data::Sah::FuncSet::*). Internally it adds a Moo requires for func_$name.
func_$name
Optional. Declare aliases.
code => $code
Supply implementation for the function. The code will be installed as 'func_$name'.
into => $package
has_func abs => (args => 'num');
Specify that function named ALIAS is an alias for TARGET.
You have to specify TARGET function first (see has_func above).
has_func_alias 'atan' => 'arctan';
Please visit the project's homepage at https://metacpan.org/release/Data-Sah.
Source repository is at https://github.com/perlancar/perl-Data-Sah.
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Sah
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.
perlancar <perlancar@cpan.org>
This software is copyright (c) 2018, 2017, 2016, 2015, 2014, 2013, 2012 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.
To install Data::Sah, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Sah
CPAN shell
perl -MCPAN -e shell install Data::Sah
For more information on module installation, please visit the detailed CPAN module installation guide.