bump version to 1.19
[gitmo/Moose.git] / lib / Moose / Meta / Attribute / Native / Trait / Number.pm
1 package Moose::Meta::Attribute::Native::Trait::Number;
2 use Moose::Role;
3
4 our $VERSION   = '1.19';
5 $VERSION = eval $VERSION;
6 our $AUTHORITY = 'cpan:STEVAN';
7
8 use Moose::Meta::Method::Accessor::Native::Number::abs;
9 use Moose::Meta::Method::Accessor::Native::Number::add;
10 use Moose::Meta::Method::Accessor::Native::Number::div;
11 use Moose::Meta::Method::Accessor::Native::Number::mod;
12 use Moose::Meta::Method::Accessor::Native::Number::mul;
13 use Moose::Meta::Method::Accessor::Native::Number::set;
14 use Moose::Meta::Method::Accessor::Native::Number::sub;
15
16 with 'Moose::Meta::Attribute::Native::Trait';
17
18 sub _helper_type { 'Num' }
19
20 no Moose::Role;
21
22 1;
23
24 =pod
25
26 =head1 NAME
27
28 Moose::Meta::Attribute::Native::Trait::Number - Helper trait for Num attributes
29
30 =head1 SYNOPSIS
31
32   package Real;
33   use Moose;
34
35   has 'integer' => (
36       traits  => ['Number'],
37       is      => 'ro',
38       isa     => 'Num',
39       default => 5,
40       handles => {
41           set => 'set',
42           add => 'add',
43           sub => 'sub',
44           mul => 'mul',
45           div => 'div',
46           mod => 'mod',
47           abs => 'abs',
48       },
49   );
50
51   my $real = Real->new();
52   $real->add(5);    # same as $real->integer($real->integer + 5);
53   $real->sub(2);    # same as $real->integer($real->integer - 2);
54
55 =head1 DESCRIPTION
56
57 This trait provides native delegation methods for numbers. All of the
58 operations correspond to arithmetic operations like addition or
59 multiplication.
60
61 =head1 DEFAULT TYPE
62
63 If you don't provide an C<isa> value for your attribute, it will default to
64 C<Num>.
65
66 =head1 PROVIDED METHODS
67
68 All of these methods modify the attribute's value in place. All methods return
69 the new value.
70
71 =over 4
72
73 =item * B<add($value)>
74
75 Adds the current value of the attribute to C<$value>.
76
77 =item * B<sub($value)>
78
79 Subtracts C<$value> from the current value of the attribute.
80
81 =item * B<mul($value)>
82
83 Multiplies the current value of the attribute by C<$value>.
84
85 =item * B<div($value)>
86
87 Divides the current value of the attribute by C<$value>.
88
89 =item * B<mod($value)>
90
91 Returns the current value of the attribute modulo C<$value>.
92
93 =item * B<abs>
94
95 Sets the current value of the attribute to its absolute value.
96
97 =back
98
99 =head1 BUGS
100
101 See L<Moose/BUGS> for details on reporting bugs.
102
103 =head1 AUTHOR
104
105 Robert Boone
106
107 =head1 COPYRIGHT AND LICENSE
108
109 Copyright 2007-2009 by Infinity Interactive, Inc.
110
111 L<http://www.iinteractive.com>
112
113 This library is free software; you can redistribute it and/or modify
114 it under the same terms as Perl itself.
115
116 =cut