Wednesday, February 16, 2011 at 12:00 AM.


on writeFile (relpath, s, adruser=nil) {
		<<2/12/11; 1:48:49 PM by DW
			<<Instead of taking a file as a path, take a relative path, and we compute the file.
		<<11/9/10; 8:05:06 AM by DW
			<<Created. Write the file, then if the user defined callbacks, flow the content through them. 
	local (adrdata = river2suite.init (), f);
	f = adrdata^.prefs.static.folder + relpath;
	file.surefilepath (f);
	file.writewholefile (f, s);
	bundle { //mirror to S3, 2/12/11 by DW
		if adrdata^.prefs.static.flSynchToS3 {
			local (path = adrdata^.prefs.static.s3path + string.replaceall (relpath, file.getpathchar (), "/"));
			try {
				s3.newobject (path, s)}
			else {
				adrdata^.stats.static.whenLastS3Error = ()}}};
	if adruser != nil {
		local (adrscript);
		for adrscript in @adruser^.callbacks.afterStaticFileWrite {
			while typeof (adrscript^) == addresstype {
				adrscript = adrscript^};
			try {
				adrscript^ (f, s)}}}}

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.