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);

Reply via email to