Module: Paisa

Defined in:
lib/paisa.rb,
lib/paisa/version.rb

Constant Summary collapse

SYMBOL =
''.freeze
ONES =
{
  1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five',
  6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine', 0 => nil
}.freeze
TENS =
{
  1 => {
    1 => 'eleven', 2 => 'twelve', 3 => 'thirteen', 4 => 'fourteen', 5 => 'fifteen',
    6 => 'sixteen', 7 => 'seventeen', 8 => 'eighteen', 9 => 'nineteen', 0 => 'ten'
  },
  2 => tens_hash('twenty'),
  3 => tens_hash('thirty'),
  4 => tens_hash('forty'),
  5 => tens_hash('fifty'),
  6 => tens_hash('sixty'),
  7 => tens_hash('seventy'),
  8 => tens_hash('eighty'),
  9 => tens_hash('ninety'),
  0 => ONES
}.freeze
VERSION =
'0.3.0'.freeze

Class Method Summary collapse

Class Method Details

.format(paise, precision: 2) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/paisa.rb', line 36

def self.format(paise, precision: 2)
  rupee_parts, paise_part = parse(paise)
  [
    rupee_parts.join(',').rjust(1, '0'),
    paise_part.rjust(2, '0').slice(0, precision)
  ].reject(&:empty?).join('.')
end

.format_with_sym(paise, precision: 2) ⇒ Object



44
45
46
# File 'lib/paisa.rb', line 44

def self.format_with_sym(paise, precision: 2)
  [SYMBOL, format(paise, precision: precision)].join
end

.words(paise) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/paisa.rb', line 48

def self.words(paise)
  rupee_parts, paise_part = parse(paise)
  rupee_text_parts = rupee_parts.reverse.each_with_object([]) do |section, memo|
    label = ['', ' thousand', ' lakh', ' crore'][memo.size]
    memo << if section.to_i.zero?
              nil
            else
              [to_words(section), label].join
            end
  end
  text = []
  text << [rupee_text_parts.to_a.compact.reverse.join(', '), 'rupees'].join(' ') unless rupee_text_parts.empty?
  text << [to_words(paise_part), 'paise'].join(' ') unless paise_part.to_i.zero?
  text.join(', ')
end