module NumberToKanji::SmallNumberToKanji
Constants
- RANGE_END
Public Class Methods
call(number)
click to toggle source
# 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
Private Class Methods
_hundreds_to_kanji(hundreds)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 32 def _hundreds_to_kanji(hundreds) return '' if hundreds.zero? return '百' if hundreds == 1 "#{::NumberToKanji::KANJI_MAP[hundreds]}百" end
_ones_to_kanji(ones)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 46 def _ones_to_kanji(ones) return '' if ones.zero? ::NumberToKanji::KANJI_MAP[ones] end
_tens_to_kanji(tens)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 39 def _tens_to_kanji(tens) return '' if tens.zero? return '十' if tens == 1 "#{::NumberToKanji::KANJI_MAP[tens]}十" end
_thousands_to_kanji(thousands)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 25 def _thousands_to_kanji(thousands) return '' if thousands.zero? return '千' if thousands == 1 "#{::NumberToKanji::KANJI_MAP[thousands]}千" end
Private Instance Methods
_hundreds_to_kanji(hundreds)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 32 def _hundreds_to_kanji(hundreds) return '' if hundreds.zero? return '百' if hundreds == 1 "#{::NumberToKanji::KANJI_MAP[hundreds]}百" end
_ones_to_kanji(ones)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 46 def _ones_to_kanji(ones) return '' if ones.zero? ::NumberToKanji::KANJI_MAP[ones] end
_tens_to_kanji(tens)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 39 def _tens_to_kanji(tens) return '' if tens.zero? return '十' if tens == 1 "#{::NumberToKanji::KANJI_MAP[tens]}十" end
_thousands_to_kanji(thousands)
click to toggle source
# File lib/number_to_kanji/small_number_to_kanji.rb, line 25 def _thousands_to_kanji(thousands) return '' if thousands.zero? return '千' if thousands == 1 "#{::NumberToKanji::KANJI_MAP[thousands]}千" end
call(number)
click to toggle source
# 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