NAME
Data::Sah::Util::Type - Utility functions related to types
VERSION
This document describes version 0.46 of Data::Sah::Util::Type (from Perl distribution Data-Sah-Util-Type), released on 2016-12-09.
SYNOPSIS
get_type
is_type
is_simple is_numeric is_collection is_ref
)
;
say
get_type(
"int"
);
# -> int
say
get_type(
"int*"
);
# -> int
say
get_type([
int
=>
min
=>0]);
# -> int
say
get_type(
"foo"
);
# -> foo (doesn't check type is known)
say
is_type(
"int*"
);
# -> 1
say
is_type(
"foo"
);
# -> 0
say
is_simple(
"int"
);
# -> 1
say
is_simple(
"array"
);
# -> 0
say
is_simple([
any
=>
of
=> [
"float"
,
"str"
]);
# -> 1
say
is_simple(
"re"
);
# -> 1
say
is_simple(
"foo"
);
# -> 0
say
is_collection(
"array*"
);
# -> 1
say
is_collection([
"hash"
,
of
=>
"int"
]);
# -> 1
say
is_collection(
"str"
);
# -> 0
say
is_collection(
"foo"
);
# -> 0
say
is_ref(
"code*"
);
# -> 1
say
is_ref(
"array"
);
# -> 1
say
is_ref(
"str"
);
# -> 0
say
is_ref(
"foo"
);
# -> 0
say
is_numeric([
"int"
,
min
=>0]);
# -> 1
say
is_numeric(
"str"
);
# -> 0
say
is_numeric(
"foo"
);
# -> 0
DESCRIPTION
This module provides some secondary utility functions related to Sah and Data::Sah. It is deliberately distributed separately from the Data-Sah main distribution to be differentiated from Data::Sah::Util which contains "primary" utilities and is distributed with Data-Sah.
Reference table for simple/collection/ref/numeric criteria of builtin types:
+----------+-----------+---------------+--------+------------+
| type | is_simple | is_collection | is_ref | is_numeric |
+----------+-----------+---------------+--------+------------+
| array | | 1 | 1 | |
| bool | 1 | | | |
| buf | 1 | | | |
| cistr | 1 | | | |
| code | | | 1 | |
| date | 1 | | | |
| duration | 1 | | | |
| float | 1 | | | 1 |
| hash | | 1 | 1 | |
|
int
| 1 | | | 1 |
| num | 1 | | | 1 |
| obj | | | 1 | |
| re | 1 | | 1 | |
| str | 1 | | | |
|
undef
| 1 | | | |
+----------+-----------+---------------+--------+------------+
FUNCTIONS
None exported by default, but they are exportable.
get_type($sch) => STR
Return type name.
is_type($sch) => STR
Return type name if type in schema is known, or undef.
is_simple($sch[, \%opts]) => BOOL
Simple means "scalar" or can be represented as a scalar. This is currently used to determine if a builtin type can be specified as an argument or option value in command-line.
This includes re
, bool
, as well as date
and duration
.
If type is all
, then for this routine to be true all of the mentioned types must be simple. If type is any
, then for this routine to be true at least one of the mentioned types must be simple.
Options:
schema_is_normalized => BOOL
is_collection($sch[, \%opts]) => BOOL
Collection means array
or hash
.
If type is all
, then for this routine to be true all of the mentioned types must be collection. If type is any
, then for this routine to be true at least one of the mentioned types must be collection.
is_ref($sch[, \%opts]) => BOOL
"Ref" means generally a reference in Perl. But date
and duration
are not regarded as "ref". Regular expression on the other hand is regarded as a ref.
If type is all
, then for this routine to be true all of the mentioned types must be "ref". If type is any
, then for this routine to be true at least one of the mentioned types must be "ref".
is_numeric($sch[, \%opts]) => BOOL
Currently, only num
, int
, and float
are numeric.
If type is all
, then for this routine to be true all of the mentioned types must be numeric. If type is any
, then for this routine to be true at least one of the mentioned types must be numeric.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Data-Sah-Util-Type.
SOURCE
Source repository is at https://github.com/perlancar/perl-Data-Sah-Util-Type.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Sah-Util-Type
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) 2016 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.