new object $html_format: $formatter; var $root created_on = 837902808; var $root flags = ['variables, 'methods, 'code, 'core]; var $root inited = 1; var $root managed = [$html_format]; var $root manager = $html_format; public method ._eval_ctext() { arg data, vars, @unexpand; var out, uflags, token; out = ""; if (type(data) != 'list) data = [data]; for token in (data) { refresh(); switch (type(token)) { case 'frob: switch (class(token)) { case $generator: [token, vars] = ((| vars['evaluator] |) || $bs_eval).eval_generator(token, vars); if (type(token) == 'string) { out += token; } else { [token, vars] = ._eval_ctext(token, vars, 1); out += token; } case $format: [token, vars] = .eval_formatter(token, vars); out += token; } case 'string: out += unexpand ? token : (token.to_html()); case 'list: [token, vars] = ._eval_ctext(token, vars, @unexpand); out += token; default: out += token; } } return [out, vars]; }; public method .do_action() { arg vars, flags, args; [args, vars] = ._eval_ctext(args[1], vars); (| (vars['receiver]).register_action(args, vars['this], flags.getkey("token")) |); return [("\\" + args) + "\\", vars]; }; public method .do_anchor() { arg vars, flags, args; [args, vars] = ._eval_ctext([args[1]], vars); return [[("/" + (args[1])) + "/"], vars]; }; public method .do_b() { arg vars, flags, args; var out, a; [args, vars] = ._eval_ctext(args, vars); return [("<b>" + args) + "</b>", vars]; }; public method .do_br() { arg vars, flags, args; return ["\n<br>", vars]; }; public method .do_columnize() { arg vars, flags, args; var cols, l, out, i; cols = (| flags.getkey("cols") |) || "*"; [args, vars] = ._eval_ctext(args, vars); out = "\n<table border=0>\n"; while (args) { if ((args.length()) > cols) [l, args] = [args.subrange(1, cols), args.subrange(cols + 1)]; else [l, args] = [args, []]; out += ("<tr><td>" + (l.join("</td><td>"))) + "</td></tr>\n"; } out += "</table>\n"; return [out, vars]; }; public method .do_dd() { arg vars, flags, args; var c; c = (| vars['columned] |); [args, vars] = ._eval_ctext(args, vars); if (c) return [("<td>" + args) + "</td></tr>", vars]; return ["<dd>" + args, vars]; }; public method .do_detail() { arg vars, flags, args; var det; det = flags.getkey("name"); return [((((("<a href=\"/bin/describe?target=" + ((vars['this]).objname())) + "&detail=") + ($http.encode(det))) + "\">") + det) + "</a></b>", vars]; }; public method .do_dfn() { arg vars, flags, args; var out, a; [args, vars] = ._eval_ctext(args, vars); return [("\n<blockquote>" + args) + "</blockquote>", vars]; }; public method .do_dl() { arg vars, flags, args; var out, token, c, cm; c = (| vars['columned] |); cm = (| flags.getkey("columned") |) || 0; vars = vars.add('columned, cm); [args, vars] = ._eval_ctext(args, vars); if (c) vars = vars.add('columned, c); else if (vars.contains('columned)) vars = vars.del('columned); if (cm) return [("\n<blockquote><table cols=2 border=0>\n" + args) + "\n</table></blockquote>\n", vars]; return [("\n<dl>\n" + args) + "\n</dl>\n", vars]; }; public method .do_dt() { arg vars, flags, args; var term, c; c = (| vars['columned] |); [args, vars] = ._eval_ctext(args, vars); if (c) return [("\n<tr><td>" + args) + "</td>", vars]; return ["\n<dt>" + args, vars]; }; public method .do_em() { arg vars, flags, args; var out, a; [args, vars] = ._eval_ctext(args, vars); return [("<em>" + args) + "</em>", vars]; }; public method .do_hr() { arg vars, flags, args; return ["\n<hr size=1 noshade>\n", vars]; }; public method .do_i() { arg vars, flags, args; var out, a; [args, vars] = ._eval_ctext(args, vars); return [("<i>" + args) + "</i>", vars]; }; public method .do_invoke() { arg vars, flags, args; var object, method, eacharg; [args, vars] = ._eval_ctext(args, vars); object = flags.getkey("object"); method = flags.getkey("method"); return [((((("<a href=\"/" + (object.subrange(2))) + "/") + method) + "\">") + args) + "</a>", vars]; }; public method .do_lh() { arg vars, flags, args; [args, vars] = ._eval_ctext(args, vars); return ["\n<lh>" + args, vars]; }; public method .do_li() { arg vars, flags, args; [args, vars] = ._eval_ctext(args, vars); return ["\n<li>" + args, vars]; }; public method .do_link() { arg vars, flags, args; var node; [args, vars] = ._eval_ctext([args[1]], vars); node = (| flags.getkey("node") |); if (node) return [((("<a href=\"/bin/help?node=" + node) + "\">") + args) + "</a>", vars]; return [">>ERROR: Invalid node<<", vars]; }; public method .do_method() { arg vars, flags, args; var out, vars, m; m = (flags[1])[1]; [out, vars] = ._eval_ctext(args, vars); return [((("<a href=\"/bin/method?target=" + m) + "\"><tt>") + out) + "</tt></a>", vars]; }; public method .do_np() { arg vars, flags, args; return ["\n<p>\n", vars]; }; public method .do_obj() { arg vars, flags, args; var gateway, argname, context, object, name; context = flags.getkey("context"); name = flags.getkey("name"); object = args[1]; // nix this once we figure out why its not always staying a symbol if (type(context) == 'string) context = tosym(context); switch (context) { case 'look: [gateway, argname] = ["describe", "target"]; case 'display: [gateway, argname] = ["display", "target"]; case 'exit: [gateway, argname] = ["describe", "target"]; object = object.dest(); } return [((((((("<a href=\"/bin/" + gateway) + "?") + argname) + "=") + object) + "\">") + name) + "</a>", vars]; }; public method .do_ol() { arg vars, flags, args; var out, header, line, token; [args, vars] = ._eval_ctext(args, vars); return [("\n<ol>\n" + args) + "\n</ol>\n", vars]; }; public method .do_p() { arg vars, flags, args; return ["\n<p>\n", vars]; }; public method .do_quote() { arg vars, flags, args; return [("<pre>" + ((((args[1]).replace("&", "&")).replace("<", "<")).replace(">", ">"))) + "</pre>", vars]; }; public method .do_subj() { arg vars, flags, args; var out, word, l; [args, vars] = ._eval_ctext(args, vars); l = (| flags.getkey("level") |) || "4"; return [((((("<h" + l) + ">") + args) + "</h") + l) + ">\n", vars]; }; public method .do_table() { arg vars, flags, args; var cols, tcs, tc; tcs = (| vars['table_cols] |); tc = (| vars['table_col] |); if ((cols = (| flags.getkey("cols") |)) && ("%" in cols)) vars = vars.add('table_cols, cols.explode(",")); [args, vars] = ._eval_ctext(args, vars); vars = tcs ? (vars.add('table_cols, tcs)) : (vars.del('table_cols)); vars = tc ? (vars.add('table_col, tc)) : (vars.del('table_col)); return [("\n<table border=0>" + args) + "\n</table>\n", vars]; }; public method .do_td() { arg vars, flags, args; var f, n, c, width; c = vars['table_col]; vars = vars.add('table_col, c + 1); width = (| (vars['table_cols])[c] |); f = ""; if ((n = (| flags.getkey("rowspan") |))) f += " rowspan=" + n; if ((n = (| flags.getkey("colspan") |))) f += " colspan=" + n; if (width) f += (" width=\"" + width) + "\""; [args, vars] = ._eval_ctext(args, vars); return [((("\n<td valign=top" + f) + ">") + args) + "</td>", vars]; }; public method .do_th() { arg vars, flags, args; var f, n, c, width; c = vars['table_col]; vars = vars.add('table_col, c + 1); width = (| (vars['table_cols])[c] |); f = ""; if ((n = (| flags.getkey("rowspan") |))) f += " rowspan=" + n; if ((n = (| flags.getkey("colspan") |))) f += " colspan=" + n; if (width) f += (" width=\"" + width) + "\""; [args, vars] = ._eval_ctext(args, vars); return [((("\n<th align=left valign=top" + f) + ">") + args) + "</td>", vars]; }; public method .do_tr() { arg vars, flags, args; vars = vars.add('table_col, 1); [args, vars] = ._eval_ctext(args, vars); return [("\n<tr>" + args) + "</tr>", vars]; }; public method .do_tt() { arg vars, flags, args; var out, a; [args, vars] = ._eval_ctext(args, vars); return [("<tt>" + args) + "</tt>", vars]; }; public method .do_ul() { arg vars, flags, args; var out, header, line, token; [args, vars] = ._eval_ctext(args, vars); return [("\n<ul>\n" + args) + "\n</ul>\n", vars]; }; public method .do_web() { arg vars, flags, args; [args, vars] = ._eval_ctext([args[1]], vars); return [((((args + "<a href=\"") + (flags.getkey("src"))) + "\">") + (flags.getkey("name"))) + "</a>", vars]; }; public method .eval_formatter() { arg form, vars; var flags, i, text; form = form.eval_flags(vars); catch ~methodnf { return .(form[4])(vars, form[2], form[3]); } with { [text, vars] = ._eval_ctext(form[3], vars); if ((vars['time]) == 'post) return ["<%l%l>%l</%l>".format(form[1], map i in (form[2]) to ((((" " + (i[1])) + "=\"") + (i[2])) + "\"").join(""), text, form[1]), vars]; form = (<$format, [form[1], form[2], text, form[4]]>); return [[form], vars]; } }; public method .format() { arg data, vars; var str, len, line, out; str = (> (._eval_ctext(data, vars))[1] <) + "<br>"; return str_to_buf(str + "\n"); if ((strlen(str) < 2) || (substr(str, strlen(str) - 1) != "\n")) str += "\n"; return str_to_buf(str + "<br>"); };