diff --git a/libsolutil/Whiskers.cpp b/libsolutil/Whiskers.cpp index e236104c7..340527bdd 100644 --- a/libsolutil/Whiskers.cpp +++ b/libsolutil/Whiskers.cpp @@ -189,11 +189,13 @@ string Whiskers::replace( if (conditionName[0] == '+') { string tag = conditionName.substr(1); - assertThrow( - _parameters.count(tag), - WhiskersError, "Tag " + tag + " used as condition but was not set." - ); - conditionValue = !_parameters.at(tag).empty(); + + if (_parameters.count(tag)) + conditionValue = !_parameters.at(tag).empty(); + else if (_listParameters.count(tag)) + conditionValue = !_listParameters.at(tag).empty(); + else + assertThrow(false, WhiskersError, "Tag " + tag + " used as condition but was not set."); } else { diff --git a/libsolutil/Whiskers.h b/libsolutil/Whiskers.h index 113fbe6ed..7bbf74f09 100644 --- a/libsolutil/Whiskers.h +++ b/libsolutil/Whiskers.h @@ -60,12 +60,13 @@ DEV_SIMPLE_EXCEPTION(WhiskersError); * - Condition parameter: ......, where "" is optional * replaced (and recursively expanded) by the first part if the condition is true * and by the second (or empty string if missing) if the condition is false - * - Conditional string parameter: ...... - * Works similar to a conditional parameter where the checked condition is - * that the regular (string) parameter called "name" is non-empty. * - List parameter: <#list>... * The part between the tags is repeated as often as values are provided * in the mapping. Each list element can have its own parameter -> value mapping. + * - Conditional value parameter: ...... + * Works similar to a conditional parameter where the checked condition is + * that the string or list parameter called "name" is non-empty or contains + * no elements respectively. */ class Whiskers {