parent $text
object $itext
var $root child_index 1
var $root owners [$itext]
var $root owned [$itext]
var $root fertile 1
var $text text ["hello", "this", "world"]
var $root inited 1
var $itext all_text #[["foo", [["hello", "world"], ""]], ["bar", [["hello", "this", "world"], ""]]]
var $itext current "foo"
var $root manager $itext
var $root writable [$itext]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'itext
method current
return current;
.
method topics
return dict_keys(all_text);
.
method set_desc
arg desc, [topic];
// set the description for a topic
// The description is a short text string meant for use in an index
// if <topic> is not given assume current
topic = [@topic, current][1];
if (topic in dict_keys(all_text))
all_text = dict_add(all_text, topic, replace(all_text[topic], 2, short_desc));
else
throw(~topicnf, ("Topic " + topic) + " not found.");
.
method store
arg [topic];
topic = [@topic, current][1];
if (!(topic in dict_keys(all_text)))
all_text = dict_add(all_text, topic, [.text(), ""]);
all_text = dict_add(all_text, topic, replace(all_text[topic], 1, .text()));
.
method set_current
arg topic;
current = topic;
if (topic in dict_keys(all_text))
.set_text((all_text[topic])[1]);
else
.set_text([]);
.
method get_topic
arg topic, [who];
if (topic in dict_keys(all_text))
return (all_text[topic])[1];
else
throw(~topicnf, ("Topic " + topic) + " not found.");
.
method init_itext
current = "";
all_text = #[];
.
method get_desc
arg topic, [who];
if (topic in dict_keys(all_text))
return (all_text[topic])[2];
else
throw(~topicnf, ("Topic " + topic) + " not found.");
.