package MooseX::Types::Common::Numeric;
+# ABSTRACT: Commonly used numeric types
use strict;
use warnings;
-our $VERSION = '0.001000';
-
use MooseX::Types -declare => [
- qw(PositiveNum PositiveInt NegativeNum NegativeInt SingleDigit)
+ qw(PositiveNum PositiveOrZeroNum
+ PositiveInt PositiveOrZeroInt
+ NegativeNum NegativeOrZeroNum
+ NegativeInt NegativeOrZeroInt
+ SingleDigit)
];
use MooseX::Types::Moose qw/Num Int/;
subtype PositiveNum,
as Num,
+ where { $_ > 0 },
+ message { "Must be a positive number" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] > 0) };
+ }
+ : ()
+ );
+
+subtype PositiveOrZeroNum,
+ as Num,
where { $_ >= 0 },
- message { "Must be a positive number" };
+ message { "Must be a number greater than or equal to zero" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] >= 0) };
+ }
+ : ()
+ );
subtype PositiveInt,
as Int,
+ where { $_ > 0 },
+ message { "Must be a positive integer" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] > 0) };
+ }
+ : ()
+ );
+
+subtype PositiveOrZeroInt,
+ as Int,
where { $_ >= 0 },
- message { "Must be a positive integer" };
+ message { "Must be an integer greater than or equal to zero" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] >= 0) };
+ }
+ : ()
+ );
subtype NegativeNum,
as Num,
+ where { $_ < 0 },
+ message { "Must be a negative number" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] < 0) };
+ }
+ : ()
+ );
+
+subtype NegativeOrZeroNum,
+ as Num,
where { $_ <= 0 },
- message { "Must be a negative number" };
+ message { "Must be a number less than or equal to zero" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] <= 0) };
+ }
+ : ()
+ );
subtype NegativeInt,
as Int,
+ where { $_ < 0 },
+ message { "Must be a negative integer" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] < 0) };
+ }
+ : ()
+ );
+
+subtype NegativeOrZeroInt,
+ as Int,
where { $_ <= 0 },
- message { "Must be a negative integer" };
+ message { "Must be an integer less than or equal to zero" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] <= 0) };
+ }
+ : ()
+ );
subtype SingleDigit,
as PositiveInt,
where { $_ <= 9 },
- message { "Must be a single digit" };
-
+ message { "Must be a single digit" },
+ ( $Moose::VERSION >= 2.0200
+ ? inline_as {
+ $_[0]->parent()->_inline_check( $_[1] ) . ' && '
+ . qq{ ($_[1] <= 9) };
+ }
+ : ()
+ );
1;
-__END__;
-
+__END__
-=head1 NAME
-
-MooseX::Types::Common::Numeric
+=pod
=head1 SYNOPSIS
=over
-=item * PositiveNum
+=item * C<PositiveNum>
+
+=item * C<PositiveOrZeroNum>
+
+=item * C<PositiveInt>
+
+=item * C<PositiveOrZeroInt>
-=item * PositiveInt
+=item * C<NegativeNum>
-=item * NegativeNum
+=item * C<NegativeOrZeroNum>
-=item * Int
+=item * C<NegativeInt>
-=item * SingleDigit
+=item * C<NegativeOrZeroInt>
+
+=item * C<SingleDigit>
=back
=back
-=head1 AUTHORS
-
-Please see:: L<MooseX::Types::Common>
-
=cut