summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/test/test11.rp20
-rw-r--r--src/main/java/bjc/everge/ControlledString.java2
-rw-r--r--src/main/java/bjc/everge/ReplPair.java8
-rw-r--r--src/test/java/bjc/everge/EvergeTest.java2
-rw-r--r--src/test/java/bjc/everge/ReplPairTest.java8
5 files changed, 36 insertions, 4 deletions
diff --git a/data/test/test11.rp b/data/test/test11.rp
new file mode 100644
index 0000000..35eb329
--- /dev/null
+++ b/data/test/test11.rp
@@ -0,0 +1,20 @@
+# Test of inline multi-line controls on the body
+#|//tt
+a
+//MT//b\
+c
+
+d
+//M/true//z|\
+a
+
+
+
+|//MT
+
+F\
+G
+//MF//q\
+p\
+o
+m \ No newline at end of file
diff --git a/src/main/java/bjc/everge/ControlledString.java b/src/main/java/bjc/everge/ControlledString.java
index aa1ea99..75e1fdc 100644
--- a/src/main/java/bjc/everge/ControlledString.java
+++ b/src/main/java/bjc/everge/ControlledString.java
@@ -60,6 +60,8 @@ public class ControlledString {
* @return The number of arguments to this control.
*/
public int count() {
+ if (args == null) return 0;
+
return args.length;
}
diff --git a/src/main/java/bjc/everge/ReplPair.java b/src/main/java/bjc/everge/ReplPair.java
index a8d1b0f..fa0a47b 100644
--- a/src/main/java/bjc/everge/ReplPair.java
+++ b/src/main/java/bjc/everge/ReplPair.java
@@ -294,7 +294,7 @@ public class ReplPair implements Comparable<ReplPair>, UnaryOperator<String> {
}
if (isMulti) {
- String tmp = readMultiLine(body, scn, ropts, errs, "body", lno);
+ String tmp = readMultiLine(body, scn, ropts, "body", lno);
if (tmp == null)
continue;
body = tmp;
@@ -424,7 +424,7 @@ public class ReplPair implements Comparable<ReplPair>, UnaryOperator<String> {
}
private static String readMultiLine(String lead, Scanner src, ReplOpts ropts,
- List<ReplError> errs, String typ, IntHolder lno) {
+ String typ, IntHolder lno) {
String tmp = lead;
if (ropts.isTrace && tmp.endsWith("\\"))
@@ -471,6 +471,8 @@ public class ReplPair implements Comparable<ReplPair>, UnaryOperator<String> {
return inp;
}
+ // FIXME :EndingSlash Ben Culkin 5/20/20
+ // In the event that replace ends with a \, that throws a confusing exception
String res = inp.replaceAll(find, replace);
return res;
@@ -685,7 +687,7 @@ public class ReplPair implements Comparable<ReplPair>, UnaryOperator<String> {
// Multi-line name with a trailer
if (isMulti) {
- String tmp = readMultiLine(name, scn, ropts, errs, "name", lno);
+ String tmp = readMultiLine(name, scn, ropts, "name", lno);
if (tmp == null)
return null;
name = tmp;
diff --git a/src/test/java/bjc/everge/EvergeTest.java b/src/test/java/bjc/everge/EvergeTest.java
index e9384cd..c99b15e 100644
--- a/src/test/java/bjc/everge/EvergeTest.java
+++ b/src/test/java/bjc/everge/EvergeTest.java
@@ -52,7 +52,7 @@ public class EvergeTest {
evg.setOutput(normOut);
evg.setError(normErr);
- evg.processArgs("--verbosity", "4", "-n");
+ evg.processArgs("--verbosity", "4");
List<String> errs = new ArrayList<>();
boolean stat = evg.processArgs(errs, "--input-status", "line", "--file",
"data/test/evg-test1.rp", "data/test/evg-test1.inp");
diff --git a/src/test/java/bjc/everge/ReplPairTest.java b/src/test/java/bjc/everge/ReplPairTest.java
index 6583855..43ae68a 100644
--- a/src/test/java/bjc/everge/ReplPairTest.java
+++ b/src/test/java/bjc/everge/ReplPairTest.java
@@ -90,4 +90,12 @@ public class ReplPairTest {
public void testGuards() {
assertMultiReplace("data/test/test10.rp", "a", "a", "bbb", "aaa");
}
+
+ @Test
+ public void testMultiControl() {
+ assertMultiReplace("data/test/test11.rp", "bc", "a", "z\na", "d", "m", "po");
+
+ // NOTE Uncomment when :EndingSlash is fixed
+ //assertMultiReplace("data/test/test11.rp", "q\\", "FG");
+ }
}