NAME
Type::Nano - simple type constraint library for testing
SYNOPSIS
use Type::Nano qw(Int);
Int->check("42"); # true
RATIONALE
This is a really basic implementation of Type::API::Constraint for testing modules that make use of type constraints.
I'll stress that this module is only intended for use in testing. It was created to eliminate Type::Tie's testing dependency on Types::Standard. If your code supports Type::Nano, then your code should also automatically support Type::Tiny, Specio, MooseX::Types, and MouseX::Types with no extra effort. (Of course, some of those libraries do have some more features you may want to make extra effort to use! Inlining, for example.)
Type::Nano is not recommended for use in regular application code. Type::Tiny while bigger than Type::Nano, will be much faster at runtime, and offers better integration with Moo, Moose, Mouse, and a wide variety of other tools. Use that instead.
All that having been said, Type::Nano is compatible with: Type::Tie, Moo, Type::Tiny (e.g. you can use Type::Tiny's implementation of ArrayRef
and Type::Nano's implementation of Int
, and combine them as ArrayRef[Int]
), Class::XSConstructor, and Variable::Declaration.
DESCRIPTION
Object-Oriented Interface
Constructor
Type::Nano->new(%parameters)
-
The constructor supports named parameters called
name
(a string),constraint
(a coderef expected to return a boolean), andparent
(a blessed Type::Nano object). Any other parameters passed to the constructor will be stored in the blessed hashref returned, but are ignored by Type::Nano. (Subclasses may use them.)
Methods
Types support the following methods:
$type->check($value)
-
Checks the value against the constraint; returns a boolean.
$type->get_message($failing_value)
-
Returns an error message. Does not check the value.
Types overload &{}
to do something like:
$type->check($value) or croak($type->get_message($value))
Exports
This module optionally exports the following type constraints:
Any
Defined
Undef
Ref
ArrayRef
HashRef
CodeRef
Object
Str
Bool
Num
Int
It also optionally exports the following functions for creating new type constraints:
type $name, $coderef
ortype $coderef
class_type $class
role_type $role
duck_type $name, \@methods
orduck_type \@methods
enum $name, \@values
orenum \@values
union $name, \@types
orunion \@types
intersection $name, \@types
orintersection \@types
SEE ALSO
AUTHOR
Toby Inkster <tobyink@cpan.org>.
COPYRIGHT AND LICENCE
This software is copyright (c) 2018-2019, 2022 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.