NAME
MooseX::Lexical::Types - automatically validate lexicals against Moose type constraints
VERSION
version 0.01
SYNOPSIS
use MooseX::Types::Moose qw/Int/; # import Int type constraint
use MooseX::Lexical::Types qw/Int/; # register Int constraint as lexical type
my Int $foo; # declare typed variable
$foo = 42; # works
$foo = 'bar'; # fails
DESCRIPTION
This module allows you to automatically validate values assigned to lexical variables using Moose type constraints.
This can be done by importing all the MooseX::Types constraints you you need into your namespace and then registering them with MooseX::Lexical::Types. After that the type names may be used in declarations of lexical variables via my.
Values assigned to variables declared with type constraints will be checked against the type constraint.
At runtime the type exports will still return Moose::Meta::TypeConstraints.
There are a couple of caveats:
- It only works with imported MooseX::Types
-
Using normal strings as type constraints, like allowed in declaring type constraints for attributes with Moose, doesn't work.
- It only works with scalars
-
Things like
my Str @foowill not work. - It only works with simple named types
-
The type name specified after
myneeds to be a simple bareword. Things likemy ArrayRef[Str] $foowill not work. You will need to declare a named for every type you want to use inmy:subtype ArrayOfStr, as ArrayRef[Str]; my ArrayofStr $foo; - Values are only validated on assignment
-
my Int $foo;will not fail, even if
$foonow holds the valueundef, which wouldn't validate againstInt. In the future this module might also validate the value on the first fetch from the variable to properly fail when using an uninitialized variable with a value that doesn't validate.
AUTHOR
Florian Ragwitz <rafl@debian.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2009 by Florian Ragwitz.
This is free software; you can redistribute it and/or modify it under the same terms as perl itself.