Cache regex instances in most cases (#27699)
Using static Regex functions that take in a pattern is bad because the pattern constantly needs to be re-parsed. With https://github.com/space-wizards/RobustToolbox/pull/5107, the engine has an analyzer to warn for this practice now. This commit brings most of content up to snuff already, though some of the tricker code I left for somebody else.
This commit is contained in:
committed by
GitHub
parent
70d3cf7ba4
commit
4a2a63a86b
@@ -5,6 +5,12 @@ namespace Content.Server.Speech.EntitySystems;
|
||||
|
||||
public sealed class LizardAccentSystem : EntitySystem
|
||||
{
|
||||
private static readonly Regex RegexLowerS = new("s+");
|
||||
private static readonly Regex RegexUpperS = new("S+");
|
||||
private static readonly Regex RegexInternalX = new(@"(\w)x");
|
||||
private static readonly Regex RegexLowerEndX = new(@"\bx([\-|r|R]|\b)");
|
||||
private static readonly Regex RegexUpperEndX = new(@"\bX([\-|r|R]|\b)");
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -16,15 +22,15 @@ public sealed class LizardAccentSystem : EntitySystem
|
||||
var message = args.Message;
|
||||
|
||||
// hissss
|
||||
message = Regex.Replace(message, "s+", "sss");
|
||||
message = RegexLowerS.Replace(message, "sss");
|
||||
// hiSSS
|
||||
message = Regex.Replace(message, "S+", "SSS");
|
||||
message = RegexUpperS.Replace(message, "SSS");
|
||||
// ekssit
|
||||
message = Regex.Replace(message, @"(\w)x", "$1kss");
|
||||
message = RegexInternalX.Replace(message, "$1kss");
|
||||
// ecks
|
||||
message = Regex.Replace(message, @"\bx([\-|r|R]|\b)", "ecks$1");
|
||||
message = RegexLowerEndX.Replace(message, "ecks$1");
|
||||
// eckS
|
||||
message = Regex.Replace(message, @"\bX([\-|r|R]|\b)", "ECKS$1");
|
||||
message = RegexUpperEndX.Replace(message, "ECKS$1");
|
||||
|
||||
args.Message = message;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user