Skip to content

Commit 812d020

Browse files
committed
Precompile and resuse regular expressions in
DaitchMokotoffSoundex.parseRules(Scanner, String, Map<Character, List<Rule>>, Map<Character, Character>)
1 parent ab7a850 commit 812d020

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/changes/changes.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ The <action> type attribute can be add,update,fix,remove.
4949
<action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor DigestUtils.updateDigest(MessageDigest, File) to use NIO.</action>
5050
<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>
5151
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile and resuse x3 regular expression in DaitchMokotoffSoundex.Rule.</action>
52+
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile and resuse regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map, Map).</action>
5253
<!-- ADD -->
5354
<action type="add" dev="ggregory" due-to="Gary Gregory">Add HmacUtils.hmac(Path).</action>
5455
<action type="add" dev="ggregory" due-to="Gary Gregory">Add HmacUtils.hmacHex(Path).</action>

src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@ public String toString() {
228228
/** Folding rules. */
229229
private static final Map<Character, Character> FOLDINGS = new HashMap<>();
230230

231+
private static final Pattern EQUAL = Pattern.compile("=");
232+
233+
private static final Pattern SPACES = Pattern.compile("\\s+");
234+
231235
static {
232236
try (Scanner scanner = new Scanner(Resources.getInputStream(RESOURCE_FILE), CharEncoding.UTF_8)) {
233237
parseRules(scanner, RESOURCE_FILE, RULES, FOLDINGS);
@@ -272,7 +276,7 @@ private static void parseRules(final Scanner scanner, final String location,
272276

273277
if (line.contains("=")) {
274278
// folding
275-
final String[] parts = line.split("=");
279+
final String[] parts = EQUAL.split(line);
276280
if (parts.length != 2) {
277281
throw new IllegalArgumentException("Malformed folding statement split into " + parts.length +
278282
" parts: " + rawLine + " in " + location);
@@ -288,7 +292,7 @@ private static void parseRules(final Scanner scanner, final String location,
288292
asciiFoldings.put(leftCharacter.charAt(0), rightCharacter.charAt(0));
289293
} else {
290294
// rule
291-
final String[] parts = line.split("\\s+");
295+
final String[] parts = SPACES.split(line);
292296
if (parts.length != 4) {
293297
throw new IllegalArgumentException("Malformed rule statement split into " + parts.length +
294298
" parts: " + rawLine + " in " + location);

0 commit comments

Comments
 (0)