Monday, November 08, 2010 at 12:02 AM.
system.verbs.apps.WebStar.commands.writeReport
on writeReport (f) { file.new (f); <<create the file file.setType (f, 'TEXT'); <<it's a text file file.setCreator (f, Netscape.id); file.open (f); on add (s) { file.write (f, s)}; add ("<html>\r"); add ("<body bgcolor=\"#FFFFFF\">\r"); add ("<code>Last build on " + clock.now () + ".</code>"); bundle { <<popular pages local (lastRanking = user.webstar.lastRanking); user.webstar.lastranking = {}; local (colwidths = {50, 50, 0}); add ("<br><br><h2>The most popular pages</h2>"); add ("<blockquote>\r"); add ("<table cellpadding=2 border=0>\r"); on addRow (rowlist) { local (s = "", i); s = s + "<tr>"; for i = 1 to sizeof (rowlist) { if colwidths [i] != 0 { s = s + "<td width=" + colwidths [i] + "><code><center>" + rowlist [i] + "</center></code></td>"} else { s = s + "<td><code>" + rowlist [i] + "</code></td>"}}; s = s + "</tr>\r"; file.write (f, s)}; addRow ({"Rank", "Last", "Page"}); local (i, j, url, val, link, lastrankstring); local (ct = sizeof (user.webstar.urls)); local (lastitem = ct - user.webstar.ctreporturls + 1); if lastitem < 1 { lastitem = 1}; for i = ct downto lastitem { msg (i); val = user.webstar.urls [i]; if val > 1 { url = string.replaceall (nameof (user.webstar.urls [i]), ":", "/"); link = "<a href=\"" + "http://" + user.webstar.domainname + url + "\">" + url + "</a>"; lastrankstring = ""; for j = 1 to sizeof (lastranking) { if lastranking [j] == url { lastrankstring = j; break}}; addRow ({ct - i + 1, lastrankstring, link}); user.webstar.lastranking = user.webstar.lastranking + url}}; add ("</table>\r"); add ("</blockquote>\r")}; <<bundle <<active readers <<add ("<br><br><h2>The most active readers</h2>") <<add ("<blockquote>\r") <<add ("<pre>\r") <<add ("<b>reads\tuser\r\r</b>") <<for i = sizeof (user.webstar.hosts) downto 1 <<msg (i) <<val = user.webstar.hosts [i] <<if val > 1 <<file.write (f, val + "\t" + nameof (user.webstar.hosts [i]) + "\r") <<add ("</pre>\r") <<add ("</blockquote>\r") add ("</body>\r</html>"); file.close (f); filemenu.save ()}; bundle { <<test code writeReport ("jaz disk 1:tmp.html"); webbrowser.opendocument ("jaz disk 1:tmp.html")}
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.