Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.data.processMacrosCallback
on dosc (s) { <<runs a macro, for the html suite local (adrPageTable = html.getPageTableAddress ()); if html.getPref ("processMacros", adrPageTable) { <<new pref in 4.1 local (toolTableAdr, nilTable); if defined (adrPageTable^.tools) { toolTableAdr = adrPageTable^.tools} else { <<'with' wants a table new (tableType, @nilTable); toolTableAdr = @nilTable}; try { local (macroResult); with adrPageTable^, html.data.standardMacros, user.html.macros, toolTableAdr^ { macroResult = string (evaluate (s))}; if (macroResult beginsWith '"') and (macroResult endsWith '"') { if html.getPref ("expandGlossaryItems", adrPageTable) { macroResult = string.mid (macroResult, 2, sizeOf (macroResult) - 2); macroResult = html.refGlossary (macroResult)}}; return (macroResult)} else { local (errorString = html.cleanForExport (tryError, adrPageTable)); if html.getPref ("logMacroErrors", adrPageTable) { local (adroutline = @user.html.macroErrors); if not defined (adroutline^) { new (outlineType, adroutline)}; local (oldtarget = target.get ()); edit (adroutline); target.set (adroutline); op.firstSummit (); local (adr = adrPageTable^.adrObject); local (linetext = op.getLineText ()); local (message = "Error rendering \"" + adr + "\" at " + string.timeString ()); if linetext == "" { op.setLineText (message)} else { op.insert (message, up)}; op.insert (errorString, right); op.insert ("Macro string: {" + s + "}", down); // PBS: add the macro string try {target.set (oldtarget)}}; scriptError (errorString)}} else { return ("{" + s + "}")}}; on refg (name) { <<turn a glossary entry name into a string for insertion into HTML text local (adrPageTable = html.getPageTableAddress ()); if html.getPref ("expandGlossaryItems", adrPageTable) { return (html.refGlossary (name))} else { scriptError ("glossary expansion off")}} <<tell macroprocessor to ignore
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.