From 29db46041115065559a0d42f9a76ebb7c19424ea Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Fri, 23 Jun 2023 19:48:49 -0400 Subject: Misc Updates --- .../bjc/utils/ioutils/format/CLParameters.java | 31 +++++++++++++++++++--- .../bjc/utils/test/ioutils/CLFormatterTest.java | 7 ++++- 2 files changed, 34 insertions(+), 4 deletions(-) (limited to 'clformat/src') 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 namedParams; private Map nameIndices; + private Set 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 lParams = new ArrayList<>(); - + Set 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> 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)); @@ -36,6 +36,11 @@ public class CLFormatterTest { assertEquals("6|55|35", format("~,,'|,2:D", 0xFFFF)); } + @Test + public void testDecimalPrinting() { + assertFormat("5.5", "~`D", 5.5); + } + @Test public void testRadixPrinting() { // Test radix printing -- cgit v1.2.3