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


on elimDupTextAtt (opmltext) {
		<<7/4/10; 1:45:06 PM by DW
			<<In some cases there's a second text attribute on the summit headline of the outline we're saving. It's the second one we want to get rid of.
	local (xstruct);
	xml.compile (opmltext, @xstruct);
	opmltext = xml.decompile (@xstruct);
	<<local (lo, title)
	<<op.xmltooutline (opmltext, @lo)
	<<bundle //set title
		<<local (oldtarget = target.set (@lo))
		<<op.firstsummit ()
		<<title = op.getlinetext ()
	<<opmltext = op.outlinetoxml (@lo)
	wp.newtextobject (opmltext, @scripting2Suite.hacks.opmltextPostHack);
	return (opmltext);
	local (pat = "\" text=\"", ix = string.patternmatch (pat, opmltext));
	if ix > 0 {
		local (i);
		<<wp.newtextobject (opmltext, @scripting2suite.hacks.opmltextPreHack)
		for i = ix + sizeof (pat) to sizeof (opmltext) {
			ch = opmltext [i];
			if opmltext [i] == '"' {
				local (ixstartdelete = ix + 2);
				opmltext = string.delete (opmltext, ixstartdelete, i - ixstartdelete + 2);
				<<wp.newtextobject (opmltext, @scripting2Suite.hacks.opmltextPostHack)
	return (opmltext)};
bundle { //test code
	local (s = string (scripting2Suite.hacks.opmltextPreHack));
	webbrowser.displaytext ("<pre>" + string.replaceall (elimDupTextAtt (s), "<", "<") + "</pre>")}

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.