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

system.verbs.builtins.radio.utilities.findObsoleteStuff

<<6/16/01; 10:17:24 AM by DW
	<<A utility that searches all the source code for a string, listing occurrences outside of comments and radio.init.

if dialog.ask ("What string would you like to search for?", @scratchpad.lastsearchstring) {
	local (lowerSearchString = string.lower (scratchpad.lastsearchstring)); //PBS 02/22/01: case-insensitive
	local (ct = 0);
	local (adroutline = @scratchpad.objectsThatContainString, insertdir = right);
	bundle { //set up the outline
		new (outlinetype, adroutline); edit (adroutline);
		target.set (adroutline);
		op.firstsummit ();
		op.setlinetext ("Objects that contain \"" + scratchpad.lastsearchstring + "\" on " + clock.now () + ":")};
	window.about ();
	on dotable (adrtable) {
		on addadr (adr) {
			if adr == @scratchpad.lastsearchstring {
				return};
			local (s = string (adr));
			local (pattern = "\"].");
			local (ix = string.patternmatch (pattern, s));
			if ix > 0 {
				s = string.delete (s, 1, ix + sizeof (pattern) - 1)};
			op.insert (s + " (" + sizeof (adr^) + ")", insertdir); insertdir = down};
		local (adr);
		for adr in adrtable {
			case typeof (adr^) {
				tabletype {
					dotable (adr)}}
			else {
				try {
					if string.lower (string (adr^)) contains lowerSearchString { //PBS 02/22/01: case-inensitive
						addadr (adr)}}};
			if (++ct % 1000) == 0 {
				msg (ct);
				filemenu.save ()}};
		return (true)};
	dotable (@radio);
	op.firstsummit ();
	edit (adroutline);
	msg ("")}



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.