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


on sendOSAScript (adr, fname) { <<create a script that can be double-clicked in the Finder
	<<the contents of an OSA script:
		<<a 'STR ' resource:
			<<130 -- the object db address of the script that was exported
		<<one 'scpt' resource:
			<<the script that's run when the file is double-clicked on
		<<see Frontier.clickers.typeosas for the other side of this script
	if not defined (adr^) { <<can't export something that doesn't exist
		scriptError ("Can't export because there's no object named " + adr + ".")};
	bundle { <<create the file, save the packed script
		local (resdata);
		local (type = typeOf (adr^)); (fname);
		file.setType (fname, 'osas');
		file.setCreator (fname, 'ToyS');
		osa.compile (adr, false, @resdata);
		rez.putresource (fname, 'scpt', 128, @resdata);
		rez.putstringresource (fname, 130, adr)}; <<address of object is a STR resource
	return (true)}

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.