File: num2words

package info (click to toggle)
libtext-rewriterules-perl 0.25-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 192 kB
  • sloc: perl: 589; makefile: 2
file content (61 lines) | stat: -rw-r--r-- 1,647 bytes parent folder | download | duplicates (4)
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