class RomanNumeralGenerator

Constants

VALUES

Public Instance Methods

generate(number) click to toggle source
# File lib/roman_numeral_generator.rb, line 18
def generate(number)
  check_range(number)
  arabic_to_roman(number)
end
is_out_of_range?(number) click to toggle source
# File lib/roman_numeral_generator.rb, line 23
def is_out_of_range?(number)
  number < 1 || number > 3999
end

Private Instance Methods

arabic_to_roman(number) click to toggle source
# File lib/roman_numeral_generator.rb, line 29
def arabic_to_roman(number)
  [].tap do |answer|
    VALUES.each do |numeral, roman|
      while number >= numeral
        answer << roman
        number -= numeral
      end
    end
  end.join
end
check_range(number) click to toggle source
# File lib/roman_numeral_generator.rb, line 40
def check_range(number)
  raise RangeError.new("Use only number in [1..3999] range") if is_out_of_range?(number)
end