Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.export.importFolder
on importFolder (folder) { <<Monday, February 23, 1998 at 10:58:34 AM by DW <<This script had never been updated for Frontier 5 or Windows. <<It could only read from the resource fork. Oops. <<Removed the first parameter, the address of the table we're going to import into. <<This never worked, because it depended on the folder name being the same as the table name. <<This can't be true due to limits in the file systems. <<Instead, we use the address that's stored in each of the files. local (f, flgotfile, flmac = sys.os () beginsWith "Mac"); fileloop (f in folder, infinity) { flgotfile = false; if flmac { try { //see if it's an old format, Frontier 4-compatible file local (adr); rez.getNthResource (f, 'data', 1, @adr, @resdata); msg (adr); unpack (@resdata, @resdata); unpack (@resdata, @resdata); table.moveAndRename (@resdata, adr); flgotfile = true}}; if not flgotfile { //not Mac or not resource-based file <<ugly -- we have to crib code because fatPages.importFatFile doesn't do a table.surePath local (pageSource = string (file.readwholeFile (f)), atts); pageSource = string.replaceAll (pageSource, cr + lf, cr); pageSource = string.replaceAll (pageSource, lf, cr); if not fatPages.getPageAtts (@pageSource, @atts) { scriptError ("The file, \"" + f + "\", does not contain an embedded object.")}; if not defined (atts.pageData) { scriptError ("The file, \"" + f + "\", does not contain an embedded object.")}; local (x = atts.objectType, objectType); local (prefix = "application/x-frontier-"); if not (x beginsWith prefix) { return (nil)}; objectType = string.delete (x, 1, sizeof (prefix)); local (data = binary (base64.decode (atts.pageData))); setBinaryType (@data, objectType); table.surePath (string (atts.adrPageData)); //here's the new bit that's not in fatPages.importFatFile unpack (@data, atts.adrPageData); msg (atts.adrPageData)}}}; <<bundle <<test code <<local (folder = "d:\\test\\") <<importfolder (folder) <<filemenu.save ()
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.