#use warnings;
#use strict;
-use Sub::Uplevel;
use Moose::Util::TypeConstraints;
use MooseX::Types::Base ();
use MooseX::Types::Util qw( filter_tags );
use MooseX::Types::UndefinedType;
use Sub::Install qw( install_sub );
+use Carp qw( croak );
use Moose;
use namespace::clean -except => [qw( meta )];
-our $VERSION = 0.02;
+our $VERSION = 0.05;
my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'};
=head2 Library Definition
package MyLibrary;
- use strict;
# predeclare our own types
use MooseX::Types
You will have to define coercions for your types or your library won't
export a L</to_$type> coercion helper for it.
+Note that you currently cannot define types containing C<::>, since
+exporting would be a problem.
+
+You also don't need to use C<warnings> and C<strict>, since the
+definition of a library automatically exports those.
+
=head1 LIBRARY USAGE
You can import the L<"type helpers"|/"TYPE HANDLER FUNCTIONS"> of a
my ($class, %args) = @_;
my $callee = caller;
+ # everyone should want this
+ strict->import;
+ warnings->import;
+
# inject base class into new library
{ no strict 'refs';
unshift @{ $callee . '::ISA' }, 'MooseX::Types::Base';
my ($tags, $declare) = filter_tags @orig_declare;
for my $type (@$declare) {
+
+ croak "Cannot create a type containing '::' ($type) at the moment"
+ if $type =~ /::/;
+
$callee->add_type($type);
$callee->export_type_into(
$callee, $type,