extenso_pt 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/extenso_pt/version.rb +1 -1
- data/lib/extenso_pt.rb +22 -15
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a8e97d447bc5d00e4399120531cb4e8307559084dfc8d42ed36af0bc4d2e645a
|
|
4
|
+
data.tar.gz: c3190c47b494f8150e7932a7026bbcf959f41a2e6fb3de8eddad47b2a890aa9a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0910a98969f0ab858925dcab97c9411c61d060fc756f61bb494edd889b67f432ba6cbdc123fb754291f89f46b630c81057e3224e293cea7acde47cfb537366fb'
|
|
7
|
+
data.tar.gz: 2fb1cdd88909bd35a61de3572ce59b262251a397b6b7a794f6117d11b45a370e6e2f4952475e75669ab37fe7743f91fd9fb313c16858e07ef2a8404ba62076be
|
data/Gemfile.lock
CHANGED
data/lib/extenso_pt/version.rb
CHANGED
data/lib/extenso_pt.rb
CHANGED
|
@@ -15,10 +15,10 @@ module ExtensoPt
|
|
|
15
15
|
A1e24={pt: ["","MIL"," MILHÃO"," MIL MILHÃO"," BILIÃO"," MIL BILIÃO"," TRILIÃO"," MIL TRILIÃO",""," MIL"," MILHÕES"," MIL MILHÕES"," BILIÕES"," MIL BILIÕES"," TRILIÕES"," MIL TRILIÕES"],
|
|
16
16
|
br: ["","MIL"," MILHÃO"," BILHÃO"," TRILHÃO"," QUADRILHÃO"," QUINTILHÃO"," SEXTILHÃO",""," MIL"," MILHÕES"," BILHÕES"," TRILHÕES"," QUADRILHÕES"," QUINTILHÕES"," SEXTILHÕES"]}
|
|
17
17
|
|
|
18
|
-
# Produz a moeda e o extenso da parte
|
|
18
|
+
# Produz a moeda e o extenso da parte fracionária do valor monetário em portugûes de portugal ou brasil.
|
|
19
19
|
#
|
|
20
|
-
# @param [Integer] fracao parte
|
|
21
|
-
# @return [String] a moeda e o extenso da parte
|
|
20
|
+
# @param [Integer] fracao parte fracionária do valor monetário ex: 100022.12 = 12
|
|
21
|
+
# @return [String] a moeda e o extenso da parte fracionária do valor monetário
|
|
22
22
|
def self.efracao(fracao)
|
|
23
23
|
inteira=@@ai.find{|v|v>0}.to_i+@@ai[1..-1].to_a.find{|v|v>0}.to_i
|
|
24
24
|
total=inteira+fracao
|
|
@@ -28,11 +28,11 @@ module ExtensoPt
|
|
|
28
28
|
(fracao>0?fracao>1?" "+@@cp:" "+@@cs:"")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
# Produz o extenso dum
|
|
31
|
+
# Produz o extenso dum grupo de 3 digitos em portugûes de portugal ou brasil.
|
|
32
32
|
#
|
|
33
|
-
# @param [Integer] mil o valor a converter
|
|
34
|
-
# @param [Integer] pos posição
|
|
35
|
-
# @return [String] o extenso de mil
|
|
33
|
+
# @param [Integer] mil o valor dum grupo de 3 digitos a converter
|
|
34
|
+
# @param [Integer] pos posição deste grupo de 3 digitos no valor monetário em tratamento
|
|
35
|
+
# @return [String] o extenso de <mil>
|
|
36
36
|
def self.e999(mil,pos=0)
|
|
37
37
|
cem=mil%100
|
|
38
38
|
A1000[@@lc][(mil>100?1:0)+mil/100]+(mil>100&&mil%100>0?" E ":"")+
|
|
@@ -40,18 +40,18 @@ module ExtensoPt
|
|
|
40
40
|
A0020[@@lc][pos==1&&mil==1?0:cem<20?cem:cem%10]
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
# Produz
|
|
43
|
+
# Produz o extenso da parte inteira do valor monetário em portugûes de portugal ou brasil.
|
|
44
44
|
#
|
|
45
|
-
# @param [Integer] pos posição actual do valor monetário em tratamento
|
|
45
|
+
# @param [Integer] pos posição actual nos grupos de 3 digitos do valor monetário em tratamento
|
|
46
46
|
# @param [String] ext extenso actual em tratamento
|
|
47
|
-
# @return [String] o extenso da parte inteira
|
|
48
|
-
def self.
|
|
47
|
+
# @return [String] o extenso da parte inteira do valor monetário
|
|
48
|
+
def self.einteira(pos=0,ext="")
|
|
49
49
|
if (pos>=@@ai.count)
|
|
50
50
|
ext
|
|
51
51
|
else
|
|
52
52
|
ctl=pos>0?@@ai[pos-1]:0
|
|
53
53
|
ext=e999(@@ai[pos],pos)+A1e24[@@lc][@@ai[pos]>0?@@ai[pos]>1?8+pos:pos:0]+(ctl>100?" ":ctl>0?" E ":"")+ext
|
|
54
|
-
|
|
54
|
+
einteira(pos+1,ext)
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
@@ -65,6 +65,7 @@ module ExtensoPt
|
|
|
65
65
|
# @option moeda [String] :fplural Fração no plural - pode ser inferido do <b>:fsingular+"S"</b>
|
|
66
66
|
# @return [String, Array<String>, Hash<String>] extenso se o objecto for (String, Float, Integer), Array dos extensos se o objecto for (Array, Range) ou Hash dos extensos se o objecto for (Hash)
|
|
67
67
|
def extenso(moeda={lc:(:pt),msingular:"EURO",fsingular:"CÊNTIMO"})
|
|
68
|
+
# parametrização da moeda
|
|
68
69
|
moeda={lc:(:br),msingular:"REAL",mplural:"REAIS",fsingular:"CENTAVO"} if (moeda[:lc]==:br&&!moeda[:mplural]&&!moeda[:fplural])
|
|
69
70
|
@@lc=LC.include?(moeda[:lc])?moeda[:lc]:(:pt)
|
|
70
71
|
@@ms=moeda[:msingular]?moeda[:msingular]:moeda[:mplural].to_s[-1]=="S"?moeda[:mplural][0..-2]:"EURO"
|
|
@@ -72,17 +73,23 @@ module ExtensoPt
|
|
|
72
73
|
@@mp=moeda[:mplural]?moeda[:mplural]:@@ms+"S"
|
|
73
74
|
@@cp=moeda[:fplural]?moeda[:fplural]:@@cs+"S"
|
|
74
75
|
if (self.kind_of?Hash)
|
|
75
|
-
# converte os valores do Hash nos seus extensos
|
|
76
|
+
# converte os valores do Hash nos seus extensos mantendo as chaves - devolve um Hash
|
|
76
77
|
self.map{|k,v|[k,v.extenso(lc:(@@lc),msingular:@@ms,fsingular:@@cs,mplural:@@mp,fplural:@@cp)]}.to_h
|
|
77
78
|
elsif (self.respond_to?:to_a)
|
|
78
|
-
# converte o objecto num Array e converte os valores nos seus extensos devolve um Array
|
|
79
|
+
# converte o objecto num Array e converte os valores nos seus extensos - devolve um Array
|
|
79
80
|
self.to_a.map{|a|a.extenso(lc:(@@lc),msingular:@@ms,fsingular:@@cs,mplural:@@mp,fplural:@@cp)}
|
|
80
81
|
else
|
|
81
82
|
# converter com bigdecimal/util para evitar bugs com valores superiores a 1e12
|
|
82
83
|
n=self.to_d.to_s('F')
|
|
83
84
|
# dividir parte inteira em grupos de 3 digitos ex: 123022.12 => [22, 123]
|
|
84
85
|
@@ai=n[/^\d+/].to_s.reverse.scan(/\d{1,3}/).map{|i|i.reverse.to_i}
|
|
85
|
-
@@ai.count>8
|
|
86
|
+
if (@@ai.count>8)
|
|
87
|
+
"" # MAX 1e24
|
|
88
|
+
else
|
|
89
|
+
ExtensoPt.einteira+
|
|
90
|
+
# parte fracionária é arredondada a 2 casas decimais (cêntimos)
|
|
91
|
+
ExtensoPt.efracao((n[/\.\d*/].to_f*100).round)
|
|
92
|
+
end
|
|
86
93
|
end
|
|
87
94
|
end
|
|
88
95
|
|