diff options
| author | Ben Culkin <scorpress@gmail.com> | 2023-06-23 19:48:49 -0400 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2023-06-23 19:48:49 -0400 |
| commit | 29db46041115065559a0d42f9a76ebb7c19424ea (patch) | |
| tree | 0bb2bd0d2ff6cb56302dba86e6d344653f047298 /clformat/src | |
| parent | 2df02c35b70f7e8077832470de9594b657f1be67 (diff) | |
Misc Updates
Diffstat (limited to 'clformat/src')
| -rw-r--r-- | clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java | 31 | ||||
| -rw-r--r-- | clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java | 7 |
2 files changed, 34 insertions, 4 deletions
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java b/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java index 61d88bf..7d8a67a 100644 --- a/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java +++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLParameters.java @@ -1,7 +1,10 @@ package bjc.utils.ioutils.format; import java.util.*; +import java.util.function.Function; +import bjc.data.Pair; +import bjc.data.TransformIterator; import bjc.esodata.*; import bjc.utils.parserutils.TokenUtils; @@ -28,6 +31,8 @@ public class CLParameters { private Map<String, CLValue> namedParams; private Map<String, Integer> nameIndices; + private Set<String> nonNumberedParams; + /** * Create a new set of blank CL format parameters. */ @@ -69,6 +74,9 @@ public class CLParameters { this.namedParams = namedParams; this.nameIndices = new HashMap<>(); + this.nonNumberedParams = new HashSet<>(); + + nonNumberedParams.addAll(namedParams.keySet()); abbrevWords = new HashSet<>(); nameAbbrevs = new AbbrevMap2(); @@ -135,7 +143,8 @@ public class CLParameters { } nameIndices.put(opt.toUpperCase(), idx); - + nonNumberedParams.remove(opt); + if (doRefresh) refreshAbbrevs(); } @@ -175,7 +184,8 @@ public class CLParameters { */ public static CLParameters fromDirective(String unsplit) { List<String> lParams = new ArrayList<>(); - + Set<String> nonIndexParams = new HashSet<>(); + StringBuilder currParm = new StringBuilder(); char prevChar = ' '; @@ -246,12 +256,16 @@ public class CLParameters { namedParams.put(paramName.toUpperCase(), actVal); if (setIndex) parameters.add(actVal); + else nonIndexParams.add(paramName); } else { parameters.add(parseParam(param)); } } - return new CLParameters(parameters.toArray(new CLValue[0]), namedParams); + CLParameters retVal = new CLParameters(parameters.toArray(new CLValue[0]), namedParams); + retVal.nonNumberedParams = nonIndexParams; + + return retVal; } // Actually parse the value for a parameter @@ -556,4 +570,15 @@ public class CLParameters { return sb.toString(); } + + /** + * Get an iterator over all of the named parameters not bound to an index. + * + * @return The described iterator + */ + public Iterator<Pair<String, CLValue>> getNonNumberedParams() { + return new TransformIterator<>(nonNumberedParams.iterator(), (val) -> { + return Pair.pair(val, namedParams.get(val)); + }); + } } diff --git a/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java b/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java index 250e52c..94bc5a1 100644 --- a/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java +++ b/clformat/src/test/java/bjc/utils/test/ioutils/CLFormatterTest.java @@ -28,7 +28,7 @@ public class CLFormatterTest { } @Test - public void testDecimalPrinting() { + public void testNumberPrinting() { // Test decimal printing assertEquals("5", format("~D", 5)); assertEquals(" 5", format("~3D", 5)); @@ -37,6 +37,11 @@ public class CLFormatterTest { } @Test + public void testDecimalPrinting() { + assertFormat("5.5", "~`D", 5.5); + } + + @Test public void testRadixPrinting() { // Test radix printing assertEquals("1 22", format("~3,,,' ,2:R", 17)); |
