Skip to content

Commit 03bb744

Browse files
fsteegblackwinter
andcommitted
Replace reserved fields in path with pattern, in single step (#218)
Co-authored-by: Jens Wille <[email protected]>
1 parent 1a39883 commit 03bb744

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

metafix/src/main/java/org/metafacture/metafix/FixPath.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.Arrays;
2323
import java.util.HashMap;
2424
import java.util.Map;
25+
import java.util.regex.Pattern;
26+
import java.util.stream.Collectors;
2527

2628
/**
2729
* Our goal here is something like https://metacpan.org/pod/Catmandu::Path::simple
@@ -33,6 +35,8 @@
3335
*/
3436
/*package-private*/ class FixPath {
3537

38+
/*package-private*/ static final Pattern RESERVED_FIELD_PATTERN = Pattern.compile(String.format("(?:%s)",
39+
Arrays.stream(ReservedField.values()).map(f -> Pattern.quote(f.name())).collect(Collectors.joining("|"))));
3640
private static final String ASTERISK = "*";
3741
private String[] path;
3842

@@ -299,7 +303,7 @@ private String[] tail(final String[] fields) {
299303
return Arrays.copyOfRange(fields, 1, fields.length);
300304
}
301305

302-
/*package-private*/ enum ReservedField {
306+
private enum ReservedField {
303307
$append, $first, $last;
304308

305309
private static final Map<String, ReservedField> STRING_TO_ENUM = new HashMap<>();

metafix/src/main/java/org/metafacture/metafix/Value.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.metafacture.metafix;
1818

1919
import org.metafacture.commons.tries.SimpleRegexTrie;
20-
import org.metafacture.metafix.FixPath.ReservedField;
2120

2221
import java.util.ArrayList;
2322
import java.util.Collection;
@@ -209,10 +208,7 @@ public Value asList(final Consumer<Array> consumer) {
209208

210209
/*package-private*/ Value updatePathRename(final String newName) {
211210
if (path != null) {
212-
final String basePath = split(path)[0];
213-
for (final ReservedField rf : ReservedField.values()) {
214-
path = newName.replace(rf.name(), basePath);
215-
}
211+
path = FixPath.RESERVED_FIELD_PATTERN.matcher(newName).replaceAll(Matcher.quoteReplacement(split(path)[0]));
216212
}
217213
return this;
218214
}

0 commit comments

Comments
 (0)