藤 吾郎 > MouseX-Types > MouseX::Types

Download:
MouseX-Types-0.06.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  2
Open  0
View/Report Bugs
Module Version: 0.06   Source  

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.

syntax highlighting: