parent $frob_class
object $ctext_class
var $root dbref 'ctext_class
var $root child_index 0
var $root fertile 0
var $root manager $ctext_class
var $root owned [$ctext_class]
var $root owners [$]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $root inited 1
method eval
arg [vars];
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);
(vars['evaluator]).eval_cml(vars, ._ctext());
.
method _ctext
arg this;
return this;
.
method new
arg data, [evaluator];
evaluator = [@evaluator, $compile_evaluator][1];
if (type(data) == 'string)
data = (evaluator.compile_cml(data))['result];
return <this(), data>;
.
method eval_ctext
arg this, [vars];
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());
if (!('sender in dict_keys(vars)))
vars = dict_add(vars, 'sender, sender());
return (vars['evaluator]).eval_ctext(vars, this);
.
method finish
arg this;
var term, output, line;
output = [];
line = "";
for term in (this) {
if (type(term) in ['symbol, 'integer, 'string]) {
line = line + tostr(term);
} else if (type(term) == 'dbref) {
line = line + (term.dbref());
} else if (type(term) == 'list) {
if ((term[1]) == 'b_stmt) {
output = [@output, line];
line = "";
} else {
output = [@output, line, term.to_string()];
line = "";
}
} else {
line = line + ($data.unparse(term));
}
}
output = [@output, line];
return output;
.
method uncompile
arg this;
return $uncompile_evaluator.eval_ctext(this);
.
method ctext
arg this;
return this;
.