Skip to main content
Deno 2 is finally here 🎉️
Learn more

roman-numerals

Use

import { toArabic, toRoman } from "https://deno.land/x/roman_numerals/mod.ts";

console.log(toArabic("XLII")); // 42
console.log(toArabic("xlii")); // 42
console.log(toRoman(42)); // "XLII"
console.log(toRoman("42")); // "XLII"

This module has been converted to ESM-formatted TypeScript, but its API is otherwise unchanged (with the notable exception that non-primitives are no longer accepted as arguments).

To-do: Update this readme

Readme contents from original NPM module:

Installation

Using npm:

$ npm install roman-numerals

Using git:

$ git clone git@github.com:joshleaves/roman-numerals.git

Usage

roman-numerals.toArabic(roman)

toArabic() takes a roman number (as a string literal or a string object) and returns a number with the arabic equivalent.

var toArabic = require('roman-numerals').toArabic;
[ 'XLII', new String('XLII') ].forEach(function (x, i) {
    console.log('%d: %s', i, toArabic(x));
});

Will output:

0: 42
1: 42

toArabic() will throw a TypeError when passed a non-string variable and will throw an Error when passed an invalid roman number. Acceptable strings are also "nulla" and "" (that’s empty string) which will both return 0.

roman-numerals.toRoman(arabic)

toRoman() takes an arabic number (as a number literal, a number object, a stringed literal number or a stringed object number) and returns a string with the roman equivalent.

var toRoman = require('roman-numerals').toRoman;
[ 42, new Number(42), '42', new String('42')].forEach(function (x, i) {
    console.log('%d: %s', i, toRoman(x));
});

Will output:

0: XLII
1: XLII
2: XLII
3: XLII

toRoman() will throw a TypeError when passed a non-number variable or NaN and will throw an Error when passed a number under 0 or over 3999.

Tests

Unit tests are done using mocha. To run the tests on your machine, install mocha using npm and run make test or npm test.

$ npm install --dev
$ make test

You can also use make nyan for something new.