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.