private int idCounter = 0;
+ // flag to say whether {n} subtitutions in output filenames should be made.
+ // Turn on and off with --subs and --nosubs
+ private boolean substitutions = false;
+
private static enum Opt
{
BOOLEAN, STRING, UNARY, MULTI, LINKED, NODUPLICATEVALUES, BOOTSTRAP,
- GLOB
+ GLOB, NOACTION
}
public enum Arg
VSESS, OUTPUT, OUTPUTTYPE, SSANNOTATION, NOTEMPFAC, TEMPFAC,
TEMPFAC_LABEL, TEMPFAC_DESC, TEMPFAC_SHADING, TITLE, PAEMATRIX, WRAP,
NOSTRUCTURE, STRUCTURE, IMAGE, QUIT, CLOSE, DEBUG("d"), QUIET("q"),
- ARGFILE, INCREMENT, NPP("n++");
+ ARGFILE, INCREMENT, NPP("n++"), SUBSTITUTIONS, NIL;
static
{
DEBUG.setOptions(Opt.BOOLEAN, Opt.BOOTSTRAP);
QUIET.setOptions(Opt.UNARY, Opt.MULTI, Opt.BOOTSTRAP);
ARGFILE.setOptions(Opt.STRING, Opt.MULTI, Opt.BOOTSTRAP, Opt.GLOB);
- INCREMENT.setOptions(Opt.UNARY, Opt.MULTI);
- NPP.setOptions(Opt.UNARY, Opt.MULTI);
+ INCREMENT.setOptions(Opt.UNARY, Opt.MULTI, Opt.NOACTION);
+ NPP.setOptions(Opt.UNARY, Opt.MULTI, Opt.NOACTION);
+ SUBSTITUTIONS.setOptions(Opt.BOOLEAN, Opt.MULTI, Opt.NOACTION);
+ NIL.setOptions(Opt.UNARY, Opt.LINKED, Opt.MULTI, Opt.NOACTION);
// BOOTSTRAP args are parsed before a full parse of arguments and
// so are accessible at an earlier stage to (e.g.) set debug log level,
// provide a props file (that might set log level), run headlessly, read
}
}
+ // make NOACTION adjustments
// default and auto counter increments
if (a == Arg.INCREMENT)
{
defaultLinkedIdCounter++;
- continue;
}
else if (a == Arg.NPP)
{
idCounter++;
- continue;
+ }
+ else if (a == Arg.SUBSTITUTIONS)
+ {
+ substitutions = !negated;
}
String autoCounterString = null;
if (!linkedArgs.containsKey(linkedId))
linkedArgs.put(linkedId, new ArgValuesMap());
+ // do not continue for NOACTION args
+ if (a.hasOption(Opt.NOACTION))
+ continue;
+
ArgValuesMap avm = linkedArgs.get(linkedId);
// not dealing with both NODUPLICATEVALUES and GLOB