Data::Vitals::Util - Utility methods for the Perl "Vital Statistics" Library


Data-Vitals documentation Contained in the Data-Vitals distribution.

Index


Code Index:

NAME

Top

Data::Vitals::Util - Utility methods for the Perl "Vital Statistics" Library

DESCRIPTION

Top

Data::Vitals::Util defines a set of functions that are used in various places within the Data::Vitals classes.

All functions are importable using the standard Exporter mechanism

  use Data::Vitals::Util 'cm2inch';

FUNCTIONS

Top

cm2inch $cm

The cm2inch function is a specialised method for converting a centimetre measurement to inchs. It converts using the standard 2.54004 multiplier, but rounds down to the half-inch.

The algorithm used is specifically designed so that, when used as a pair with the inch2cm method, any value that cm2inch(inch2cm($x)) == $x is always true, although it may not be true of the reverse.

It takes as argument a number without any 'cm' indicator, and returns the number of inches as a similar plain number.

inch2cm $cm

The inch2cm function is a specialised method for converting an inch measurement to centimetres. It converts using the standard 2.54004 multiplier, but rounds up to the nearest centimetre.

The algorithm used is specifically designed so that, when used as a pair with the cm2inch method, any value that cm2inch(inch2cm($x)) == $x is always true, although it may not be true of the reverse.

It takes as argument a number without any 'inch' indicator, and returns the number of centimetres as a similar plain number.

SUPPORT

Top

Bugs should always be reported via the CPAN bug tracker

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Vitals

For other issues, contact the maintainer.

AUTHORS

Top

Adam Kennedy <adamk@cpan.org>

ACKNOWLEGEMENTS

Top

Thank you to Phase N (http://phase-n.com/) for permitting the open sourcing and release of this distribution.

COPYRIGHT

Top


Data-Vitals documentation Contained in the Data-Vitals distribution.
package Data::Vitals::Util;

use strict;
use Exporter ();

use vars qw{$VERSION @ISA @EXPORT_OK};
BEGIN {
	$VERSION   = '0.05';
	@ISA       = 'Exporter';
	@EXPORT_OK = qw{cm2inch inch2cm};
}





# A pair of cm <-> inch conversion functions.
# These are specialised DWIM converters for body measurements.
# A key requirement for the integrity of the data is that the conversion
# path inch->cm->inch is always guarenteed to be the same value.
# The same is NOT true for cm->inch->cm, but since we always store and
# calculate in cm this should not be a problem.

sub cm2inch {
	my $cm = 0 + shift;

	# We round down slightly, but it should be less than half
	# an inch and so not a big issue from a fitting perspective.
	my $inch = int($cm / 2.54004);

	# Support half-inches
	my $part = ($cm / 2.54004) - $inch;
	$inch += 0.5 if $part >= 0.5;

	$inch;
}

sub inch2cm {
	my $inch = 0 + shift;

	# We round up slightly, but it should be less than a cm
	# and so not a big issue from a fitting perspective.
	my $cm = $inch * 2.54004;
	if ( $cm - int($cm) ) {
		$cm = int($cm) + 1;
	}

	$cm;
}

1;