Thursday, November 18, 2010 at 12:01 AM.
system.verbs.builtins.tcp.equalNames
on equalNames (name1, name2) { //return true if they're the same node on the net <<Changes <<11/17/10; 9:32:14 PM by DW <<An ancient routine that is called a lot and can be made much faster. <<First step, compare the names before doing any normalizing. If they're equal, just return true without any normalizing. <<Second step, use tcp.dns.getdottedid, instead of cooking our own conversion. Big advantage, we get to use its cache in system.temp table. :-) bundle { //shortcut all the fancy stuff, 11/17/10 by DW if string.lower (name1) == string.lower (name2) { return (true)}}; on normalizeName (name) { //turn the name into a dotted id try { local (i, seg); for i = 1 to 4 { seg = number (string.nthField (name, '.', i)); if seg > 255 { return (tcp.addressDecode (tcp.nameToAddress (name)))}}; return (name)} //it's already a dotted id else { return (tcp.dns.getdottedid (name))}}; <<name = tcp.nameToAddress (name) <<return (tcp.addressDecode (name)) name1 = normalizeName (name1); name2 = normalizeName (name2); return (name1 == name2)}; bundle { //test code dialog.alert (equalNames ("www.userland.com", "206.204.24.11")); dialog.alert (equalNames ("www.scripting.com", "206.204.24.4"))}
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.