lib/extenso_pt.rb in extenso_pt-0.3.8 vs lib/extenso_pt.rb in extenso_pt-0.3.9

- old
+ new

@@ -96,30 +96,37 @@ else erecursivo(pos+1,e999(@@ai[pos],pos)+A1e24[@@lc][@@ai[pos]>0?@@ai[pos]>1?8+pos:pos:0]+f3(pos>0?@@ai[pos-1]:0)+ext) end end - # Converte um objeto [String, Float, Integer] no seu extenso em portugûes de portugal ou brasil. + # Converte um objeto no seu extenso em portugûes de portugal ou brasil. # # @param [Hash] moeda as opcoes para parametrizar a moeda/fração # @option moeda [Symbol] :lc locale do extenso - portugûes de portugal (:pt) ou brasil (:br) # @option moeda [String] :msingular Moeda no singular - por defeito pode ser obtida do <b>:mplural menos "S"</b> (se terminar em "S") # @option moeda [String] :fsingular Fração no singular - por defeito pode ser obtida do <b>:fplural menos "S"</b> (se terminar em "S") # @option moeda [String] :mplural Moeda no plural - por defeito pode ser obtida do <b>:msingular+"S"</b> # @option moeda [String] :fplural Fração no plural - por defeito pode ser obtida do <b>:fsingular+"S"</b> - # @return [String] o extenso do objeto + # @return [String, Array<String>] extenso se o objecto for (String, Float, Integer) ou Array dos extensos se o objecto for (Array, Range, Hash) def extenso(moeda={lc:(:pt),msingular:"EURO",fsingular:"CÊNTIMO"}) moeda={lc:(:br),msingular:"REAL",mplural:"REAIS",fsingular:"CENTAVO"} if (moeda[:lc]==:br&&!moeda[:mplural]&&!moeda[:fplural]) @@lc=LC.include?(moeda[:lc])?moeda[:lc]:(:pt) @@ms=moeda[:msingular]?moeda[:msingular]:moeda[:mplural].to_s[-1]=="S"?moeda[:mplural][0..-2]:"EURO" @@cs=moeda[:fsingular]?moeda[:fsingular]:moeda[:fplural].to_s[-1]=="S"?moeda[:fplural][0..-2]:"CÊNTIMO" @@mp=moeda[:mplural]?moeda[:mplural]:@@ms+"S" @@cp=moeda[:fplural]?moeda[:fplural]:@@cs+"S" - n=self.to_d.to_s("F") - @@ai=n[/^\d+/].to_s.reverse.scan(/\d{1,3}/).map{|i|i.reverse.to_i} - @@ai.count>8?"":ExtensoPt.erecursivo+ExtensoPt.fracao((n[/\.\d*/].to_f*100).round) + if (self.respond_to?:to_a) + self.to_a.map{|a|a.extenso(lc:(@@lc),msingular:@@ms,fsingular:@@cs,mplural:@@mp,fplural:@@cp)} + else + n=self.to_d.to_s('F') + @@ai=n[/^\d+/].to_s.reverse.scan(/\d{1,3}/).map{|i|i.reverse.to_i} + @@ai.count>8?"":ExtensoPt.erecursivo+ExtensoPt.fracao((n[/\.\d*/].to_f*100).round) + end end end -class String; include ExtensoPt;end +class Hash; include ExtensoPt;def to_a;self.values;end;end +class Array; include ExtensoPt;end +class Range; include ExtensoPt;end class Float; include ExtensoPt;end class Integer;include ExtensoPt;end +class String; include ExtensoPt;end