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 0.787 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )