diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2019-06-24 20:43:15 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2019-06-24 20:43:15 -0400 |
| commit | 7c2be35b2f08a9dd6341407acc5a8b28c48eba6c (patch) | |
| tree | a205802aa2d28240ee12475d6e3e97084acf90ad /src/main/java/bjc/everge/ReplPair.java | |
| parent | 39dad5c09e73a464c26086741d12dd62e5ebcc08 (diff) | |
Part I of factoring out controls
This is part one of factoring out controls and control parsing so that
we aren't doing it in three different places.
Two main things before this is done:
1. Finish up the parsing in ControlledString
2. Actually replace the old implementations in ReplPair
Diffstat (limited to 'src/main/java/bjc/everge/ReplPair.java')
| -rw-r--r-- | src/main/java/bjc/everge/ReplPair.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/bjc/everge/ReplPair.java b/src/main/java/bjc/everge/ReplPair.java index 2d2e115..904b1fa 100644 --- a/src/main/java/bjc/everge/ReplPair.java +++ b/src/main/java/bjc/everge/ReplPair.java @@ -761,4 +761,54 @@ public class ReplPair implements Comparable<ReplPair>, UnaryOperator<String> { return; } + + private static ControlledString getControls(String lne, List<ReplError> errs, + ReplOpts ropts, IntHolder lno, IntHolder pno, String type) { + if (!lne.startsWith("//")) { + return new ControlledString(lne); + } + + String tmp = lne.substring(2); + + String[] bits = StringUtils.escapeSplit("|", "//", lne); + + if (bits.length < 2) { + String msg = "Did not find control terminator (//) in %s where it should be"; + msg = String.format(msg, type); + + ReplError re = new ReplError(lno, pno, msg, lne); + errs.add(re); + + return null; + } + + ControlledString cs = new ControlledString(bits[0]); + + bits = StringUtils.escapeSplit("|", ";", bits[1]); + + cs.controls = new Control[bits.length]; + + for (int i = 0; i < bits.length; i++) { + String bit = bits[i]; + + String[] bots = StringUtils.escapeSplit("|", "/", bit); + + Control cont = new Control(bots[0]); + + if (cont.name.length() > 1) { + cont.name = cont.name.toUpperCase(); + } + + if (bots.length > 1) { + cont.args = new String[bots.length - 1]; + for (int j = 1; j < bots.length; j++) { + cont.args[j - 1] = bots[j]; + } + } + + cs.controls[i] = cont; + } + + return cs; + } } |
