parent $frob_class object $message_class var $root dbref 'message_class var $root child_index 0 var $root fertile 0 var $root manager $message_class var $root owned [$message_class] var $root owners [$] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $root inited 1 method add_entry arg this, key, what; if (!(type(key) in ['string, 'dbref])) throw(~type, "The key should be a string or dbref."); if (type(what) == 'string) what = $ctext_class.new(($compile_evaluator.compile_cml(what))['result]); if ((type(what) == 'frob) && (class(what) == $ctext_class)) this = dict_add(this, key, what); else throw(~type, "Values should be $ctext_class or strings."); return <this(), this>; . method del_entry arg this, key; this = dict_del(this, key); . method eval_ctext arg this, [vars]; var key, new, temp, t, list; vars = [@vars, #[]][1]; if (!('time in dict_keys(vars))) vars = dict_add(vars, 'time, 'pre); if (!('evaluator in dict_keys(vars))) vars = dict_add(vars, 'evaluator, $base_evaluator); if (!('this in dict_keys(vars))) vars = dict_add(vars, 'this, sender()); new = .new(#[]); switch (vars['time]) { case 'pre: if ("general" in dict_keys(this)) { vars = dict_add(vars, "general", ['string_type, "general"]); list = ["general", @dict_keys(this)]; } else { list = dict_keys(this); } for key in (list) { vars = dict_add(vars, 'sender, ['string_type, key]); temp = (this[key]).eval_ctext(vars); if (((vars[key])[1]) == 'list_type) { for t in ((vars[key])[2]) new = new.add_entry(t[2], temp); } else { new = new.add_entry((vars[key])[2], temp); } } return new; case 'post: new = (| this[vars['sender]] |) || ((| this["general"] |) || ($ctext_class.new([""]))); new = new.eval_ctext(vars); return new; } . method new arg what; var key, this; if (type(what) != 'dictionary) throw(~type, "A message should be a dictionary."); this = <this(), #[]>; for key in (dict_keys(what)) this = this.add_entry(key, what[key]); return this; . method has_entry arg this, name; return name in dict_keys(this); . method get_part arg this, part; return this[part]; . method uncompile arg this; var key, output; output = #[]; for key in (dict_keys(this)) output = dict_add(output, key, (this[key]).uncompile()); return output; .