Sha256: 01e9b31d6ff29660ffd087934a67c54e06b200d13c8728e75fff500f1de7843d
Contents?: true
Size: 1.86 KB
Versions: 4
Compression:
Stored size: 1.86 KB
Contents
# CousinRoman CousinRoman provides functionality to convert between Roman and Arabian numerals. The functionality provided via String and Integer extensions. ## Roman numbers and conversion rules CousinRoman follows strict roman notation with subtractive rule, i.e. 1. Letters should be ordered by decreasing of magnitude. 2. Only I, X, C, M can be repeated, but up to three times. 3. Letter with lower magnitude can appear BEFORE letter with higher magnitude, but only in the following cases: IV, IX, XL, XC, CD, CM - lets call them **subtractives** 4. **subtractives** and regular letters cannot appear within the same power, i.e. `ivi` is not allowed. Therefore, only numbers within range of 1..3999 can be represented in roman notation. CousinRoman is thoroughly spec'ed, and considered reliable in following these rules. ## Installation Add this line to your application's Gemfile: gem 'cousin_roman' And then execute: $ bundle Or install it yourself as: $ gem install cousin_roman ## Usage Just use `String#to_arabian` or `String#to_arabian!` methods if you want to convert from Roman to Arabian and `Integer#to_roman` or `Integer#to_roman!` if you want to convert from Arabian to Roman. For example: ```ruby 'MMXIII'.to_arabian # => 2013 'MMYUOX'.to_arabian # => nil 'MMYOUX'.to_arabian! # => TypeError: not a valid roman number 2013.to_roman # => 'MMXIII' '0'.to_roman # => nil '100500'.to_roman! # => TypeError: not a valid roman number ``` `String#to_arabian(!)` is case insensitive. `Integer#to_roman(!)` returns numerals in upper case. ## Testing Just run $ rake under gem folder (be prepared for massive output). ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
cousin_roman-1.0.8 | README.md |
cousin_roman-1.0.7 | README.md |
cousin_roman-1.0.6 | README.md |
cousin_roman-1.0.5 | README.md |