Sha256: 0b10494a6359da342a2b45a0f495539984035698677e481d4e0e2903aa5f52f7

Contents?: true

Size: 811 Bytes

Versions: 2

Compression:

Stored size: 811 Bytes

Contents

require "RomanNumber/version"
require "RomanNumber/numbers"

module RomanNumber

  class Converter

    def self.convert_roman(value)
      if value !~ /^[IVXLCDM]*$/
        raise ArgumentError, "'#{value}' is not a valid roman number.", caller
      end
      result = 0
      value.strip!
      NUMBERS.each do |key,x|
        roman_char = /^#{key}/
        while value.slice!(roman_char)
          result += x
        end
      end
      return result
    end

    def self.convert_int(value)
      if !value.is_a? Integer
        raise ArgumentError, "'#{value}' is not a valid integer value.", caller
      end
      result = ""
      NUMBERS.each do |key,x|
        if value >= x
          result += key*(value/x)
          value = value % x
        end
      end
      return result
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
RomanNumber-0.1.2 lib/RomanNumber.rb
RomanNumber-0.1.1 lib/RomanNumber.rb