parent $foundation object $named var $root child_index 0 var $root fertile 1 var $root manager $named var $root owned [$named] var $root owners [$core] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $root inited 1 var $root dbref 'named var $named name ['uniq, "Named Object"] var $named name_aliases 0 method set_name arg new_name, [args]; var proper; // .set_name(new_name, ['proper|'unique]) (default proper). // ['prop, "Name"] => proper, no indefinite/definite articles. // ['uniq, "Name"] => unique, normal indefinite/definite articles. (> .perms(sender()) <); if (type(new_name) != 'string) throw(~type, "New name must be given as a string."); // this will not catch them all, but we can try. // if (" a " in new_name || " the " in new_name) // throw(~bad_name, "Do not include articles in a name"); // proper = [@args, 'prop][1]; name = [proper, new_name]; . method name_aliases return name_aliases; . method add_name_alias arg alias; .perms(sender()); name_aliases = [@name_aliases, alias]; . method del_name_alias arg alias; .perms(sender()); name_aliases = setremove(name_aliases, alias); . method init_named var dbref; (> .perms(caller(), $root) <); dbref = tostr(.dbref('symbol)); name = ['uniq, tostr(dbref)]; name_aliases = []; . method match_name arg str; return match_begin(.name('none), str); . method name arg [article]; article = [@article, 'indef][1]; if ((name[1]) == 'uniq) { switch (article) { case 'indef: return (($string.a_or_an(name[2])) + " ") + (name[2]); case 'def: return "the " + (name[2]); } } return name[2]; . method match_name_aliases arg str; return str in name_aliases; . method namef arg [args]; if (!args) args = [['name, 'def]]; if ((args[1]) == 'ref) { if (.has_ancestor($named)) args = [['name], " (", ['dbref], ")"]; else args = [['dbref]]; } else if ((args[1]) == 'xref) { if (.has_ancestor($named)) args = [['dbref], " (", ['name], ")"]; else args = [['dbref]]; } return pass(@args); .