MooseX::Types::UUID - UUID type for Moose classes


MooseX-Types-UUID documentation Contained in the MooseX-Types-UUID distribution.

Index


Code Index:

NAME

Top

MooseX::Types::UUID - UUID type for Moose classes

SYNOPSIS

Top

  package Class;
  use Moose;
  use MooseX::Types::UUID qw(UUID);

  has 'uuid' => ( is => 'ro', isa => UUID );

  package main;
  Class->new( uuid => '77C71F92-0EC7-11DD-B986-DF138EE79F6F' );

DESCRIPTION

Top

This module lets you constrain attributes to only contain UUIDs (in their usual human-readable form). No coercion is attempted.

EXPORT

Top

None by default, you'll usually want to request UUID explicitly.

AUTHOR

Top

Jonathan Rockway <jrockway@cpan.org>

Infinity Interactive (http://www.iinteractive.com/)

COPYRIGHT

Top


MooseX-Types-UUID documentation Contained in the MooseX-Types-UUID distribution.

package MooseX::Types::UUID;
use strict;
use warnings;

our $VERSION = '0.02';
our $AUTHORITY = 'CPAN:JROCKWAY';

use MooseX::Types -declare => ['UUID'];
use MooseX::Types::Moose qw(Str);

sub _validate_uuid {
    my ($str) = @_;
    return $str =~ /^[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}$/;
}

subtype UUID,
  as Str, where { _validate_uuid($_) };

coerce UUID,
  # i've never seen lowercase UUIDs, but someone's bound to try it
  from Str, via { uc };

1;

__END__