new object $has_text: $foundation; var $has_text text = 0; var $root created_on = 796268969; var $root defined_settings = #[["plaintext", #[['parse, ['is_boolean]], ['format, ['format_boolean]]]]]; var $root fertile = 1; var $root flags = ['methods, 'code, 'fertile, 'core, 'variables]; var $root help_node = $help_obj_has_text; var $root inited = 1; var $root managed = [$has_text]; var $root manager = $has_text; var $root settings = #[["plaintext", 1]]; public method ._edit_text_callback() { arg t, client_data; (> .perms(caller(), $editor_reference) <); .set_text(t); return ['success, ["Text set."]]; }; public method .del_line() { arg linestr; var t; // deletes "line" where line is the actual line to delete if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); t = .get_raw_text(); t = t.setremove(linestr); .set_text(t); }; public method .del_nline() { arg nline; var t; // deletes nline where nline is an integer reference to a list location if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); t = .get_raw_text(); t = (> t.delete(nline) <); .set_text(t); }; public method .del_text() { // deletes all text if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); text = []; }; public method .edit_text() { var p; (> .perms(sender()) <); p = .get_raw_text(); (> sender().invoke_editor(this(), '_edit_text_callback, p, []) <); }; public method .get_raw_text() { // returns text if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); if (.get_setting("plaintext", $has_text)) return text; else if (type(text) == 'frob) return text.uncompile(); else return text; }; root method .init_has_text() { text = []; }; public method .ins_line() { arg txt, @loc; var t; // inserts txt at loc (where loc is an integer) if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); [(loc ?= 0)] = loc; t = .get_raw_text(); if (!loc) t += [txt]; else t = (> t.insert(loc, txt) <); .set_text(t); }; public method .ins_lines() { arg lines, loc; var line, t; // inserts txt at loc (where loc is an integer) if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); t = .get_raw_text(); if (type(lines) != 'list) throw(~type, "Lines should be passed as a list of strings."); for line in (lines) { t = (> t.insert(loc, line) <); ++loc; } .set_text(t); }; public method .lines() { return listlen((.get_raw_text()) || []); }; public method .set_text() { arg txt; // resets ,text to the list sent if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); if (.get_setting("plaintext", $has_text)) { if (type(txt) == 'string) text = [txt]; else text = txt; } else { text = $compiler.compile_cml(txt); } }; public method .text() { // returns text if ((!(.is_writable_by(sender()))) && (sender() != this())) throw(~perm, "Permission Denied."); return text; }; root method .uninit_has_text() { text = []; };