new object $evaluator: $utilities; var $root created_on = 837583637; var $root flags = ['variables, 'methods, 'code, 'core]; var $root inited = 1; var $root managed = [$evaluator]; var $root manager = $evaluator; public method ._eval_ctext() { arg data, vars; var out, uflags, token; out = []; if (type(data) != 'list) data = [data]; for token in (data) { if (type(token) == 'frob) { switch (class(token)) { case $generator: [token, vars] = .eval_generator(token, vars); out += token; case $format: [token, vars] = .eval_formatter(token, vars); out += token; default: out += [token]; } } else { out += [token]; } } return [out, vars]; }; public method .eval_formatter() { arg form, vars; var flags, text, key; form = form.eval_flags(vars); catch ~methodnf { return .(form[4])(vars, form[2], form[3]); } with { [text, vars] = ._eval_ctext(form[3], vars); form = (<$format, [form[1], form[2], text, form[4]]>); return [[form], vars]; } }; public method .eval_generator() { arg gen, vars; var flags, key, value, name; gen = gen.eval_flags(vars); catch ~methodnf { return .(gen[4])(vars, gen[2], gen[3]); } with { catch ~keynf return [[vars[gen[1]]], vars]; with return [[(">>ERROR: Unknown generator [" + (gen[1])) + "].<<"], vars]; } }; public method .init() { return #[]; };