The Gaudi Framework  v30r3 (a5ef0a68)
Gaudi::Parsers::Utils Namespace Reference

Functions

std::string replaceEnvironments (const std::string &input)
 

Function Documentation

std::string Gaudi::Parsers::Utils::replaceEnvironments ( const std::string input)

Definition at line 18 of file Utils.cpp.

19 {
20  static const boost::regex expression( "\\$(([A-Za-z0-9_]+)|\\(([A-Za-z0-9_]+)\\))" );
21 
22  std::string result = input;
23  auto start = input.begin();
24  auto end = input.end();
25  boost::match_results<std::string::const_iterator> what;
26  boost::match_flag_type flags = boost::match_default;
27  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};
30  std::string env;
31  if ( System::getEnv( var, env ) ) {
32  boost::algorithm::replace_first( result, std::string{what[0].first, what[0].second}, env );
33  }
34  start = what[0].second;
35  // update flags:
36  flags |= boost::match_prev_avail;
37  flags |= boost::match_not_bob;
38  }
39  return result;
40 }
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)
Definition: System.cpp:411
T end(T...args)
STL class.
start
Definition: IOTest.py:99
T begin(T...args)