Class: Lcms::Engine::RomanNumerals
- Inherits:
-
Object
- Object
- Lcms::Engine::RomanNumerals
- Defined in:
- app/entities/lcms/engine/roman_numerals.rb
Constant Summary collapse
- ROMAN_NUMERALS_RE =
/^(M|CM|D|CD|C|XC|L|XL|X|IX|V|IV|I)/.freeze
- SYMBOLS =
[ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I'] ].freeze
Class Method Summary collapse
Class Method Details
.from_roman(roman) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/entities/lcms/engine/roman_numerals.rb', line 34 def self.from_roman(roman) value = 0 str = roman.upcase while (m = str.match(ROMAN_NUMERALS_RE)) # add the arabic number for the matched numeral value += SYMBOLS.detect { |pair| pair[1] == m[1] }.first str = m.post_match end value end |
.to_roman(num) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'app/entities/lcms/engine/roman_numerals.rb', line 23 def self.to_roman(num) [].tap do |roman| SYMBOLS.each do |arab, rom| while num >= arab roman << rom num -= arab end end end.join end |