| Class-Meta documentation | Contained in the Class-Meta distribution. |
Class::Meta::Types::Numeric - Numeric data types
package MyApp::Thingy;
use strict;
use Class::Meta;
use Class::Meta::Types::Numeric;
# OR...
# use Class::Meta::Types::Numeric 'affordance';
# OR...
# use Class::Meta::Types::Numeric 'semi-affordance';
BEGIN {
# Create a Class::Meta object for this class.
my $cm = Class::Meta->new( key => 'thingy' );
# Add an integer attribute.
$cm->add_attribute( name => 'age',
type => 'integer' );
$cm->build;
}
This module provides numeric data types for use with Class::Meta attributes.
Simply load it, then pass the name of one of its types to the
add_attribute() method of a Class::Meta object to create attributes of the
numeric data type. See Class::Meta::Type for more
information on using and creating data types.
The validation checks for Class::Meta::Types::Numeric are provided by the Data::Types module. Consult its documentation to find out what it considers to be a number and what's not.
The data types created by Class::Meta::Types::Numeric are:
A whole number. That is, a positive integer.
An integer number.
A decimal number.
A real number.
A floating point number.
This module is stored in an open GitHub repository. Feel free to fork and contribute!
Please file bug reports via GitHub Issues or by sending mail to bug-Class-Meta.cpan.org.
David E. Wheeler <david@justatheory.com>
Other classes of interest within the Class::Meta distribution include:
This class contains most of the documentation you need to get started with Class::Meta.
This class manages the creation of data types.
This class manages Class::Meta class attributes, all of which are based on data types.
Other data type modules:
Copyright (c) 2002-2011, David E. Wheeler. Some Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Class-Meta documentation | Contained in the Class-Meta distribution. |
package Class::Meta::Types::Numeric;
use strict; use Class::Meta::Type; use Data::Types (); our $VERSION = '0.65'; # This code ref builds value checkers. my $mk_chk = sub { my ($code, $type) = @_; return [ sub { return unless defined $_[0]; $code->($_[0]) or $_[2]->class->handle_error("Value '$_[0]' is not a valid " . "$type"); } ]; }; ############################################################################## sub import { my ($pkg, $builder) = @_; $builder ||= 'default'; return if eval { Class::Meta::Type->new('whole') }; Class::Meta::Type->add( key => "whole", name => "Whole Number", desc => "Whole number", builder => $builder, check => $mk_chk->(\&Data::Types::is_whole, 'whole number'), ); Class::Meta::Type->add( key => "integer", name => "Integer", desc => "Integer", alias => 'int', builder => $builder, check => $mk_chk->(\&Data::Types::is_int, 'integer'), ); Class::Meta::Type->add( key => "decimal", name => "Decimal Number", desc => "Decimal number", alias => 'dec', builder => $builder, check => $mk_chk->(\&Data::Types::is_decimal, 'decimal number'), ); Class::Meta::Type->add( key => "real", name => "Real Number", desc => "Real number", builder => $builder, check => $mk_chk->(\&Data::Types::is_real, 'real number'), ); Class::Meta::Type->add( key => "float", name => "Floating Point Number", desc => "Floating point number", builder => $builder, check => $mk_chk->(\&Data::Types::is_float, 'floating point number'), ); } 1; __END__