private Map<String, String> subValMap;
- private static char SEPARATOR = ';';
+ private static char SEPARATOR = ',';
private static char EQUALS = '=';
protected SubVals(SubVals sv, String c)
{
- if (sv == null)
+ this(sv, c, true);
+ }
+
+ protected SubVals(SubVals sv, String c, boolean merge)
+ {
+ SubVals subvals;
+ if (merge)
+ {
+ SubVals vsv = new SubVals(c);
+ if (sv != null && sv.getSubValMap() != null)
+ {
+ for (String key : sv.getSubValMap().keySet())
+ {
+ vsv.put(key, sv.get(key));
+ }
+ }
+ if (sv != null && sv.getIndex() > 0)
+ {
+ vsv.index = sv.getIndex();
+ }
+ subvals = vsv;
+ }
+ else
+ {
+ // replace
+ subvals = sv;
+ }
+ if (subvals == null)
{
this.subValMap = new HashMap<>();
}
else
{
- this.subValMap = sv == null ? new HashMap<>() : sv.getSubValMap();
- this.index = sv.getIndex();
+ this.subValMap = subvals == null ? new HashMap<>()
+ : subvals.getSubValMap();
+ this.index = subvals.getIndex();
}
this.content = c;
}
return index == NOTSET && (subValMap == null || subValMap.size() == 0);
}
+ public String getWithSubstitutions(ArgParser ap, String id, String key)
+ {
+ return ap.makeSubstitutions(subValMap.get(key), id);
+ }
+
public String get(String key)
{
return subValMap.get(key);