Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.data.standardMacros.hierarchicTableDisplayer
on hierarchicTableDisplayer (adrtable) { //a recursive table display in HTML
local (indentlevel = 0);
local (htmltext = "");
on add (s) {
htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"};
on renderOneTable (adrtable) {
local (i, adritem);
for i = 1 to sizeof (adrtable^) {
adritem = @adrtable^ [i];
case typeof (adritem^) {
tabletype {
add (nameof (adritem^));
indentlevel++;
renderOneTable (adritem);
indentlevel--};
binarytype {
add ("(binary, type = " + getbinarytype (adritem^) + ", size = " + sizeof (adritem^) + ")")}}
else {
local (s = string (adritem^));
s = string.replaceall (s, "<", "<");
if sizeof (s) == 0 {
s = " "};
if s contains "\r" {
s = "<pre>" + s + "</pre>";
s = string.replaceall (s, "\r\n", "\r")};
add (nameof (adritem^) + " = " + s)}};
return (htmltext)};
return ("<pre>" + string.trimwhitespace (renderOneTable (adrtable)) + "</pre>")}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.