module ToCurrency
Constants
- DENOM
- OTHERS
- TENS
- TO_19
Public Instance Methods
to_currency()
click to toggle source
# File lib/currency_toword.rb, line 14 def to_currency val = self.to_i convert_global(val) end
to_dollars()
click to toggle source
# File lib/currency_toword.rb, line 19 def to_dollars sign = '$' delimiter = ',' value = self.to_i value = value.to_s.reverse.gsub(%r{([0-9]{3}(?=([0-9])))}, "\\1#{delimiter}").reverse "%s%s" % [sign, value] end
to_indian_currency()
click to toggle source
# File lib/currency_toword.rb, line 9 def to_indian_currency val = self.to_i convert_indian_currency(val) end
to_rupees()
click to toggle source
# File lib/currency_toword.rb, line 27 def to_rupees sign = "\u20B9" delimiter = ',' value = self.to_i format = "%u %n" value = value.to_s.reverse.gsub(%r{([0-9]{3}(?=([0-9])))}, "\\1#{delimiter}").reverse "%s%s" % [sign, value] end
Private Instance Methods
convert_global(val)
click to toggle source
# File lib/currency_toword.rb, line 65 def convert_global(val) return convert_tens(val) if val < 100 return convert_hundreds(val) if val < 1000 OTHERS.each_with_index do |value, index| position = index - 1; dval = 1000 ** index if dval > val mod = 1000 ** position l = val / mod; r = val - (l * mod); retVal = convert_hundreds(l) + ' ' + OTHERS[position-1]; retVal = retVal + ', ' + convert_indian_currency(r) if (r > 0) return retVal; end end end
convert_hundreds(val)
click to toggle source
# File lib/currency_toword.rb, line 94 def convert_hundreds(val) d = ''; rem = val / 100; mod = val % 100; if rem > 0 d = TO_19[rem] + ' hundred '; d = d + '' if mod < 0 end d = d + convert_tens(mod) if mod > 0 return d; end
convert_indian_currency(val)
click to toggle source
# File lib/currency_toword.rb, line 38 def convert_indian_currency(val) return 'zero' if val == 0 words = ''; if (val / DENOM[3]) > 0 words += convert_indian_currency(val / DENOM[3]) + ' Crore '; val %= DENOM[3]; end if (val / DENOM[2]) > 0 words += convert_indian_currency(val / DENOM[2]) + ' Lakh '; val %= DENOM[2]; end if (val / DENOM[1]) > 0 words += convert_indian_currency(val / DENOM[1]) + ' Thousand '; val %= DENOM[1]; end if (val / DENOM[0]) > 0 words += convert_indian_currency(val / DENOM[0]) + ' Hundred '; val %= DENOM[0]; end if val > 0 words += 'and ' unless words.empty? if val < 20 words += TO_19[val]; else words += TENS[(val / 10)-2]; words += '-' + TO_19[(val % 10)] if ((val % 10) > 0) end end words end
convert_tens(val)
click to toggle source
# File lib/currency_toword.rb, line 82 def convert_tens(val) return TO_19[val] if (val < 20) TENS.each_with_index do |value, index| dcap = TENS[index]; dval = 20 + 10 * index; if dval + 10 > val return dcap + '-' + TO_19[val % 10] if (val % 10) != 0 return dcap; end end end