X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FArgParser.java;h=12e1b1d5d418a569836b51b84cc59114f24d671d;hb=ccc53e88e3260886f5d3bdacc619c0f374be9b8f;hp=fe73053b33a219a8f8d191eaf3c1d3d940af2f35;hpb=7cef06600140ffeb5a989117113d510742b9aa5e;p=jalview.git diff --git a/src/jalview/bin/argparser/ArgParser.java b/src/jalview/bin/argparser/ArgParser.java index fe73053..12e1b1d 100644 --- a/src/jalview/bin/argparser/ArgParser.java +++ b/src/jalview/bin/argparser/ArgParser.java @@ -365,6 +365,8 @@ public class ArgParser List globVals = null; // for Opt.GLOB only SubVals globSubVals = null; // also for use by Opt.GLOB only String linkedId = null; + String givenLinkedId = null; // this is preserved to add to each + // "ArgValue" Type type = null; // look for equals e.g. --arg=value @@ -385,6 +387,7 @@ public class ArgParser if (idOpen > -1 && idClose == argName.length() - 1) { linkedId = argName.substring(idOpen + 1, idClose); + givenLinkedId = linkedId; argName = argName.substring(0, idOpen); } @@ -595,6 +598,12 @@ public class ArgParser { linkedId = MATCHALLLINKEDIDS; } + if (allLinkedIds) + { + // user has made conscious decision for these args to apply to + // all, so set givenLinkedId too + givenLinkedId = linkedId; + } else if (a.hasOption(Opt.ALLOWMULTIID) && this.storedLinkedIds != null && this.storedLinkedIds.size() > 0) @@ -686,7 +695,8 @@ public class ArgParser { String v = gve.nextElement(); SubVals vsv = new SubVals(globSubVals, v); - addValue(linkedId, type, avs, vsv, v, argIndex++, true); + addValue(linkedId, givenLinkedId, type, avs, vsv, v, + argIndex++, true); // if we're using defaultLinkedId and the arg increments the // counter: if (gve.hasMoreElements() && usingDefaultLinkedId @@ -703,18 +713,19 @@ public class ArgParser else { // addValue(linkedId, type, avs, val, argIndex, true); - addValue(linkedId, type, avs, addNewSubVals ? subvals : null, - val, argIndex, true); + addValue(linkedId, givenLinkedId, type, avs, + addNewSubVals ? subvals : null, val, argIndex, true); } } else if (a.hasOption(Opt.BOOLEAN)) { - setBoolean(linkedId, type, avs, !negated, argIndex); + setBoolean(linkedId, givenLinkedId, type, avs, !negated, + argIndex); setNegated(linkedId, avs, negated); } else if (a.hasOption(Opt.UNARY)) { - setBoolean(linkedId, type, avs, true, argIndex); + setBoolean(linkedId, givenLinkedId, type, avs, true, argIndex); } // remove the '*' or 'open*' linkedId that should be empty if it was @@ -1055,30 +1066,30 @@ public class ArgParser /** * This version inserts the subvals sv into all created values */ - private void addValue(String linkedId, Type type, ArgValues avs, - SubVals sv, String v, int argIndex, boolean doSubs) + private void addValue(String linkedId, String givenLinkedId, Type type, + ArgValues avs, SubVals sv, String v, int argIndex, boolean doSubs) { - this.argValueOperation(Op.ADDVALUE, linkedId, type, avs, sv, v, false, - argIndex, doSubs); + this.argValueOperation(Op.ADDVALUE, linkedId, givenLinkedId, type, avs, + sv, v, false, argIndex, doSubs); } - private void setBoolean(String linkedId, Type type, ArgValues avs, - boolean b, int argIndex) + private void setBoolean(String linkedId, String givenLinkedId, Type type, + ArgValues avs, boolean b, int argIndex) { - this.argValueOperation(Op.SETBOOLEAN, linkedId, type, avs, null, null, - b, argIndex, false); + this.argValueOperation(Op.SETBOOLEAN, linkedId, givenLinkedId, type, + avs, null, null, b, argIndex, false); } private void setNegated(String linkedId, ArgValues avs, boolean b) { - this.argValueOperation(Op.SETNEGATED, linkedId, null, avs, null, null, - b, 0, false); + this.argValueOperation(Op.SETNEGATED, linkedId, null, null, avs, null, + null, b, 0, false); } private void incrementCount(String linkedId, ArgValues avs) { - this.argValueOperation(Op.INCREMENTCOUNT, linkedId, null, avs, null, - null, false, 0, false); + this.argValueOperation(Op.INCREMENTCOUNT, linkedId, null, null, avs, + null, null, false, 0, false); } private enum Op @@ -1086,13 +1097,13 @@ public class ArgParser ADDVALUE, SETBOOLEAN, SETNEGATED, INCREMENTCOUNT } - private void argValueOperation(Op op, String linkedId, Type type, - ArgValues avs, SubVals sv, String v, boolean b, int argIndex, - boolean doSubs) + private void argValueOperation(Op op, String linkedId, + String givenLinkedId, Type type, ArgValues avs, SubVals sv, + String v, boolean b, int argIndex, boolean doSubs) { // default to merge subvals if subvals are provided - argValueOperation(op, linkedId, type, avs, sv, true, v, b, argIndex, - doSubs); + argValueOperation(op, linkedId, givenLinkedId, type, avs, sv, true, v, + b, argIndex, doSubs); } /** @@ -1122,9 +1133,9 @@ public class ArgParser * @param doSubs * Whether to perform substitutions on the subvals and value. */ - private void argValueOperation(Op op, String linkedId, Type type, - ArgValues avs, SubVals sv, boolean merge, String v, boolean b, - int argIndex, boolean doSubs) + private void argValueOperation(Op op, String linkedId, + String givenLinkedId, Type type, ArgValues avs, SubVals sv, + boolean merge, String v, boolean b, int argIndex, boolean doSubs) { Arg a = avs.arg(); @@ -1155,15 +1166,16 @@ public class ArgParser // linkedIds if (wildcardLinkedIds != null) { - for (String id : wildcardLinkedIds) + for (String matchedLinkedId : wildcardLinkedIds) { // skip incorrectly stored wildcard ids! - if (id == null || MATCHALLLINKEDIDS.equals(id) - || MATCHOPENEDLINKEDIDS.equals(id)) + if (matchedLinkedId == null + || MATCHALLLINKEDIDS.equals(matchedLinkedId) + || MATCHOPENEDLINKEDIDS.equals(matchedLinkedId)) { continue; } - ArgValuesMap avm = linkedArgs.get(id); + ArgValuesMap avm = linkedArgs.get(matchedLinkedId); // don't set an output if there isn't an input if (a.hasOption(Opt.REQUIREINPUT) && !avm.hasArgWithOption(Opt.INPUT)) @@ -1180,24 +1192,24 @@ public class ArgParser if (doSubs) { sv = new SubVals(sv, val, merge); - val = makeSubstitutions(sv.getContent(), id); + val = makeSubstitutions(sv.getContent(), matchedLinkedId); } - tavs.addValue(sv, type, val, argIndex, true); + tavs.addValue(sv, type, val, argIndex, true, givenLinkedId); } else { if (doSubs) { - val = makeSubstitutions(v, id); + val = makeSubstitutions(v, matchedLinkedId); } - tavs.addValue(type, val, argIndex, true); + tavs.addValue(type, val, argIndex, true, givenLinkedId); } - finaliseStoringArgValue(id, tavs); + finaliseStoringArgValue(matchedLinkedId, tavs); break; case SETBOOLEAN: - tavs.setBoolean(type, b, argIndex, true); - finaliseStoringArgValue(id, tavs); + tavs.setBoolean(type, b, argIndex, true, givenLinkedId); + finaliseStoringArgValue(matchedLinkedId, tavs); break; case SETNEGATED: @@ -1228,7 +1240,7 @@ public class ArgParser val = makeSubstitutions(v, linkedId); sv = new SubVals(sv, val); } - avs.addValue(sv, type, val, argIndex, false); + avs.addValue(sv, type, val, argIndex, false, givenLinkedId); } else { @@ -1236,13 +1248,13 @@ public class ArgParser { val = makeSubstitutions(v, linkedId); } - avs.addValue(type, val, argIndex, false); + avs.addValue(type, val, argIndex, false, givenLinkedId); } finaliseStoringArgValue(linkedId, avs); break; case SETBOOLEAN: - avs.setBoolean(type, b, argIndex, false); + avs.setBoolean(type, b, argIndex, false, givenLinkedId); finaliseStoringArgValue(linkedId, avs); break;