Math-Calc-Units

 view release on metacpan or  search on metacpan

Units/Convert/Base.pm  view on Meta::CPAN

    return log($x) if $x;
    return log(1e-50);
}

# pref_score : unitName -> score
#
# Maps a unit name (eg week) to a score. Higher scores are more likely
# to be chosen.
sub pref_score {
    my ($self, $unitName) = @_;
    my $prefs = $self->get_prefs();
    my $specific = $prefs->{$unitName};
    return defined($specific) ? $specific : $prefs->{default};
}

# get_prefs : void -> { unit name => score }
#
# Return a map of unit names to their score, higher scores meaning
# they're more likely to be chosen.
sub get_prefs {
    return { default => 0.1 };
}

sub get_ranges {
    return { default => [ 1, undef ] };
}

# render_unit : unit name x power -> descriptive string
#
# Return a rendering of the given unit name and a power to raise the

Units/Convert/Byte.pm  view on Meta::CPAN


sub major_variants {
    my ($self) = @_;
    return $self->variants('byte');
}

sub get_ranges {
    return \%ranges;
}

sub get_prefs {
    return \%pref;
}

sub unit_map {
    my ($self) = @_;
    if (keys %total_unit_map == 0) {
	%total_unit_map = (%{$self->SUPER::unit_map()}, %units);
    }
    return \%total_unit_map;
}

Units/Convert/Combo.pm  view on Meta::CPAN

	}
    }

    return;
}

sub get_ranges {
    return \%ranges;
}

sub get_prefs {
    return \%pref;
}

1;

Units/Convert/Date.pm  view on Meta::CPAN

    if (keys %total_unit_map == 0) {
	%total_unit_map = (%{$self->SUPER::unit_map()}, %units);
    }
    return \%total_unit_map;
}

sub get_ranges {
    return \%ranges;
}

sub get_prefs {
    return \%pref;
}

use vars qw(@MonthNames);
BEGIN { @MonthNames = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); }
sub construct {
    my ($self, $constructor, $args) = @_;

    # Allow timestamp(1000347142) or timestamp() for the current time
    if ($constructor eq 'timestamp') {

Units/Convert/Distance.pm  view on Meta::CPAN

    my ($self) = @_;
    return $self->variants('meter');
}

sub get_ranges {
    return \%ranges;
}

# Return the relative preference of different units. Meters are
# preferred over miles, miles over feet.
sub get_prefs {
    return \%distance_pref;
}

sub singular {
    my ($self, $unit) = @_;
    $unit = $self->SUPER::singular($unit);
    return $aliases{$unit} || $unit;
}

sub unit_map {

Units/Convert/Time.pm  view on Meta::CPAN

    my ($val, $unit) = @$v;
    my $base = lc(($self->demetric($unit))[1]);
    my $pref = $pref{$base} || $pref{default};
    return $pref * $self->prefix_pref(substr($unit, 0, -length($base)));
}

sub get_ranges {
    return \%ranges;
}

sub get_prefs {
    return \%pref;
}

my @BREAKDOWN = qw(year week day hour minute sec ms us ns ps);
sub render {
    my ($self, $val, $name, $power, $options) = @_;
    my $full_name = $name;
    if ($options->{abbreviate}) {
        if ($name =~ /(\w+)sec/) {
            my $prefix = $1;



( run in 1.103 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )