361fb81d95804f30547849b60d1efe624b9fce52
[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.15';
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 provides a simple numeric attribute, which supports most of the
58 basic math operations.
59
60 =head1 PROVIDED METHODS
61
62 It is important to note that all those methods do in place modification of the
63 value stored in the attribute. These methods are implemented within this
64 package.
65
66 =over 4
67
68 =item * B<add($value)>
69
70 Adds the current value of the attribute to C<$value>. Returns the new value.
71
72 =item * B<sub($value)>
73
74 Subtracts C<$value> from the current value of the attribute. Returns the new
75 value.
76
77 =item * B<mul($value)>
78
79 Multiplies the current value of the attribute by C<$value>. Returns the new
80 value.
81
82 =item * B<div($value)>
83
84 Divides the current value of the attribute by C<$value>. Returns the new
85 value.
86
87 =item * B<mod($value)>
88
89 Returns the current value of the attribute modulo C<$value>. Returns the new
90 value.
91
92 =item * B<abs>
93
94 Sets the current value of the attribute to its absolute value. Returns the new
95 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