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.