Sha256: 4d1137f8272895952b5d4141a620772e3c1addbbc508c77299e19cc271327317

Contents?: true

Size: 820 Bytes

Versions: 6

Compression:

Stored size: 820 Bytes

Contents

# frozen_string_literal: true

# @author Hernani Rodrigues Vaz
module ExtensoPt
  # Produz numeral romano a partir de inteiro
  #
  # @param [Integer] inteiro a converter
  # @return [String] numeral romano do inteiro
  def self.ri2r(inteiro)
    return '' if inteiro.zero?

    # numeracao romana nao tem negativos
    inteiro = inteiro.abs if inteiro.negative?
    ROMAN.each { |r, v| return r.to_s + ri2r(inteiro - v) if v <= inteiro }
  end

  # Produz inteiro a partir de numeral romano
  #
  # @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?

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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
extenso_pt-0.6.12 lib/extenso_pt/romana.rb
extenso_pt-0.6.11 lib/extenso_pt/romana.rb
extenso_pt-0.6.10 lib/extenso_pt/romana.rb
extenso_pt-0.6.9 lib/extenso_pt/romana.rb
extenso_pt-0.6.8 lib/extenso_pt/romana.rb
extenso_pt-0.6.7 lib/extenso_pt/romana.rb