parent $misc object $text var $root child_index 4 var $root owners [$text] var $root owned [$text] var $root fertile 0 var $root inited 1 var $text text 0 var $root info [] var $root manager $text var $root writable [$text] var $root readable ['parameters, 'methods, 'code] var $root dbref 'text method init_text if (caller() != $root) throw(~perm, "Caller is not $root."); text = []; . method uninit_text if (caller() != $root) throw(~perm, "Caller is not $root."); text = []; . method text // returns text if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); return text; . method set_text arg txt; // resets ,text to the list sent if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); text = txt; . method ins_line arg txt, [loc]; // inserts txt at loc (where loc is an integer) if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); if (!loc) text = [@text, txt]; else text = (> insert(text, loc, txt) <); . method del_text // deletes all text if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); text = []; . method del_line arg linestr; // deletes "line" where line is the actual line to delete if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); text = setremove(text, line); . method del_nline arg nline; // deletes nline where nline is an integer reference to a list location if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); text = (> delete(text, nline) <); . method ins_lines arg lines, loc; var line; // inserts txt at loc (where loc is an integer) if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); if (type(lines) != 'list) throw(~type, "Lines should be passed as a list of strings."); for line in (lines) { text = (> insert(text, loc, line) <); loc = loc + 1; } .