Module: NumberToKanji::SmallNumberToKanji

Defined in:
lib/number_to_kanji/small_number_to_kanji.rb

Constant Summary collapse

RANGE_END =
10_000

Class Method Summary collapse

Class Method Details

.call(number) ⇒ Object

Raises:

  • (::TypeError)


11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/number_to_kanji/small_number_to_kanji.rb', line 11

def call(number)
  raise(::TypeError) unless number.is_a?(::Integer)
  raise(::NumberToKanji::Exceptions::NegativeNumberError) if number.negative?

  raise(::RangeError, 'Numbers equal to or larger than 10^4 is not supported.') if number >= ::NumberToKanji::SmallNumberToKanji::RANGE_END

  return ::NumberToKanji::KANJI_MAP[0] if number.zero?

  zero_padded_number = format('%04<number>d', number: number)
  thousands, hundreds, tens, ones = zero_padded_number.to_s.chars.map { |i| Integer(i, 10) }

  "#{_thousands_to_kanji(thousands)}#{_hundreds_to_kanji(hundreds)}#{_tens_to_kanji(tens)}#{_ones_to_kanji(ones)}"
end