parent $root_evaluator
object $format_evaluator
var $root dbref 'format_evaluator
var $root child_index 1
var $root fertile 0
var $root manager $format_evaluator
var $root owned [$format_evaluator]
var $root owners [$]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $prep_evaluator append_str "_stmt"
var $root inited 1
method ul_stmt
arg vars, args, indent;
return .list_type(dict_add(vars, 'context, 'list), args, indent + 1);
.
method br_stmt
arg vars, term, indent;
return ["", ""];
.
method string_type
arg vars, term, indent;
return term;
.
method eval_ctext
arg vars, term;
if (listlen(term) == 1)
term = term[1];
if (term) {
if (!('context in dict_keys(vars)))
vars = dict_add(vars, 'context, 'string);
return .(term[1])(vars, term[2], 0);
}
return "";
.
method list_type
arg vars, args, indent;
var t, output, result, last;
output = [];
for t in (args) {
result = .(t[1])(vars, t[2], indent);
if ((vars['context]) == 'list) {
if (type(result) == 'string)
output = [@output, ._eol(vars, result, indent)];
else
output = [@output, @result];
} else if (type(result) == 'string) {
output = output.join(result);
} else {
output = output.join(result.to_string(" "));
}
}
return output;
.
method p_stmt
arg vars, args, indent;
return ["", "", ""];
.
method anchor_stmt
arg vars, args, indent;
return ("/" + ((args[1])[2])) + "/";
.
method dbref_type
arg vars, term;
return (term[2]).dbref();
.
method symbol_type
arg vars, args, indent;
return tostr(args);
.
method text_stmt
arg vars, args, indent;
var t, output, result;
output = [];
for t in (args) {
catch ~methodnf {
result = .(t[1])(vars, t[2], indent);
} with handler {
result = (">>ERROR: unknown method " + ($data.unparse(t[1]))) + "<<";
}
output = output.join(result);
}
if (listlen(output) == 1)
return output[1];
return output;
.
method _line_stmt
arg vars, args;
return "";
.
method bold_stmt
arg vars, args;
return uppercase(args[1]);
.
method b_stmt
arg vars, args;
return uppercase(.eval_ctext(vars, args[1]));
.
method strong_stmt
arg vars, args, indent;
return uppercase(.eval_ctext(vars, args[1]));
.
method dfn_stmt
arg vars, args, indent;
var term, defn, l, lines, a;
term = .((args[1])[1])(vars, (args[1])[2], indent);
term = ._eol(vars, term, indent);
defn = .ul_stmt(vars, sublist(args, 2), indent);
return [term, @defn];
.
method _indent
arg what, [by];
// prepends <what> with <by>
//if (by)
// return by[1]+what;
//else
return " " + what;
.
method integer_type
arg vars, args;
return tostr(args);
.
method evaluator
arg vars, args, indent;
vars = dict_add(vars, 'force, 1);
vars = dict_add(vars, 'delay, 0);
vars = ((args[1])[2])._eval_ctext(vars, args[2]);
return (vars['result])[2];
.
method error_stmt
arg vars, args;
return $list.join(">>ERROR: ", $list.join(.((args[1])[1])(vars, (args[1])[2]), "<<"));
.
method integer
arg vars, term, indent;
return tostr(term[2]);
.
method _eol
arg vars, line, indent;
//handles indention for 1 line.
return (" ".repeat(indent)) + line;
.
method header_stmt
arg vars, args, indent;
var href, text, anchors;
text = (args[1])[2];
return [text, pad("", strlen(text), "-"), "", ""];
.
method evalctext
arg vars, term;
if (listlen(term) == 1)
term = term[1];
if (term) {
if (!('context in dict_keys(vars)))
vars = dict_add(vars, 'context, 'string);
return .(term[1])(vars, term[2], 0);
}
return "";
.