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 <dö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 AND LICENSE

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.