diff options
Diffstat (limited to 'lib/Moose/Exception/InvalidArgumentToMethod.pm')
-rw-r--r-- | lib/Moose/Exception/InvalidArgumentToMethod.pm | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/Moose/Exception/InvalidArgumentToMethod.pm b/lib/Moose/Exception/InvalidArgumentToMethod.pm new file mode 100644 index 0000000..df22ce7 --- /dev/null +++ b/lib/Moose/Exception/InvalidArgumentToMethod.pm @@ -0,0 +1,44 @@ +package Moose::Exception::InvalidArgumentToMethod; +our $VERSION = '2.1405'; + +use Moose; +extends 'Moose::Exception'; + +has 'argument' => ( + is => 'ro', + isa => 'Any', + required => 1 +); + +has [qw(type type_of_argument method_name)] => ( + is => 'ro', + isa => 'Str', + required => 1 +); + +has 'ordinal' => ( + is => 'ro', + isa => 'Str', + predicate => 'is_ordinal_set' +); + +has 'argument_noun' => ( + is => 'ro', + isa => 'Str', + default => 'argument' +); + +sub _build_message { + my $self = shift; + my $article = ( $self->type_of_argument =~ /^[aeiou]/ ? 'an ' : 'a '); + my $arg_noun = $self->argument_noun; + + if( $self->is_ordinal_set ) { + "The ".$self->ordinal." $arg_noun passed to ".$self->method_name." must be ".$article.$self->type_of_argument; + } + else { + "The $arg_noun passed to ".$self->method_name." must be ".$article.$self->type_of_argument; + } +} + +1; |