Monday, November 08, 2010 at 12:03 AM.

on installNewTools () {
	<<Install any new Tools in the Tools folder. Return a list of file paths of any new Tools that were installed.
		<<01/06/01; 3:37:49 PM by PBS
			<<2/24/01; 2:19:45 PM by PBS
				<<If a tool does not have a table in, create it. This prevents opening and closing disabled tools every 10 seconds, which interrupts typing and causes screen flashing.
	local (newTools = {});
	local (toolsFolder = ());
	local (f);
	fileloop (f in toolsFolder) {
		local (fname = file.fileFromPath (f));
		local (shortName = string.popSuffix (fname));
		if string.lower (fname) endsWith ".root" {
			if not (defined ([f])) { //is it a new tool?
				if not defined ([shortName]) {
					if (f) { (f);
						newTools = newTools + f}
					else { //PBS 02/24/01: set up table for this tool; this prevents opening it every 10 seconds
						local (adrTable =[shortName]);
						local (t);
						new (tableType, @t);
						t.flInstalled = false;
						t.lastModified = file.modified (f);
						t.path = f;
						adrTable^ = t}}}}};
	return (newTools)} //list of file paths of new Tools installed

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.