Sha256: a4bbeda13676d6ceb88603174fffca920546172fd65a8a8b8864021b242f0bbf

Contents?: true

Size: 947 Bytes

Versions: 1

Compression:

Stored size: 947 Bytes

Contents

module NumeroRomano
  @digitos_base = {
    1    => 'I',
    4    => 'IV',
    5    => 'V',
    9    => 'IX',
    10   => 'X',
    40   => 'XL',
    50   => 'L',
    90   => 'XC',
    100  => 'C',
    400  => 'CD',
    500  => 'D',
    900  => 'CM',
    1000 => 'M'
  }

  def self.a_romano valor
    resultado = ''
    @digitos_base.keys.reverse.each do |decimal|
      while valor >= decimal
        valor -= decimal
        resultado += @digitos_base[decimal]
      end
    end
    resultado
  end

  def self.a_decimal valor
    valor = valor.upcase
    resultado = 0
    @digitos_base.values.reverse.each do |romano|
      while valor.start_with? romano
        valor = valor.slice(romano.length, valor.length)
        resultado += @digitos_base.key romano
      end
    end
    resultado
  end
  
  def self.romano? valor
    valor = valor.upcase
    !(valor.scan(/^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/).empty?)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
MX-ID-0.0.1.pre lib/MX/numero_romano.rb