Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.opmlEditor.runScriptsFolder
on runScriptsFolder () {
<<Changes
<<12/28/09; 8:29:31 AM by DW
<<Implement Scripts folder, a sub-folder of Guest Databases/ops that contains scripts that run every minute, every hour and once every night.
local (basepath = "/ops/scripts/");
on runFolder (name) {
local (folder = frontier.getsubfolder (basepath + name + "/"), f, adrcounter);
file.surefilepath (folder + "xxx");
bundle { //set adrcounter
local (capname = string.upper (name [1]) + string.delete (name, 1, 1));
adrcounter = @user.opmlEditor.stats.runScriptsFolder.["ct" + capname + "Scripts"];
if not defined (adrcounter^) {
adrcounter^ = 0}};
fileloop (f in folder) {
try {
local (s = string (file.readWholeFile (f)));
s = string.replaceall (s, "\n", "");
evaluate (s);
adrcounter^++}
else {
new (tabletype, @user.opmlEditor.stats.runScriptsFolder.lastScriptError);
user.opmlEditor.stats.runScriptsFolder.lastScriptError.s = tryerror;
user.opmlEditor.stats.runScriptsFolder.lastScriptError.when = clock.now ();
user.opmlEditor.stats.runScriptsFolder.lastScriptError.f = f}}};
if user.opmlEditor.prefs.flScriptsFolderEnabled {
if file.exists (frontier.getsubfolder ("/ops/scripts/")) {
local (now = clock.now (), day, month, year, hour, minute, second);
date.get (now, @day, @month, @year, @hour, @minute, @second);
runFolder ("everyMinute");
if hour != user.opmlEditor.stats.runScriptsFolder.lastHourlyScriptHour {
user.opmlEditor.stats.runScriptsFolder.lastHourlyScriptHour = hour;
runFolder ("hourly")};
if not date.sameday (now, user.opmlEditor.stats.runScriptsFolder.whenLastOverNightScriptRun) {
user.opmlEditor.stats.runScriptsFolder.whenLastOverNightScriptRun = now;
runFolder ("overnight")}}}};
bundle { //test code
runScriptsFolder ()}
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.