module RomanNumerals

Constants

VERSION

Public Instance Methods

r_to_i() click to toggle source
# File lib/roman_numerals.rb, line 3
def r_to_i()

  numeral = self
  value = 0

  if numeral.empty?
    return nil
  end

  numeral.strip!
  numeral.upcase!

  if (numeral != numeral[/[MCDLXVI]*/])
    return nil
  end

  until numeral.length == 0 do
    value += 900 unless (numeral.sub! "CM", "").nil?
    value += 1000 unless (numeral.sub! "M", "").nil?
    value += 400 unless (numeral.sub! "CD", "").nil?
    value += 500 unless (numeral.sub! "D", "").nil?
    value += 90 unless (numeral.sub! "XC", "").nil?
    value += 100 unless (numeral.sub! "C", "").nil?
    value += 40 unless (numeral.sub! "XL", "").nil?
    value += 50 unless (numeral.sub! "L", "").nil?
    value += 9 unless (numeral.sub! "IX", "").nil?
    value += 10 unless (numeral.sub! "X", "").nil?
    value += 4 unless (numeral.sub! "IV", "").nil?
    value += 5 unless (numeral.sub! "V", "").nil?
    value += 1 unless (numeral.sub! "I", "").nil?
  end
  value
end