summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/IteratedDefine.java46
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/SimpleDefine.java23
2 files changed, 69 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/IteratedDefine.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/IteratedDefine.java
new file mode 100644
index 0000000..74c4db8
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/IteratedDefine.java
@@ -0,0 +1,46 @@
+package bjc.utils.parserutils.defines;
+
+import java.util.function.UnaryOperator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import bjc.utils.data.CircularIterator;
+
+public class IteratedDefine implements UnaryOperator<String> {
+ private Pattern patt;
+
+ private Iterator<String> repls;
+
+ /**
+ * Create a new iterated define.
+ *
+ * @param pattern
+ * The pattern to use for matching.
+ * @param circular
+ * Whether or not to loop through the list of replacers, or just
+ * repeat the last one.
+ * @param repls
+ * The set of replacers to use.
+ */
+ public IteratedDefine(Pattern pattern, boolean circular, String... replacers) {
+ patt = pattern;
+
+ repls = new CircularIterator(Arrays.asList(replacers), circular);
+ }
+
+ @Override
+ public String apply(String ln) {
+ Matcher mat = patt.matcher(ln);
+ StringBuffer sb = new StringBuffer();
+
+ while(mat.find()) {
+ String repl = repls.next();
+
+ mat.appendReplacement(sb, repl);
+ }
+
+ mat.appendTail(sb);
+
+ return sb.toString();
+ }
+}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/SimpleDefine.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/SimpleDefine.java
new file mode 100644
index 0000000..42866c2
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/defines/SimpleDefine.java
@@ -0,0 +1,23 @@
+package bjc.utils.parserutils.defines;
+
+import java.util.function.UnaryOperator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SimpleDefine implements UnaryOperator<String> {
+ private Pattern patt;
+ private String repl;
+
+ public SimpleDefine(Pattern pattern, String replace) {
+ patt = pattern;
+
+ repl = replace;
+ }
+
+ @Override
+ public String apply(String line) {
+ Matcher mat = patt.matcher(line);
+
+ return mat.replaceAll(repl);
+ }
+}