logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Type::Nano - simple type constraint library for testing

Author

       Toby Inkster <tobyink@cpan.org>.

Bugs

       Please report any bugs to <http://rt.cpan.org/Dist/Display.html?Queue=Type-Tie>.

Description

Object-OrientedInterfaceConstructor

       "Type::Nano->new(%parameters)"
           The  constructor supports named parameters called "name" (a string), "constraint" (a coderef expected
           to return a boolean), and "parent" (a blessed Type::Nano object). Any other parameters passed to  the
           constructor will be stored in the blessed hashred returned, but are ignored by Type::Nano.

       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" or "type $coderef"

       •   "class_type $class"

       •   "role_type $role"

       •   "duck_type $name, \@methods" or "duck_type \@methods"

       •   "enum $name, \@values" or "enum \@values"

       •   "union $name, \@types" or "union \@types"

       •   "intersection $name, \@types" or "intersection \@types"

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.

perl v5.32.1                                       2021-02-07                                    Type::Nano(3pm)

Name

       Type::Nano - simple type constraint library for testing

Rationale

       This is a really basic implementation of Type::API::Constraint for testing modules that make use of type
       constraints, such as Type::Tie.

       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.

See Also

       Type::API.

Support

IRC:     support     is     available     through    in    the    #moops    channel    on    irc.perl.org
       <http://www.irc.perl.org/channels.html>.

Synopsis

         use Type::Nano qw(Int);

         Int->check("42");  # true

See Also