Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.export.importer
on importer (path) { <<a call to this script is saved with all exported objects <<it's run by Frontier.finder2Click when the user 2clicks on the file <<we import the object in the 'data' resource, into the object db <<if there is already an object with that name, we confirm <<then we edit the new object, so the user can see what he got Frontier.findertofront = false; <<Frontier should remain in front after importing local { resdata; <<holds the data received from resource fork cellname; <<object database name for the imported stuff adr}; <<address of object database cell for imported stuff if not rez.getnthresource (path, 'data', 1, @cellname, @resdata) { return (false)}; loop { <<get destination address from the user if not dialog.ask ("Name for imported object?", @cellname) { return (false)}; local (objname = nameOf (cellname^)); if objname == "" { <<cellname isn't interpretable as an address if not dialog.confirm ("Can't import to " + cellname + " because the table doesn't exist.") { return (false)}; continue}; <<try again if objname == cellname { <<avoid importing into a local adr = @root.[cellname]} else { adr = address (cellname)}; if defined (adr^) { <<confirm, we're going to over-write it if not dialog.yesNo ("Replace existing object named " + adr + "?") { continue}}; break}; bundle { <<double-unpack the data into the object database unpack (@resdata, @resdata); unpack (@resdata, @resdata); table.moveAndRename (@resdata, adr)}; if typeOf (adr^) == tableType { <<see if it has an importSuite script if defined (adr^.importSuite) { adr^.importSuite (adr); return (true)}}; <<suites can open themselves if they want return (edit (adr))} <<show the newly imported object
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.