Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.log.browseAny
on browseAny (logname, adrRenderItemCallback, colors={"gainsboro", "white"}, columns={}, hoursToDisplay=1, maxitems=infinity, colsToAlignRight={}, adrItemCount=nil) {
<<Changes:
<<8/2/02; 10:59:44 PM by JES
<<Created. Based on mainResponder.log.browser.
local (adrlog = log.getGuestSubTable (logname));
if sizeOf (adrlog^) == 0 {
return ("")};
local (htmltext = "", indentlevel = 0);
on add (s) {
htmltext = htmltext + (string.filledString ("\t", indentlevel) + s + "\r");};
local (i, adrhourtable, adritem, sizelog = sizeof (adrlog^), sizehourtable);
add ("<table width=\"92%\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">"); indentlevel++;
if sizeOf (columns) > 0 {
add ("<tr>"); indentlevel++;
local (column);
for column in columns {
if colsToAlignRight contains column {
add ("<td align=\"right\"><b>" + column + "</b></td>")}
else {
add ("<td><b>" + column + "</b></td>")}};
add ("</tr>"); indentlevel--};
local (ixhour = sizelog, cthours = 0, ctitems = 0, ixcolor = 1); //generate for the most recent hour
while cthours < hoursToDisplay {
adrhourtable = @adrlog^ [ixhour];
sizehourtable = sizeof (adrhourtable^);
for i = sizehourtable downto 1 {
adritem = @adrhourtable^ [i];
add ("<tr bgcolor=\"" + colors [ixcolor] + "\">"); indentlevel++;
ixcolor++;
if ixcolor > sizeOf (colors) {
ixcolor = 1};
if defined (adritem^.itemcache) {
local (oldindentlevel = indentlevel);
indentlevel = 0;
add (adritem^.itemcache);
indentlevel = oldindentlevel}
else {
local (ixhtmltext = sizeof (htmltext));
try {
local (itemtext = adrRenderItemCallback^ (adritem) );
ctitems++;
add (itemtext);
adritem^.itemcache = itemtext}};
add ("</tr>"); indentlevel--;
ctitems++;
if ctitems >= maxitems {
break}};
ixhour--; cthours++;
if ixhour == 0 {
break};
if cthours >= hoursToDisplay {
break};
if ctitems >= maxitems {
break}};
add ("</table>"); indentlevel--;
if adrItemCount != nil {
adrItemCount^ = ctitems};
return (htmltext)}
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.