Skip to content

Commit

Permalink
Whiskers: Support conditional value parameters for lists
Browse files Browse the repository at this point in the history
  • Loading branch information
Marenz committed Oct 12, 2021
1 parent b0a5b92 commit 76f31e2
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
12 changes: 7 additions & 5 deletions libsolutil/Whiskers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
7 changes: 4 additions & 3 deletions libsolutil/Whiskers.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,13 @@ DEV_SIMPLE_EXCEPTION(WhiskersError);
* - Condition parameter: <?name>...<!name>...</name>, where "<!name>" 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: <?+name>...<!+name>...</+name>
* Works similar to a conditional parameter where the checked condition is
* that the regular (string) parameter called "name" is non-empty.
* - List parameter: <#list>...</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: <?+name>...<!+name>...</+name>
* 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
{
Expand Down

0 comments on commit 76f31e2

Please sign in to comment.