MooseX::Meta::TypeConstraint::Mooish(3) Translate Moo-style constraints to Moose-style


This document describes version 0.001 of MooseX::Meta::TypeConstraint::Mooish - released March 12, 2015 as part of MooseX-Meta-TypeConstraint-Mooish.


# easiest is via AttributeShortcuts
use MooseX::AttributeShortcuts 0.028;
has foo => (
is => 'rw',
isa => sub { die unless $_[0] == 5 },
# or, the hard way
use MooseX::Meta::TypeConstraint::Mooish;
has foo => (
is => 'rw',
isa => MooseX::Meta::TypeConstraint::Mooish->new(
constraint => sub { die unless $_[0] == 5 },


Moose type constraints are expected to return true if the value passes the constraint, and false otherwise; Moo ``constraints'', on the other hand, die if validation fails.

This metaclass allows for Moo-style constraints; it will wrap them and translate their Moo into a dialect Moose understands.

Note that this is largely to enable functionality in MooseX::AttributeShortcuts; the easiest way use this metaclass is by using that package. Also, as it's not inconceivable that this functionality may be desired in other constraint metaclasses, the bulk of this metaclass' functionality is implemented as a trait.


Please report any bugs or feature requests on the bugtracker website

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


Chris Weyl <[email protected]>

I'm a material boy in a material world

Please note I do not expect to be gittip'ed or flattr'ed for this work, rather it is simply a very pleasant surprise. I largely create and release works like this because I need them or I find it enjoyable; however, don't let that stop you if you feel like it ;)

Flattr this <'s%20CPAN%20MooseX-Meta-TypeConstraint-Mooish&tags=%22RsrchBoy's%20MooseX-Meta-TypeConstraint-Mooish%20in%20the%20CPAN%22>, gittip me <>, or indulge my Amazon Wishlist <>... If you so desire.


This software is Copyright (c) 2015 by Chris Weyl.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999