Method code for $integer.to_roman_numeral()

[Turn on line numbering]
arg num;
var str, neg, methstr;

str = "";
neg = "";

// Handle negatives:
if (num < 0) {
    neg = "negative ";
    num = abs(num);
}
if (num >= 1000000)
    return "Out of range";
if (num >= 1000) {
    str = "M" * (num / 1000);
    num = num % 1000;
    if (num == 0)
        return str;
}
if (num >= 100) {
    str = str + (num / 100).roman_numeral_scheme("C", "D", "M");
    num = num % 100;
    if (num == 0)
        return str;
}
if (num >= 10) {
    str = str + (num / 10).roman_numeral_scheme("X", "L", "C");
    num = num % 10;
    if (num == 0)
        return str;
}
if (num > 0)
    str = str + num.roman_numeral_scheme("I", "V", "X");
else if (!str)
    str = "";
return neg + str;

// $#Edited: 24 Jul 97 15:58 $user_scott

["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]

the Cold Dark