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 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'clformat/src/main') 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)); + }); + } } -- cgit v1.2.3