Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.export.sendFolder
on sendFolder (adr, folder) { //new in 4.0.1
if file.exists (folder) {
if file.isFolder (folder) {
file.deleteFolder (folder)}
else {
file.delete (folder)}};
on doTable (adrtable, folder) {
on cleanFileName (adr, isFolder=false) {
<<Monday, March 02, 1998 at 12:20:00 AM by PBS
<<Add suffixes on Windows -- Macs too if pref is set.
local (name = nameOf (adr^));
local (maxlen, pathchar = file.getPathChar ());
case sys.os () {
"WinNT";
"Win95" {
maxlen = 250};
"MacOS" {
maxlen = 26}};
if isFolder {
maxlen = maxlen + 5};
if sizeof (name) > maxlen {
name = string.mid (name, 1, maxlen)};
if not isFolder {
case sys.os () {
"WinNT";
"Win95" {
name = name + "." + frontier.getFileSuffix (typeOf (adr^))};
"MacOS" {
if not defined (user.prefs.appendFileSuffixes) {
user.prefs.appendFileSuffixes = false};
if user.prefs.appendFileSuffixes {
name = name + "." + string.lower (frontier.getFileType (typeOf (adr^)))}}}};
name = string.replaceAll (name, pathchar, "-");
return (name)};
local (ct = sizeof (adrtable^), i);
file.sureFolder (folder);
for i = 1 to ct {
local (adr = @adrtable^ [i]);
local (name = nameOf (adr^));
<<if sizeof (name) > 31
<<name = string.mid (name, 1, 31)
name = cleanFileName (adr, (typeOf (adr^) == tableType));
name = string.replaceAll (name, file.getPathChar (), "-");
name = string.replaceAll (name, "/", "-"); //Frontier/Win chokes on /s too
local (f = folder + name);
if typeOf (adr^) == tableType {
doTable (adr, f + file.getPathChar ())}
else {
msg (adr);
export.sendObject (adr, f);
if sys.os () == "MacOS" { //file.setModified is failing silently on Windows
local (moddate = timeModified (adr));
if typeOf (moddate) == dateType {
file.setModified (f, moddate);
file.setCreated (f, timeCreated (adr))}}}}};
return (doTable (adr, folder))}
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.