Saturday, April 02, 2011 at 9:18 PM.
feedhoseSuite.client.write
on write (hosename) { <<Changes <<9/29/10; 2:52:21 PM by DW <<Added hosename param. local (adrdata = feedHoseSuite.init (), maxct = 250, ct = 0, htmltext = "", indentlevel = 0, now = clock.now (), feedtitlecolor = "gray"); local (adrhose = feedhosesuite.client.inithose (hosename)); adrhose^.stats.ctWrites++; adrhose^.stats.whenLastWrite = now; bundle { //generate htmltext local (lastfeedtitle = ""); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"}; on decode (s) { return (xml.entitydecode (s, flAlphaEntities:true, flDecodeHexEntities:true))}; on visit (adritem) { local (title = decode (xml.getvalue (adritem, "title")), link); <<scratchpad.adritem = adritem bundle { //set link if not defined (adritem^.link) { adritem^.link = tcp.httpderef (decode (xml.getvalue (adritem, "link")))}; link = adritem^.link}; try { local (description = string.trimwhitespace (decode (xml.getvalue (adritem, "description")))); bundle { //fix up title local (s = string.trimwhitespace (string.addPeriodToSentence (title))); local (chlast = s [sizeof (s)], when); s = string.delete (s, sizeof (s), 1); local (feedTitle = decode (xml.getvalue (adritem, "feedTitle"))); feedTitle = string.trimwhitespace (string.nthfield (feedTitle, ">", 2)); feedTitle = string.replace (feedTitle, "Most Recent Headlines", "Realtime Feed"); local (feedUrl = decode (xml.getvalue (adritem, "feedUrl"))); local (feedlink = "<font size=\"-1\"><a href=\"" + feedurl + "\">" + feedtitle + "</a>.</font>"); <<bundle //add feed title, if it changed <<if feedtitle contains "Electronista" <<msg ("break") <<if feedTitle != lastfeedtitle <<local (s = string.replace (feedtitle, "NYT > ", "")) <<add ("<h4>" + s + " -- " + date.viewDate (timecreated (adritem)) + "</h4>") <<lastfeedtitle = feedTitle bundle { //set when when = timecreated (adritem); when = date.timestring (when, false) - " "; when = "<font size=\"-1\">" + when + ".</font>"}; <<add ("<tr>"); indentlevel++ <<add ("<td valign=\"top\">" + when + "</td>") <<add ("<td valign=\"top\"><a href=\"" + link + "\">" + s + "</a>" + chlast + " " + description + "</td>") <<add ("</tr>"); indentlevel-- add ("<p><a href=\"" + link + "\">" + s + "</a>" + chlast + " " + description + " " + when + " " + feedlink + "</p>")}; return (++ct < maxct)} else { add ("<p>" + tryerror + "</p>")}}; <<add ("<p>" + clock.now () + "</p>") <<add ("<table cellspacing=\"7\" cellpadding=\"0\">"); indentlevel++ mainresponder.calendar.visitReverseChronologic (@adrhose^.calendar, @visit)}; <<add ("</table>"); indentlevel-- bundle { //flow through template local (t); new (tabletype, @t); t.title = adrhose^.prefs.title; t.programName = "FeedHose tool v" + feedhoseInfo.version; t.bodytext = htmltext; t.now = now; htmltext = string.multiplereplaceall (string (feedhoseSuite.client.template), @t, false, "<%", "%>")}; bundle { //write to the file local (f = adrhose^.prefs.fHtml); if sizeof (f) > 0 { //2/12/11 by DW file.surefilepath (f); file.writewholefile (f, htmltext)}}; return (htmltext)}; bundle { //test code write ("tech")}
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.