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:
@@ -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, " ");
|
||||||
|
|||||||
Reference in New Issue
Block a user