| MouseX-Types-DateTime documentation | Contained in the MouseX-Types-DateTime distribution. |
MouseX::Types::DateTime - A DateTime type library for Mouse
package MyApp;
use Mouse;
use MouseX::Types::DateTime;
has 'datetime' => (
is => 'rw',
isa => 'DateTime',
coerce => 1,
);
has 'duration' => (
is => 'rw',
isa => 'DateTime::Duration',
coerce => 1,
);
has 'timezone' => (
is => 'rw',
isa => 'DateTime::TimeZone',
coerce => 1,
);
has 'locale' => (
is => 'rw',
isa => 'DateTime::Locale',
coerce => 1,
);
package MyApp;
use Mouse;
use MouseX::Types::DateTime qw(DateTime Duration TimeZone Locale);
has 'datetime' => (
is => 'rw',
isa => DateTime,
coerce => 1,
);
has 'duration' => (
is => 'rw',
isa => Duration,
coerce => 1,
);
has 'timezone' => (
is => 'rw',
isa => TimeZone,
coerce => 1,
);
has 'locale' => (
is => 'rw',
isa => Locale,
coerce => 1,
);
MouseX::Types::DateTime creates common Mouse types and coercions for dealing with DateTime objects as Mouse attributes.
Coercions (see Mouse::TypeRegistry) are made from
Str and HashRef to DateTime, DateTime::Duration,
DateTime::TimeZone and DateTime::Locale objects.
A DateTime class type.
Coerces from Str via from_epoch in DateTime or new in DateTimeX::Easy.
Coerces from HashRef via new in DateTime.
A DateTime::Duration class type.
Coerces from Str via parse_duration in Time::Duration::Parse
and new in DateTime::Duration.
Coerces from HashRef via new in DateTime::Duration.
A DateTime::TimeZone class type.
Coerces from Str via new in DateTime::TimeZone.
A DateTime::Locale (see DateTime::Locale::root) class type.
Coerces from Str via load in DateTime::Locale.
NAKAGAWA Masaki <masaki@cpan.org>
Yuval Kogman, John Napiorkowski, AUTHOR in MooseX::Types::DateTime
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Mouse, Mouse::TypeRegistry,
| MouseX-Types-DateTime documentation | Contained in the MouseX-Types-DateTime distribution. |
package MouseX::Types::DateTime; use strict; use warnings; use 5.8.1; use DateTime (); use DateTime::Duration (); use DateTime::TimeZone (); use DateTime::Locale (); use DateTime::Locale::root (); use DateTimeX::Easy (); use Time::Duration::Parse qw(parse_duration); use Scalar::Util qw(looks_like_number); use Mouse::Util::TypeConstraints; use MouseX::Types::Mouse qw(Str HashRef); use namespace::clean; use MouseX::Types -declare => [qw(DateTime Duration TimeZone Locale)]; # export Types our $VERSION = '0.02'; class_type 'DateTime' => { class => 'DateTime' }; class_type 'DateTime::Duration' => { class => 'DateTime::Duration' }; class_type 'DateTime::TimeZone' => { class => 'DateTime::TimeZone' }; class_type 'DateTime::Locale' => { class => 'DateTime::Locale::root' }; subtype DateTime, as 'DateTime'; subtype Duration, as 'DateTime::Duration'; subtype TimeZone, as 'DateTime::TimeZone'; subtype Locale, as 'DateTime::Locale'; for my $type ( 'DateTime', DateTime ) { coerce $type, from Str, via { looks_like_number($_) ? 'DateTime'->from_epoch(epoch => $_) : DateTimeX::Easy->new($_); }, from HashRef, via { 'DateTime'->new(%$_) }; } for my $type ( 'DateTime::Duration', Duration ) { coerce $type, from Str, via { DateTime::Duration->new( seconds => looks_like_number($_) ? $_ : parse_duration($_) ); }, from HashRef, via { DateTime::Duration->new(%$_) }; } for my $type ( 'DateTime::TimeZone', TimeZone ) { coerce $type, from Str, via { DateTime::TimeZone->new(name => $_) }; } for my $type ( 'DateTime::Locale', Locale ) { coerce $type, from Str, via { DateTime::Locale->load($_) }; } 1;