| MouseX-AttributeHelpers documentation | Contained in the MouseX-AttributeHelpers distribution. |
MouseX::AttributeHelpers::Number
package Real;
use Mouse;
use MouseX::AttributeHelpers;
has 'integer' => (
metaclass => 'Number',
is => 'rw',
isa => 'Int',
default => 5,
provides => {
set => 'set',
add => 'add',
sub => 'sub',
mul => 'mul',
div => 'div',
mod => 'mod',
abs => 'abs',
},
);
package main;
my $real = Real->new;
$real->add(5); # same as $real->integer($real->integer + 5);
$real->sub(2); # same as $real->integer($real->integer - 2);
This provides a simple numeric attribute, which supports most of the basic math operations.
NAKAGAWA Masaki <masaki@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| MouseX-AttributeHelpers documentation | Contained in the MouseX-AttributeHelpers distribution. |
package MouseX::AttributeHelpers::Number; use Mouse; extends 'MouseX::AttributeHelpers::Base'; has '+method_constructors' => ( default => sub { return +{ set => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} = $_[1] }; }, add => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} += $_[1] }; }, sub => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} -= $_[1] }; }, mul => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} *= $_[1] }; }, div => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} /= $_[1] }; }, mod => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} %= $_[1] }; }, abs => sub { my (undef, $name) = @_; return sub { $_[0]->{$name} = abs $_[0]->{$name} }; }, }; }, ); sub helper_type { 'Num' } no Mouse; __PACKAGE__->meta->make_immutable(inline_constructor => 0); __END__