Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.pikeRenderer.drivers.html.internalLink
on internalLink (url, linetext, adrprestring, adrpoststring, flsubs=true, permalinkstring="") { <<Changes <<5/27/02; 8:08:00 AM by DW <<Added permalink string, allow the renderer to tell us what to use for the permalink string. <<9/19/01; 11:42:05 AM by DW <<Added optional flsubs param. If true we use a smaller graphic for the internal link. <<Since these items can be quite long (they're not just headlines) we use string.hashmd5 to generate the label. <<http://docserver.userland.com/string/hashMD5 local (imgurl, imgwidth, imgheight, labelname, linktitle); if flsubs { imgurl = "http://www.scripting.com/images/leftArrow.gif"; imgwidth = 11; imgheight = 9; local (i, labelname = linetext, ch); for i = sizeof (labelname) downto 1 { ch = labelname [i]; if (not string.isalpha (ch)) and (not string.isnumeric (ch)) and (ch != ' ') { labelname = string.delete (labelname, i, 1)}}; labelname = string.innerCaseName (labelname); linktitle = "Permanent link to '" + linetext + "' in archive."; adrpoststring^ = "<a name=\"" + labelname + "\"> </a>" + "<a href=\"" + url + "#" + labelname + "\" title=\"" + linktitle + "\">" + "<img src=\"" + imgurl + "\" height=\"" + imgheight + "\" width=\"" + imgwidth + "\" border=\"0\"></a>" + adrpoststring^} else { imgurl = "http://www.scripting.com/images/2001/09/20/sharpPermaLink3.gif"; imgwidth = 6; imgheight = 9; bundle { //set labelname if permalinkstring == "" { <<According to Jim Roepcke, a label can't begin with a numeric character <<http://jim.roepcke.com/2001/09/20#item2805 labelname = "l" + string.hashmd5 (linetext)} else { labelname = permalinkstring}}; linktitle = "Permanent link to this item in archive."; adrprestring^ = adrprestring^ + "<a name=\"" + labelname + "\">"; adrpoststring^ = " <a href=\"" + url + "#" + labelname + "\" title=\"" + linktitle + "\">" + "<img src=\"" + imgurl + "\" height=\"" + imgheight + "\" width=\"" + imgwidth + "\" border=\"0\"></a>" + adrpoststring^}}
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.