22 typedef std::map<std::string, std::string> VarMap;
30 bool addVariable(
const std::string& key,
const std::string& value)
34 war <<
"TextParser: empty key on variable setting..";
40 variables[key] =
parseText(value.c_str());
47 std::string
ret, startKeyword, endKeyword;
55 startKeyword =
"$ENV{";
57 bool badSymbol =
ret.find(
"$") != std::string::npos;
58 s =
ret.find(startKeyword);
59 e =
ret.find(endKeyword, s);
61 if(s != std::string::npos && e != std::string::npos)
63 std::string envName, envValue;
65 envName =
ret.substr(s + startKeyword.size(), e - s -startKeyword.size());
67 ret =
ret.substr(0, s)+ envValue +
ret.substr(e + endKeyword.size(),
ret.size() - endKeyword.size());
74 s =
ret.find(startKeyword);
75 e =
ret.find(endKeyword, s);
77 if(s != std::string::npos && e != std::string::npos)
79 std::string envName, envValue;
81 envName =
ret.substr(s + startKeyword.size(), e - s -startKeyword.size());
82 envValue = variables[envName];
83 ret =
ret.substr(0, s)+ envValue +
ret.substr(e + endKeyword.size(),
ret.size() - endKeyword.size());
89 war <<
"use of symbol '$' detected but no keyword understood.. possible use: ${foo} for internal variable or $ENV{foo} for environment variable";
Singleton class ErrorLogger.
void addWarning(const char *szWarning)
static ErrorLogger * Instance()
Singleton class ErrorLogger.
bool addVariable(const std::string &key, const std::string &value)
std::string parseText(const char *element)
std::string get_string(const std::string &key, bool *found=nullptr)
Read a string from an environment variable.
std::stringstream OSTRINGSTREAM
The main, catch-all namespace for YARP.