Module: YaKansuji::Formatter::Gov

Defined in:
lib/ya_kansuji/formatter/gov.rb

Overview

Formatter for Japan government-style kansuji

Class Method Summary collapse

Class Method Details

.call(num, _options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ya_kansuji/formatter/gov.rb', line 9

def call(num, _options = {})
  int, frac = Formatter.split_fraction(num)
  frac.empty? ? frac_part = nil : frac_part = ".#{frac.join}"
  return frac_part ? "0#{frac_part}" : '0' if int.zero?

  parts = []
  chunks = Formatter.split_by_unit4(int)
  (chunks.size - 1).downto(0) do |idx4|
    i4 = chunks[idx4]
    next if i4.zero? && !(idx4.zero? && frac_part)

    unit4 = Formatter::UNIT4_UNITS[idx4]
    if i4 == 1
      parts << "1#{unit4}"
      next
    end
    parts << (i4.to_s + unit4)
  end
  ret = parts.join(', ')
  ret << frac_part if frac_part
  ret
end