new object $flat_format: $wrapped_format;
var $root created_on = 858615622;
var $root flags = ['variables, 'methods, 'code, 'core];
var $root inited = 1;
var $root managed = [$flat_format];
var $root manager = $flat_format;
public method .do_link() {
arg vars, flags, args;
return ._eval_ctext(args[1], vars);
};
public method .do_th() {
arg vars, flags, args;
var tblinfo, rinfo, col, cols, rows, w, n, max;
rows = (| toint(flags.getkey("rowspan")) |) || 1;
cols = (| toint(flags.getkey("colspan")) |) || 1;
rinfo = vars['rinfo];
tblinfo = vars['table_info];
col = (tblinfo[2]) + 1;
n = [];
max = listlen(tblinfo[1]);
while (rinfo[col]) {
col++;
n += [[0, (tblinfo[1])[col], []]];
}
w = ((tblinfo[1]).subrange(col, cols)).sum();
tblinfo = tblinfo.replace(2, (col + cols) - 1);
vars = (vars.add('table_info, tblinfo)).add('header, "");
[args, vars] = .eval_indented(args, vars, 0, w);
return [(n + [[rows, w, args.explode("\n", 1)]]) + ($list.make(cols - 1, [rows, 0, []])), vars];
};
public method .format() {
arg data, vars;
var str, len, line, out;
str = (> (._eval_ctext(data, vars))[1] <);
if ((strlen(str) < 2) || (substr(str, strlen(str) - 1) != "\n"))
str += "\n";
// ugly and inneficient--use a client people
len = (vars['receiver]).linelen();
out = "";
for line in (explode(str, "\n", 1))
out += (line.wrap_line(len, "")) + "\n";
return str_to_buf(out);
};