1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/usr/bin/perl -w -C
use Text::RewriteRules;
my %fixnum=(
0=> "zero", 1=> "um", 2=> "dois", 3=> "três", 4=> "quatro", 5=> "cinco",
6=> "seis", 7=> "sete", 8=> "oito", 9=> "nove", 10=> "dez",
11=> "onze", 12=> "doze", 13=> "treze", 14=> "catorze", 15=> "quinze",
16=> "dezasseis", 17=> "dezassete", 18=> "dezoito", 19=> "dezanove",
20=> "vinte", 30=> "trinta", 40=> "quarenta", 50=> "cinquenta",
60=> "sessenta", 70=> "setenta", 80=> "oitenta", 90=> "noventa",
100=> "cem", 200=> "duzentos", 300=> "trezentos", 400=> "quatrocentos",
500=> "quinhentos", 600=> "seiscentos", 700=> "setecentos",
800=> "oitocentos", 900=> "novecentos",
1000=> "mil", 1000000=> "um milhão",
);
while(<>){
print n2w($_),"\n";
}
RULES n2w
(\d+)[Ee](-?\d+)==>$1 vezes 10 levantado a $2
-(\d+)==>menos $1
(\d+)\s*\%==>$1 por cento
__decimaiscomp(\d+)\.=e=>join(" ",split(//,$1))
(\d+)\.(\d{1,3})\b==>$1 ponto $2
(\d+)\.(\d+)==>$1 ponto __decimaiscomp$2.
\b(\d+)\b==>$fixnum{$1}!!defined $fixnum{$1}
(\d+)(000000)\b==>$1 milhões
(\d+)(000)(\d{3})==>$1 milhão e $3!! $1 == 1
(\d+)(\d{3})(000)==>$1 milhão e $2 mil!! $1 == 1
(\d+)(\d{6})==>$1 milhão, $2!! $1 == 1
(\d+)(000)(\d{3})==>$1 milhões e $3
(\d+)(\d{3})(000)==>$1 milhões e $2 mil
(\d+)(\d{6})==>$1 milhões, $2
(\d+)(000)\b==>$1 mil
(\d+)0(\d{2})==>mil e $2!! $1 == 1
(\d+)(\d00)==>mil e $2!! $1 == 1
(\d+)(\d{3})==>mil $2!! $1 == 1
(\d+)0(\d{2})==>$1 mil e $2
(\d+)(\d00)==>$1 mil e $2
(\d+)(\d{3})==>$1 mil, $2
1(\d\d)==>cento e $1
0(\d\d)==>$1
(\d)(\d\d)==>${1}00 e $2
0(\d)==>$1
(\d)(\d)==>${1}0 e $2
0$==>zero
0==>
ENDRULES
|