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; .