/usr/local/CPAN/Data-Quantity/Data/Quantity/Size/Inches.pm


### Change History
  # 1999-02-21 Created. -Simon

package Data::Quantity::Size::Inches;

require 5;
use strict;
use Carp;

use vars qw( $VERSION );
$VERSION = 0.001;

use Data::Quantity::Number::Number '-isasubclass';

# undef = Data::Quantity::Size::Inches->scale();
sub scale {
  return 'Inches';
}

# ($f, $i) = $inch_q->get_feet_and_inches;
sub get_feet_and_inches {
  my $inch_q = shift;
  my $count = $inch_q->value;
  my @values = ( int($count / 12), ($count % 12) );
  return wantarray ? @values : \@values;
}

# $inch_q->set_feet_and_inches($f, $i);
sub set_feet_and_inches {
  my $inch_q = shift;
  my ($f, $i) = @_;
  $inch_q->value( ($f * 12) + $i );
}

# $string = $quantity->readable($style)
sub readable {
  my $inch_q = shift;
  my $style = shift || 'short';
  
  if ( $style eq 'short' ) {
    my ($f, $i) = $inch_q->get_feet_and_inches;
    return ( $f ? $f."'" : '' ) . ( $i ? $i.'"' : '' )
  } elsif ( $style eq 'long' ) {
    my ($f, $i) = $inch_q->get_feet_and_inches;
    return ( $f ? $f." feet" : '' ) . 
	   ( $f && $i ? ' and ' : '' ) . 
 	   ( $i ? $i.' inches' : '' )
  } else {
    carp "Unknown format $style";    
  }
}

1;