This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-codec.git
The following commit(s) were added to refs/heads/master by this push: new 812d0200 Precompile and resuse regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map<Character, List<Rule>>, Map<Character, Character>) 812d0200 is described below commit 812d020064c29a64fea7a1075bd05436dd01dd24 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Mon May 19 10:13:53 2025 -0400 Precompile and resuse regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map<Character, List<Rule>>, Map<Character, Character>) --- src/changes/changes.xml | 1 + .../org/apache/commons/codec/language/DaitchMokotoffSoundex.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 447ae869..e8854a9e 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -49,6 +49,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor DigestUtils.updateDigest(MessageDigest, File) to use NIO.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory" issue="CODEC-328" >Clarify Javadoc for org.apache.commons.codec.digest.UnixCrypt.crypt(byte[],String).</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile and resuse x3 regular expression in DaitchMokotoffSoundex.Rule.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile and resuse regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map, Map).</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add HmacUtils.hmac(Path).</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Add HmacUtils.hmacHex(Path).</action> diff --git a/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java b/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java index dae4bdb3..06f256de 100644 --- a/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java +++ b/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java @@ -228,6 +228,10 @@ public class DaitchMokotoffSoundex implements StringEncoder { /** Folding rules. */ private static final Map<Character, Character> FOLDINGS = new HashMap<>(); + private static final Pattern EQUAL = Pattern.compile("="); + + private static final Pattern SPACES = Pattern.compile("\\s+"); + static { try (Scanner scanner = new Scanner(Resources.getInputStream(RESOURCE_FILE), CharEncoding.UTF_8)) { parseRules(scanner, RESOURCE_FILE, RULES, FOLDINGS); @@ -272,7 +276,7 @@ public class DaitchMokotoffSoundex implements StringEncoder { if (line.contains("=")) { // folding - final String[] parts = line.split("="); + final String[] parts = EQUAL.split(line); if (parts.length != 2) { throw new IllegalArgumentException("Malformed folding statement split into " + parts.length + " parts: " + rawLine + " in " + location); @@ -288,7 +292,7 @@ public class DaitchMokotoffSoundex implements StringEncoder { asciiFoldings.put(leftCharacter.charAt(0), rightCharacter.charAt(0)); } else { // rule - final String[] parts = line.split("\\s+"); + final String[] parts = SPACES.split(line); if (parts.length != 4) { throw new IllegalArgumentException("Malformed rule statement split into " + parts.length + " parts: " + rawLine + " in " + location);