Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.Finder.finderSpec
on finderSpec (path) { << Generally used ONLY by other Finder.xxx () scripts. Assumes Scriptable Finder <<There's a tradeoff here: it would be more efficient to simply pass a list <<which contains no strings and at least one alias or file spec to Finder <<in a single Finder.get (). However, that would fail if the list did <<contain one or more path strings. <<The difference could be detected in a pre-pass over the list <<(which could also be used to detect a list containing only object specs,) <<which could be returned unchanged) case typeOf (path) { objSpecType { << already what is wanted return (path)}; string4Type { << just make it an object spec, trusting caller objSpec (path)}; '????' { << nil, just return it return (path)}; stringType; << Fall-thru intended. Left Finder do the hard stuff filespecType { return (appleEvent (Finder.id, 'core', 'getd', '----', alias (path)))}; listType { local (ix, needsFinder = false, hasObjspec = false); for ix = 1 to sizeof (path) { case typeOf (path[ix]) { filespecType; << Fall-thru intended stringType { path[ix] = alias (path[ix]); needsFinder = true}; objspecType { hasObjspec = true; continue}} else { needsFinder = true}}; if needsFinder { if hasObjspec { << cannot just pass list to Finder, because of objspecs local (result = {}, x); for x in path { if typeOf (x) == objspecType { result = result + x} else { result = result + appleEvent (Finder.id, 'core', 'getd', '----', x)}}; return (result)} else { return (appleEvent (Finder.id, 'core', 'getd', '----', path))}} else { return (path)}}} else { << Finder can deal with alias...others are an error return (appleEvent (Finder.id, 'core', 'getd', '----', path))}}
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.