Cleaned up some wackiness that was left over from the conversion from

Java to abjectscript: substitution happens differently and the way I left
it last night was less than ideal.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4476 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2006-12-07 21:28:15 +00:00
parent ad4f36729b
commit f9b2ef2d40
@@ -81,22 +81,24 @@ public /*abstract*/ class CurseFilter implements ChatFilter
return null; return null;
case COMIC: default: case COMIC: default:
replacement = String(_replacements[ii]).replace( replacement = comicChars(int(_comicLength[ii]));
/\ /g, comicChars(int(_comicLength[ii])));
break; break;
case VERNACULAR: case VERNACULAR:
var vern :String = String(_vernacular[ii]); replacement = String(_vernacular[ii]);
var firstChar :String = String(result[2]).charAt(0); // preserve the case of the first letter of the text
// we're replacing
if (StringUtil.isUpperCase(String(result[2]))) { if (StringUtil.isUpperCase(String(result[2]))) {
vern = vern.charAt(0).toUpperCase() + vern.substring(1); replacement = replacement.charAt(0).toUpperCase() +
replacement.substring(1);
} }
replacement = String(_replacements[ii]).replace(
/\ /g, vern);
break; break;
} }
replacement = replacement.replace("$1", String(result[1]));
replacement = replacement.replace("$3", String(result[3])); // sub in the replacement text, carrying over the pre/post
// matching groups
replacement = StringUtil.substitute(String(_replacements[ii]),
String(result[1]), replacement, String(result[3]));
// do the replacement. Note the jimmying of lastIndex: // do the replacement. Note the jimmying of lastIndex:
// abjectscript does not make this smooth! // abjectscript does not make this smooth!
@@ -130,27 +132,25 @@ public /*abstract*/ class CurseFilter implements ChatFilter
} }
var curse :String = String(bits[0]); var curse :String = String(bits[0]);
var s :String = ""; var sub :String = "";
var p :String = ""; var patPre :String = "()";
var patPost :String = "";
if (curse.charAt(0) == "*") { if (curse.charAt(0) == "*") {
curse = curse.substring(1); curse = curse.substring(1);
p += "([a-zA-Z]*)"; patPre = "([a-zA-Z]*)";
s += "$1"; sub += "{0}";
} else {
p += "()";
} }
s += " "; sub += "{1}";
p += " ";
if (curse.charAt(curse.length - 1) == "*") { if (curse.charAt(curse.length - 1) == "*") {
curse = curse.substring(0, curse.length - 1); curse = curse.substring(0, curse.length - 1);
p += "([a-zA-Z]*)"; patPost = "([a-zA-Z]*)";
s += "$3"; sub += "{2}";
} }
var regexp :RegExp = new RegExp( var regexp :RegExp = new RegExp(
"\\b" + p.replace(" ", "(" + curse + ")") + "\\b", "gi"); "\\b" + patPre + "(" + curse + ")" + patPost + "\\b", "gi");
_curseExps.push(regexp); _curseExps.push(regexp);
_replacements.push(s); _replacements.push(sub);
var slang :String = StringUtil.trim(String(bits[1])); var slang :String = StringUtil.trim(String(bits[1]));
slang = slang.replace(/_/g, " "); slang = slang.replace(/_/g, " ");