MouseX::Types.3pm

Langue: en

Version: 2010-02-13 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

MouseX::Types - Organize your Mouse types in libraries

SYNOPSIS

Library Definition

   package MyLibrary;
 
   # predeclare our own types
   use MouseX::Types 
     -declare => [qw(
         PositiveInt NegativeInt
     )];
 
   # import builtin types
   use MouseX::Types::Mouse 'Int';
 
   # type definition.
   subtype PositiveInt, 
       as Int, 
       where { $_ > 0 },
       message { "Int is not larger than 0" };
   
   subtype NegativeInt,
       as Int,
       where { $_ < 0 },
       message { "Int is not smaller than 0" };
 
   # type coercion
   coerce PositiveInt,
       from Int,
           via { 1 };
 
   1;
 
 

Usage

   package Foo;
   use Mouse;
   use MyLibrary qw( PositiveInt NegativeInt );
 
   # use the exported constants as type names
   has 'bar',
       isa    => PositiveInt,
       is     => 'rw';
   has 'baz',
       isa    => NegativeInt,
       is     => 'rw';
 
   sub quux {
       my ($self, $value);
 
       # test the value
       print "positive\n" if is_PositiveInt($value);
       print "negative\n" if is_NegativeInt($value);
 
       # coerce the value, NegativeInt doesn't have a coercion
       # helper, since it didn't define any coercions.
       $value = to_PositiveInt($value) or die "Cannot coerce";
   }
 
   1;
 
 

AUTHORS

Kazuhiro Osawa <yappo <at> shibuya <do.t> pl>

Shawn M Moore

tokuhirom

Goro Fuji

with plenty of code borrowed from MooseX::Types

REPOSITORY

   git clone git://github.com/yappo/p5-mousex-types.git MouseX-Types
 
 

SEE ALSO

Mouse

MooseX::Types

Copyright (c) 2008-2010, Kazuhiro Osawa and partly based on MooseX::Types, which is (c) Robert Sedlacek.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.