alltests pass!
[gitmo/MooseX-Types-Data-GUID.git] / lib / MooseX / Types / Data / GUID.pm
diff --git a/lib/MooseX/Types/Data/GUID.pm b/lib/MooseX/Types/Data/GUID.pm
new file mode 100644 (file)
index 0000000..d36cf56
--- /dev/null
@@ -0,0 +1,68 @@
+package MooseX::Types::Data::GUID;
+
+use strict;
+use warnings;
+
+use Data::GUID;
+use MooseX::Types -declare => [qw/ GUID /];
+use Moose::Util::TypeConstraints;
+
+class_type 'Data::GUID';
+subtype GUID, as 'Data::GUID';
+
+coerce 'Data::GUID' =>
+  from Str => via { Data::GUID->from_any_string($_) };
+
+coerce GUID,
+  from Str => via { Data::GUID->from_any_string($_) };
+
+1;
+
+__END__;
+
+=head1 NAME
+
+MooseX::Types::Data::GUID - L<Data::GUID> related constraints and coercions for
+Moose
+
+=head1 SYNOPSIS
+
+Export Example:
+
+    use MooseX::Types::Data::GUID qw(TimeZone);
+
+    has guid => (
+        isa => GUID,
+        is => "rw",
+        coerce => 1,
+    );
+
+    Class->new( guid => "C6A9FE9A-72FE-11DD-B3B4-B2EC1DADD46B");
+
+Namespaced Example:
+
+    use MooseX::Types::Data::GUID;
+
+    has guid => (
+        isa => 'Data::GUID',
+        is => "rw",
+        coerce => 1,
+    );
+
+    Class->new( guid => "C6A9FE9A-72FE-11DD-B3B4-B2EC1DADD46B");
+
+=head1 DESCRIPTION
+
+This module packages several L<Moose::Util::TypeConstraints> with coercions,
+designed to work with L<Data::GUID>.
+
+=head1 AUTHOR
+
+Guillermo Roditi (groditi) E<lt>groditi@cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2008 Guillermo Roditi. This program is free software; you can 
+redistribute it and/or modify it under the same terms as Perl itself.
+
+=cut