parent $libraries
object $integer
var $root child_index 0
var $root owners [$integer]
var $root fertile 0
var $root inited 1
var $root owned [$integer]
var $root manager $integer
var $root writable [$integer]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'integer
method n_to_nth
arg number;
var tens_digit_is_1, ones_digit, single_digit;
if (type(number) != 'integer)
throw(~type, "Must receive an integer");
ones_digit = abs(number) % 10;
tens_digit_is_1 = ((abs(number) / 10) % 10) == 1;
single_digit = abs(number) < 10;
if ((ones_digit in [1, 2, 3]) && (!tens_digit_is_1)) {
switch (ones_digit) {
case 1:
return tostr(number) + "st";
case 2:
return tostr(number) + "nd";
case 3:
return tostr(number) + "rd";
}
} else {
return tostr(number) + "th";
}
.
method parse_range
arg range_str;
var r1, r2;
// ("1-5") => (1, 5) -- 1, 5
// ("1-$") => (1, 'end) -- 1, 'end (end number)
// (".-3") => ('cur, 3) -- 'cur (current number), 3
// ("#-3") => ('bgn, 3) -- 'bgn (beginning number), 3
range_str = $parse.reference(range_str, "-");
r1 = range_str[1];
r2 = range_str[2];
//
if (!r2)
r2 = r1;
if (!toint(r1)) {
if (r1 == ".")
r1 = 'cur;
else if (r1 == "#")
r1 = 'bgn;
else
throw(~type, "Beginning range invalid.");
} else {
r1 = toint(r1);
}
//
if (!toint(r2)) {
if (r2 == "$")
r2 = 'end;
else
throw(~type, "Ending range invalid.");
} else {
r2 = toint(r2);
}
return [r1, r2];
.
method to_english
arg num;
var num_str, sign;
// 12500 => "12,500"
// if (abs(num) < 9999)
// return tostr(num);
sign = num ? abs(num) / num | 1;
num = abs(num);
num_str = "";
while (num > 999) {
num_str = ("," + substr(tostr(1000 + (num % 1000)), 2)) + num_str;
num = num / 1000;
}
num_str = tostr(num) + num_str;
return ((sign == 1) ? "" | "-") + num_str;
.
method range
arg x, y;
var list, element;
// creates a list of every number between x and y
list = [];
for element in [x .. y]
list = list + [element];
return list;
.