Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.utilities.renderStyleSheet
on renderStyleSheet (adrOutline, adrPageTable=nil) { <<Given the address of an outline, render it as a CSS style sheet. <<PBS 5/14/98. <<Added op.setDisplay (false) and (true) <<at the suggestion of Seth Dillingham, 5/15/98. local (oldtarget, htmlText = ""); local (level = 0, lastLevel = 0); if adrPageTable == nil { adrPageTable = html.getPageTableAddress ()}; on add (s) { htmlText = htmlText + s}; oldtarget = target.set (adrOutline); op.setDisplay (false); op.firstSummit (); op.fullexpand (); on visit () { loop { local (hasSubs = op.countSubs (1) > 0); local (s = op.getLineText ()); case level { 0 { //a style element like h2 or td or pre if lastLevel == 2 { //strip trailing ; and add }\r htmlText = string.mid (htmlText, 1, sizeOf (htmlText) - 1); add ("}\r")}; add (s + " {")}; 1 { //the attribute to set add ("\r\t" + s + ": ")}; 2 { //the value for the attribute if lastLevel == 2 { //strip off trailing ; htmlText = string.delete (htmlText, sizeOf (htmlText), 1); add (", ")}; add (s + ";")}}; lastLevel = level; if hasSubs { op.go (right, 1); level++; visit (); level--; op.go (left, 1)}; if not op.go (down, 1) { break}}}; visit (); //render the outline op.setDisplay (true); try {target.set (oldtarget)}; //restore the target bundle { //strip off trailing ; and add } htmlText = string.mid (htmlText, 1, sizeOf (htmlText) - 1); add ("}")}; if html.getPref ("addLineFeeds", adrPageTable) { //add line feeds if pref is set htmlText = string.replaceAll (htmlText, "\r", "\r\n")}; 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.