8 #include <boost/regex.hpp>
9 #include <boost/algorithm/string.hpp>
13 #include "GaudiKernel/System.h"
19 static const boost::regex expression(
"\\$(([A-Za-z0-9_]+)|\\(([A-Za-z0-9_]+)\\))");
21 std::string result=input;
22 auto start = input.begin();
23 auto end = input.end();
24 boost::match_results<std::string::const_iterator> what;
25 boost::match_flag_type flags = boost::match_default;
26 while ( boost::regex_search(
start,
end, what, expression, flags ) )
28 std::string var{what[2].first,what[2].second};
29 if (var.empty()) var = std::string{what[3].first,what[3].second};
32 boost::algorithm::replace_first(result,
33 std::string{ what[0].first, what[0].second },
36 start = what[0].second;
38 flags |= boost::match_prev_avail;
39 flags |= boost::match_not_bob;
std::string replaceEnvironments(const std::string &input)
auto end(reverse_wrapper< T > &w)
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)