Class: Kabal::Roman

Inherits:
Language show all
Defined in:
lib/kabal/languages/roman.rb

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