NAME

HTML::Fraction - Encode fractions as HTML entities

SYNOPSIS

my $fraction = HTML::Fraction->new;
print $fraction->tweak($html);

DESCRIPTION

The HTML::Fraction encodes fractions as HTML entities. Some very common fractions have HTML entities (eg 1/2 is ½). Additionally, common vulgar fractions have Unicode characters (eg 1/5 is ⅕). This module takes a string and encodes fractions as entities: this means that it will look pretty in the browser.

Fractions that are supported:

1/4, 1/2, 3/4, 0/3, 1/3, 2/3, 1/5, 2/5, 3/5,
4/5, 1/6, 5/6, 1/7, 1/8, 3/8, 5/8, 7/8, 1/9, 1/10

Fractions may be in the string in the form numerator slash denominator (1/5) or in decimal form (0.5). Numbers must be equal to the fraction to two decimal places. This module supports converting whole and fractional decimal numbers (e.g. 2.25.)

For sanity the decimal 0 will not be turned into the unicode for 0/3

CONSTRUCTOR

new

The constructor takes no arguments:

my $fraction = HTML::Fraction->new;

METHODS

tweak

Encode the fractions in the HTML as HTML entities:

print $fraction->tweak($html);

tweak_frac

Encode the fractions that are in the form "1/3" or "5/6" in the HTML as HTML entities, but not decimal fractions of the form "0.5".

tweak_dec

Encode the fractions that are in the form "0.5" or "0.5" in the HTML as HTML entities, but not fractions of the form "1/2" or "1/3".

AUTHOR

Leon Brocard, <acme@astray.com>. Mark Fowler <mark@twoshortplanks> added some code, and probably some bugs.

COPYRIGHT

Copyright (C) 2005, 2012 Leon Brocard

This module is free software; you can redistribute it or modify it under the same terms as Perl itself.

BUGS

We don't perform normalisation of the denominator and numerator so "4/6" is not converted like 2/3 is. This is intentional.

2.25 doesn't render to the same thing as 2 1/2 (the latter has a space between the digit 2 and the fraction.)

1/7 doesn't represent as a reoccuring pattern of digits in decimal therefore we don't check that digits after 0.14285714 are correct, and assume that they are.