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;

AUTHOR

Kazuhiro Osawa <yappo <at> shibuya <döt> pl>

Shawn M Moore

tokuhirom

with plenty of code borrowed from MooseX::Types

REPOSITORY

svn co http://code2.0beta.co.uk/moose/svn/MouseX-Types/trunk MouseX-Types

LICENSE

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

1 POD Error

The following errors were encountered while parsing the POD:

Around line 117:

Non-ASCII character seen before =encoding in '<döt>'. Assuming UTF-8