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

RELATED TO MouseX::Types…

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.