NAME
MooseX::Types::XMLSchema - XMLSchema compatible Moose types library
SYNOPSIS
package My::Class;
use Moose;
use MooseX::Types::XMLSchema qw( :all );
has 'string' => ( is => 'rw', isa => 'xs:string' );
has 'int' => ( is => 'rw', isa => 'xs:int' );
has 'integer' => ( is => 'rw', isa => 'xs:integer' );
has 'boolean' => ( is => 'rw', isa => 'xs:boolean' );
has 'float' => ( is => 'rw', isa => 'xs:float' );
has 'double' => ( is => 'rw', isa => 'xs:double' );
has 'decimal' => ( is => 'rw', isa => 'xs:decimal' );
has 'integer_co' => ( is => 'rw', isa => 'xs:integer', coerce => 1 );
has 'float_co' => ( is => 'rw', isa => 'xs:float', coerce => 1 );
has 'double_co' => ( is => 'rw', isa => 'xs:double', coerce => 1 );
has 'decimal_co' => ( is => 'rw', isa => 'xs:decimal', coerce => 1 );
has 'duration' => ( is => 'rw', isa => 'xs:duration' );
has 'datetime' => ( is => 'rw', isa => 'xs:dateTime' );
has 'time' => ( is => 'rw', isa => 'xs:time' );
has 'date' => ( is => 'rw', isa => 'xs:date' );
has 'gYearMonth' => ( is => 'rw', isa => 'xs:gYearMonth' );
has 'gYear' => ( is => 'rw', isa => 'xs:gYear' );
has 'gMonthDay' => ( is => 'rw', isa => 'xs:gMonthDay' );
has 'gDay' => ( is => 'rw', isa => 'xs:gDay' );
has 'gMonth' => ( is => 'rw', isa => 'xs:gMonth' );
has 'duration_dt' => ( is => 'rw', isa => 'xs:duration', coerce => 1 );
has 'datetime_dt' => ( is => 'rw', isa => 'xs:dateTime', coerce => 1 );
has 'time_dt' => ( is => 'rw', isa => 'xs:time', coerce => 1 );
has 'date_dt' => ( is => 'rw', isa => 'xs:date', coerce => 1 );
has 'gYearMonth_dt' => ( is => 'rw', isa => 'xs:gYearMonth', coerce => 1 );
has 'gYear_dt' => ( is => 'rw', isa => 'xs:gYear', coerce => 1 );
has 'gMonthDay_dt' => ( is => 'rw', isa => 'xs:gMonthDay', coerce => 1 );
has 'gDay_dt' => ( is => 'rw', isa => 'xs:gDay', coerce => 1 );
has 'gMonth_dt' => ( is => 'rw', isa => 'xs:gMonth', coerce => 1 );
has 'base64Binary' => ( is => 'rw', isa => 'xs:base64Binary' );
has 'base64Binary_io' => ( is => 'rw', isa => 'xs:base64Binary', coerce => 1 );
has 'anyURI' => ( is => 'rw', isa => 'xs:anyURI' );
has 'anyURI_uri' => ( is => 'rw', isa => 'xs:anyURI', coerce => 1 );
has 'nonPositiveInteger' => ( is => 'rw', isa => 'xs:nonPositiveInteger' );
has 'positiveInteger' => ( is => 'rw', isa => 'xs:positiveInteger' );
has 'nonNegativeInteger' => ( is => 'rw', isa => 'xs:nonNegativeInteger' );
has 'negativeInteger' => ( is => 'rw', isa => 'xs:negativeInteger' );
Then, elsewhere:
my $object = My::Class->new(
string => 'string',
decimal => Math::BigFloat->new(20.12),
duration_dt => DateTime->now - DateTime->(year => 1990),
base64Binary_io => IO::File->new($0),
);
DESCRIPTION
This class provides a number of XMLSchema compatible types for your
Moose classes.
TYPES
xs:string
has 'string' => ( is => 'rw', isa => 'xs:string' );
A wrapper around built-in Str.
xs:integer
has 'integer' => ( is => 'rw', isa => 'xs:integer', coerce => 1 );
A Math::BigInt object. Set to coerce from Int.
This is defined in XSchema to be an arbitrary size integer.
xs:positiveInteger
has 'integer' => (
is => 'rw',
isa => 'xs:positiveInteger',
coerce => 1,
);
A Math::BigInt object. Set to coerce from Int.
This is defined in XSchema to be an arbitrary size integer greater than
zero.
xs:nonPositiveInteger
has 'integer' => (
is => 'rw',
isa => 'xs:nonPositiveInteger',
coerce => 1,
);
A Math::BigInt object. Set to coerce from Int.
This is defined in XSchema to be an arbitrary size integer less than or
equal to zero.
xs:negativeInteger
has 'integer' => (
is => 'rw',
isa => 'xs:negativeInteger',
coerce => 1,
);
A Math::BigInt object. Set to coerce from Int.
This is defined in XSchema to be an arbitrary size integer less than
zero.
xs:nonNegativeInteger
has 'int' => ( is => 'rw', isa => 'xs:nonNegativeInteger' );
A Math::BigInt object. Set to coerce from Int.
This is defined in XSchema to be an arbitrary size integer greater than
or equal to zero.
xs:long
has 'long' => ( is => 'rw', isa => 'xs:long' );
A 64-bit Integer. Represented as a Math::Bigint object, but limited to
the 64-bit (signed) range. Set to coerce from Int.
xs:unsignedLong
has 'long' => ( is => 'rw', isa => 'xs:unsignedLong' );
A 64-bit Integer. Represented as a Math::Bigint object, but limited to
the 64-bit (unsigned) range. Set to coerce from Int.
xs:int
has 'int' => ( is => 'rw', isa => 'xs:int' );
A 32-bit integer. Represented natively.
xs:unsignedInt
has 'int' => ( is => 'rw', isa => 'xs:unsignedInt' );
A 32-bit integer. Represented natively.
xs:short
has 'int' => ( is => 'rw', isa => 'xs:short' );
A 16-bit integer. Represented natively.
xs:unsignedShort
has 'int' => ( is => 'rw', isa => 'xs:unsignedShort' );
A 16-bit integer. Represented natively.
xs:byte
has 'int' => ( is => 'rw', isa => 'xs:byte' );
An 8-bit integer. Represented natively.
xs:unsignedByte
has 'int' => ( is => 'rw', isa => 'xs:unsignedByte' );
An 8-bit integer. Represented natively.
xs:boolean
has 'boolean' => ( is => 'rw', isa => 'xs:boolean' );
A wrapper around built-in Bool.
xs:float
has 'float' => ( is => 'rw', isa => 'xs:float' );
A 64-bit Float. Represented as a Math::BigFloat object, but limited to
the 64-bit (unsigned) range.
xs:double
has 'double' => ( is => 'rw', isa => 'xs:double' );
A 64-bit Float. Represented as a Math::BigFloat object, but limited to
the 64-bit (unsigned) range. Set to coerce from Num.
xs:decimal
has 'decimal' => ( is => 'rw', isa => 'xs:decimal' );
A 64-bit Float. Represented as a Math::BigFloat object, but limited to
the 64-bit (unsigned) range. Set to coerce from Num.
xs:duration
has 'duration' => ( is => 'rw', isa => 'xs:duration' );
has 'duration_dt' => ( is => 'rw', isa => 'xs:duration', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a
DateTime::Duration object.
xs:datetime
has 'datetime' => ( is => 'rw', isa => 'xs:dateTime' );
has 'datetime_dt' => ( is => 'rw', isa => 'xs:dateTime', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object.
xs:time
has 'time' => ( is => 'rw', isa => 'xs:time' );
has 'time_dt' => ( is => 'rw', isa => 'xs:time', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object.
xs:date
has 'date' => ( is => 'rw', isa => 'xs:date' );
has 'date_dt' => ( is => 'rw', isa => 'xs:date', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object.
xs:gYearMonth
has 'gYearMonth' => ( is => 'rw', isa => 'xs:gYearMonth' );
has 'gYearMonth_dt' => ( is => 'rw', isa => 'xs:gYearMonth', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object or a ArrayRef of two integers.
xs:gYear
has 'gYear' => ( is => 'rw', isa => 'xs:gYear' );
has 'gYear_dt' => ( is => 'rw', isa => 'xs:gYear', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object.
xs:gMonthDay
has 'gMonthDay' => ( is => 'rw', isa => 'xs:gMonthDay' );
has 'gMonthDay_dt' => ( is => 'rw', isa => 'xs:gMonthDay', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object or a ArrayRef of two integers.
xs:gDay
has 'gDay' => ( is => 'rw', isa => 'xs:gDay' );
has 'gDay_dt_int' => ( is => 'rw', isa => 'xs:gDay', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object or Int eg. 24.
xs:gMonth
has 'gMonth' => ( is => 'rw', isa => 'xs:gMonth', coerce => 1 );
has 'gMonth_dt_int' => ( is => 'rw', isa => 'xs:gMonth', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a DateTime
object or Int eg. 10.
xs:base64Binary
has 'base64Binary' => ( is => 'rw', isa => 'xs:base64Binary' );
has 'base64Binary_io' => ( is => 'rw', isa => 'xs:base64Binary', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a IO::Handle
object - the content of the file will be encoded to UTF-8 before
encoding with base64.
xs:anyURI
has 'anyURI' => ( is => 'rw', isa => 'xs:anyURI' );
has 'anyURI_uri' => ( is => 'rw', isa => 'xs:anyURI', coerce => 1 );
A wrapper around Str. If you enable coerce you can pass a URI object.
xs:nonPositiveInteger
has 'nonPositiveInteger' => ( is => 'rw', isa => 'xs:nonPositiveInteger' );
A wrapper around built-in Int.
xs:negativeInteger
has 'negativeInteger' => ( is => 'rw', isa => 'xs:negativeInteger' );
A wrapper around built-in Int.
xs:nonNegativeInteger
has 'nonNegativeInteger' => ( is => 'rw', isa => 'xs:nonNegativeInteger' );
A wrapper around built-in Int.
xs:positiveInteger
has 'positiveInteger' => ( is => 'rw', isa => 'xs:positiveInteger' );
A wrapper around built-in Int.
SEE ALSO
* Enable attributes coercion automatically with
MooseX::AlwaysCoerce
AUTHOR
Alex J. G. Burzyński, ""
BUGS
Please report any bugs or feature requests to
"bug-moosex-types-xmlschema at rt.cpan.org", or through the web
interface at
.
I will be notified, and then you'll automatically be notified of
progress on your bug as I make changes.
COPYRIGHT & LICENSE
Copyright 2009-2012 Alex J. G. Burzyński.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.