Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.log.browser
on browser (linecount, colors) { //a macro that returns HTML for the log <<Changes: <<4/14/00; 5:28:17 PM by JES <<localized local (adrlog = log.getGuestSubTable ("mainResponder")); linecount = number (linecount); //I keep getting bit by this, when called thru a macro, it's a string DW local (htmltext = "", indentlevel = 0); on add (s) { htmltext = htmltext + string.filledString ("\t", indentlevel) + s + "\r"}; on td (s) { return ("<td><font size=\"-1\">" + s + "</font></td>")}; if not config.mainresponder.prefs.flLog { add (mainResponder.getString ("log.loggingIsDisabled")); // 4/14/00 JES: localized return (htmltext)}; local (i, j, adrhourtable, adritem, sizelog = sizeof (adrlog^), ixlog, sizehourtable); add ("<table width=\"92%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"); indentlevel++; adrhourtable = @adrlog^ [sizelog]; //generate for the most recent hour sizehourtable = sizeof (adrhourtable^); ixlog = sizehourtable - linecount + 1; if ixlog < 1 { ixlog = 1}; for j = sizehourtable downto ixlog { adritem = @adrhourtable^ [j]; add ("<!-- " + j + " -->"); if defined (adritem^.htmlcache) { local (oldindentlevel = indentlevel); indentlevel = 0; add (adritem^.htmlcache); indentlevel = oldindentlevel} else { local (ixhtmltext = sizeof (htmltext)); add ("<tr bgcolor=\"" + colors [(j % sizeof (colors)) + 1] + "\">"); indentlevel++; add ("<td height=\"28\"></td>"); //a dummy table cell to establish row height with adritem^ { local (ticksstring = ""); try { //get ticks, expressed in a fraction of a second, it's complicated ticksstring = string.ratio (ticks, 60, 2); if ticks > 120 { //more than two seconds ticksstring = "<b><font color=\"deeppink\">" + ticksstring + "</font></b>"}}; add (td (string.popLeading (string.nthField (time, ";", 2), ' '))); add (td (code)); add (td (" " + threads + " ")); add (td (" " + ticksstring+ " ")); add (td (string.megabytestring (size))); bundle { //add the member name, if we have it, otherwise do a DNS lookup if defined (member) { local (groupname = config.mainResponder.globals.defaultMembershipGroup); local (link = mainResponder.members.linktomember (groupname, adritem^.member)); add (td (link))} else { local (client = xml.convertToDisplayName (nameof (adritem^))); try {client = tcp.dns.getDomainName (client)}; add (td (client))}}; bundle { //add the link local (link = "http://"); if defined (host) { link = link + host} else { link = link + tcp.dns.getMyDomainName ()}; link = link + url; if defined (pathargs) { if pathargs != "" { link = link + "$" + pathargs}}; if defined (searchargs) { if searchargs != "" { link = link + "?" + searchargs}}; add (td ("<a href=\"" + link + "\">" + url + "</a>"))}; <<bundle //add the host <<if defined (host) <<add (td (host)) <<else <<add (td (" ")) bundle { //add the referrer if defined (referrer) { add (td ("<a href=\"" + referrer + "\">*</a>"))} else { add (td (" "))}}}; add ("</tr>"); indentlevel--; adritem^.htmlcache = string.delete (htmltext, 1, ixhtmltext); adritem^.htmlcache = string.delete (adritem^.htmlcache, sizeof (adritem^.htmlcache), 1)}}; <<linecount-- <<if linecount <= 0 <<break <<for ixlog = sizelog downto 1 <<adrhourtable = @adrlog^ [ixlog] //generate in reverse-chronologic order <<for j = sizeof (adrhourtable^) downto 1 add ("</table>"); indentlevel--; return (htmltext)}; bundle { //test code browser (25, {"cornflowerblue", "papayawhip"})}
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.