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