Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.re.testing.replaceWithCallback
on iso8859Decode (s) {
<<Does the reverse of string.iso8859Encode ().
<<Converts HTML entities to ASCII chars in your machine's charset.
on hexEncode (s) {
local (result = "", i);
for i = 1 to sizeof (s) {
result = result + string.mid (string.hex (s [i]), 5, 2)};
return (result)};
on deEntify (adrTable, adrString) {
local (key);
key = hexEncode (adrTable^.matchString);
if (defined (regex.examples.data.entities2ascii.[key])) {
adrString^ = regex.examples.data.entities2ascii.[key]}
else {
adrString^ = adrTable^.matchString};
return(true)};
local (result = s);
patternRef = re.compile ("\\[[^]]+\\]");
result = re.replace (patternRef, "[xxx]", result, adrCallback:@deEntify);
patternRef = re.compile ("&[a-zA-z]+;");
result = re.replace (patternRef, "[xxx]", result, adrCallback:@deEntify);
return(result)};
local (s = "ÊÍÇ[<][>]");
local (x);
x = s + " decodes to: " + iso8859Decode (s);
wp.newTextObject (x, @temp.text);
edit (@temp.text)
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.