lib/extenso_pt.rb in extenso_pt-0.4.1 vs lib/extenso_pt.rb in extenso_pt-0.4.2

- old
+ new

@@ -104,28 +104,30 @@ # @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, Array<String>] extenso se o objecto for (String, Float, Integer) ou Array dos extensos se o objecto for (Array, Range, Hash) + # @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) 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" - if (self.respond_to?:to_a) + if (self.kind_of?Hash) + self.map{|k,v|[k,v.extenso(lc:(@@lc),msingular:@@ms,fsingular:@@cs,mplural:@@mp,fplural:@@cp)]}.to_h + elsif (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 Hash; include ExtensoPt;def to_a;self.values;end;end +class Hash; include ExtensoPt;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