Class: Kabal::Roman
Instance Method Summary collapse
Methods inherited from Language
#convert_number, #count, #dot, #error, #fractional_but_no_support_fractional?, #initialize, #join_with_spaces, #lang, #max_value, #min_value, #minus, #names, #no_supports?, #number_is_out_of_the_range?, #number_order, #number_words, #space, #supports_fractional?, #supports_natural?, #supports_negative?, #whole
Methods included from GlobalRules::NumberProperities
#fractional?, #natural?, #need_minus?, #number_is_google?, #number_is_thousands?
Methods included from GlobalRules::FractionalNumbers
#fractional_part_name, #fractional_part_order, #number_name_with_zeros, #there_zeros_before_fractional_part?, #zeros_number
Methods included from GlobalRules::NaturalNumbers
#create_number_name, #natural_number_name
Constructor Details
This class inherits a constructor from Kabal::Language
Instance Method Details
#convert(number) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/kabal/languages/roman.rb', line 5 def convert(number) if number == 0 '0' else symbols = { 0 => ['I', 'V'], 1 => ['X', 'L'], 2 => ['C', 'D'], 3 => ['M'] } reversed_digits = number.to_s.split(//).reverse romans = [] reversed_digits.length.times do |i| if reversed_digits[i].to_i < 4 romans << (symbols[i][0] * reversed_digits[i].to_i) elsif reversed_digits[i].to_i == 4 romans << (symbols[i][0] + symbols[i][1]) elsif reversed_digits[i].to_i == 9 romans << (symbols[i][0] + symbols[i + 1][0]) else romans << (symbols[i][1] + (symbols[i][0] * ((reversed_digits[i].to_i) - 5))) end end romans.reverse.join '' end end |