Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.writeFile
on writeFile (f, adrData, type=nil, creator=nil, creationDate=nil, adrPageTable=nil) { <<4/14/98 by PBS: New in 5.1. Bottleneck script for writing files. <<Use this instead of file.writeWholeFile. <<This script is key to supporting rendering to places other than the file system. <<Change notes: <<Added file.sureFilePath call for previews. <<Tue, Aug 11, 1998 at 9:06:19 PM by PBS local (adrFtpSite, adrScript, adrStorage); local (method, path); if adrPageTable == nil { adrPageTable = html.getPageTableAddress ()}; <<Don't write a file if this is a dynamic page. <<Return quickly. if defined (adrPageTable^.requestHeaders) { return}; adrStorage = html.getFileWriterStorage (); if not defined (adrStorage^) { //not using fileWriters framework return (file.writeWholeFile (f, adrData^, type, creator, creationDate))}; if adrPageTable == nil { adrPageTable = html.getPageTableAddress ()}; if creationDate == nil { creationDate = clock.now ()}; <<Is this a preview? Previews are always written to disk. if defined (adrPageTable^.flPreview) and (adrPageTable^.flPreview) { adrStorage^.flPreview = true; //html.callFileWriterShutdown looks for this file.sureFilePath (f); return (file.writeWholeFile (f, adrData^, type, creator, creationDate))}; <<Get the FTP site and transport method. method = adrPageTable^.fileWriter; <<Get the address of the file writer script. bundle { try { adrScript = adrStorage^.adrWriteScript} else { if not defined (user.html.fileWriters) { new (tableType, @user.html.fileWriters)}; if defined (user.html.fileWriters.[method]) { adrScript = @user.html.fileWriters.[method].write} else { if defined (html.fileWriters.[method]) { adrScript = @html.fileWriters.[method].write}}; adrStorage^.adrWriteScript = adrScript}}; <<Convert the disk path to a relative, slash-delimited path. bundle { local (folder); try { folder = adrPageTable^.siteRootFolder} else { folder = html.getSiteFolder (adrPageTable); adrPageTable^.siteRootFolder = folder}; adrStorage^.siteFolder = folder; path = string.mid (f, sizeOf (folder), infinity); path = string.replaceAll (path, file.getPathChar (), "/"); if path beginsWith "/" { path = string.mid (path, 2, infinity)}}; <<Call the file writer script. return (adrScript^ (adrData, path, type, creator, creationDate, adrPageTable, adrStorage))}
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.