1
package Class::Meta::Types::Numeric;
3
# $Id: Numeric.pm 2405 2005-12-17 03:41:09Z theory $
7
Class::Meta::Types::Numeric - Numeric data types
11
package MyApp::Thingy;
14
use Class::Meta::Types::Numeric;
16
# use Class::Meta::Types::Numeric 'affordance';
18
# use Class::Meta::Types::Numeric 'semi-affordance';
21
# Create a Class::Meta object for this class.
22
my $cm = Class::Meta->new( key => 'thingy' );
24
# Add an integer attribute.
25
$cm->add_attribute( name => 'age',
32
This module provides numeric data types for use with Class::Meta attributes.
33
Simply load it, then pass the name of one of its types to the
34
C<add_attribute()> method of a Class::Meta object to create attributes of the
35
numeric data type. See L<Class::Meta::Type|Class::Meta::Type> for more
36
information on using and creating data types.
38
The validation checks for Class::Meta::Types::Numeric are provided by the
39
Data::Types module. Consult its documentation to find out what it considers to
40
be a number and what's not.
42
The data types created by Class::Meta::Types::Numeric are:
48
A whole number. That is, a positive integer.
68
A floating point number.
75
use Class::Meta::Type;
77
our $VERSION = "0.52";
79
# This code ref builds value checkers.
81
my ($code, $type) = @_;
84
return unless defined $_[0];
86
or $_[2]->class->handle_error("Value '$_[0]' is not a valid "
92
##############################################################################
94
my ($pkg, $builder) = @_;
95
$builder ||= 'default';
96
return if eval "Class::Meta::Type->new('whole')";
98
Class::Meta::Type->add(
100
name => "Whole Number",
101
desc => "Whole number",
103
check => $mk_chk->(\&Data::Types::is_whole, 'whole number'),
106
Class::Meta::Type->add(
112
check => $mk_chk->(\&Data::Types::is_int, 'integer'),
115
Class::Meta::Type->add(
117
name => "Decimal Number",
118
desc => "Decimal number",
121
check => $mk_chk->(\&Data::Types::is_decimal, 'decimal number'),
124
Class::Meta::Type->add(
126
name => "Real Number",
127
desc => "Real number",
129
check => $mk_chk->(\&Data::Types::is_real, 'real number'),
132
Class::Meta::Type->add(
134
name => "Floating Point Number",
135
desc => "Floating point number",
137
check => $mk_chk->(\&Data::Types::is_float, 'floating point number'),
146
Please send bug reports to <bug-class-meta@rt.cpan.org> or report them via the
147
CPAN Request Tracker at L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Class-Meta>.
151
David Wheeler <david@kineticode.com>
155
Other classes of interest within the Class::Meta distribution include:
159
=item L<Class::Meta|Class::Meta>
161
This class contains most of the documentation you need to get started with
164
=item L<Class::Meta::Type|Class::Meta::Type>
166
This class manages the creation of data types.
168
=item L<Class::Meta::Attribute|Class::Meta::Attribute>
170
This class manages Class::Meta class attributes, all of which are based on
175
Other data type modules:
179
=item L<Class::Meta::Types::Perl|Class::Meta::Types::Perl>
181
=item L<Class::Meta::Types::String|Class::Meta::Types::String>
183
=item L<Class::Meta::Types::Boolean|Class::Meta::Types::Boolean>
187
=head1 COPYRIGHT AND LICENSE
189
Copyright (c) 2002-2005, David Wheeler. All Rights Reserved.
191
This module is free software; you can redistribute it and/or modify it under
192
the same terms as Perl itself.