lib/extenso_pt/romana.rb in extenso_pt-0.7.2 vs lib/extenso_pt/romana.rb in extenso_pt-0.7.3
- old
+ new
@@ -1,28 +1,25 @@
# frozen_string_literal: true
# @author Hernani Rodrigues Vaz
module ExtensoPt
- # Produz numeral romano a partir de inteiro
- #
+ # 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 do |r, v|
- return r.to_s + ri2r(inteiro - v) if v <= inteiro
- end
+ ROMAN.each { |srm, val| return "#{srm}#{ri2r(inteiro - val)}" if val <= 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]
- rr2i(numeral.chop, v) + (v < ultimo ? -v : v)
+ val = ROMAN[numeral[-1].to_sym]
+ rr2i(numeral.chop, val) + (val < ultimo ? -val : val)
end
end