Sha256: 1328d9e10410d4ee93f352237e3035b34c44525e2a22f574d78f75ce2567f09d

Contents?: true

Size: 805 Bytes

Versions: 11

Compression:

Stored size: 805 Bytes

Contents

# frozen_string_literal: true

# @author Hernani Rodrigues Vaz
module ExtensoPt
  # numeracao romana ordem decrescente (ordem importante)
  ROMAN = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }.freeze

  # @param [Integer] inteiro a converter
  # @return [String] numeral romano do inteiro
  def self.ri2r(inteiro)
    return '' if inteiro.zero?

    ROMAN.each { |srm, val| return "#{srm}#{ri2r(inteiro - val)}" if val <= inteiro }
  end

  # @param [String] numeral romano a converter
  # @param [Integer] ultimo valor convertido
  # @return [Integer] inteiro do numeral romano
  def self.rr2i(numeral, ultimo)
    return 0 if numeral.empty?

    val = ROMAN[numeral[-1].to_sym]
    rr2i(numeral.chop, val) + (val < ultimo ? -val : val)
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
extenso_pt-0.8.3 lib/extenso_pt/romana.rb
extenso_pt-0.8.2 lib/extenso_pt/romana.rb
extenso_pt-0.8.1 lib/extenso_pt/romana.rb
extenso_pt-0.8.0 lib/extenso_pt/romana.rb
extenso_pt-0.7.9 lib/extenso_pt/romana.rb
extenso_pt-0.7.8 lib/extenso_pt/romana.rb
extenso_pt-0.7.7 lib/extenso_pt/romana.rb
extenso_pt-0.7.6 lib/extenso_pt/romana.rb
extenso_pt-0.7.5 lib/extenso_pt/romana.rb
extenso_pt-0.7.4 lib/extenso_pt/romana.rb
extenso_pt-0.7.3 lib/extenso_pt/romana.rb