From 2905f38a80b56a15edd008de0d84ded636fdce7e Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 9 Jul 2023 13:35:47 +0100 Subject: Allow tags to not redefine a variable if already set. This is useful for having a provider config which uses entities but has defaults to fall back to when they are not defined. --- src/configparser.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/configparser.cpp') diff --git a/src/configparser.cpp b/src/configparser.cpp index 79d9b2152..22b0934ed 100644 --- a/src/configparser.cpp +++ b/src/configparser.cpp @@ -271,11 +271,12 @@ struct Parser final } else if (stdalgo::string::equalsci(name, "define")) { - std::string varname = tag->getString("name"); - std::string value = tag->getString("value"); + const std::string varname = tag->getString("name"); if (varname.empty()) - throw CoreException("Variable definition must include variable name"); - stack.vars[varname] = value; + throw CoreException("Variable definition must include a variable name, at " + tag->source.str()); + + if (stack.vars.find(varname) == stack.vars.end() || tag->getBool("replace", true)) + stack.vars[varname] = tag->getString("value"); } else { -- cgit v1.3.1-10-gc9f91