1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 1995 Matthias Ettrich
7 * Copyright 1995-2001 the LyX Team.
9 * ====================================================== */
14 #pragma implementation "Variables.h"
17 #include "Variables.h"
18 #include "support/LRegex.h"
21 void Variables::set(string const & var, string const & val)
23 // We want to use const_iterator (Lgb)
24 Vars::iterator cit = vars_.find(var);
25 if (cit != vars_.end())
31 string const Variables::get(string const & var) const
33 Vars::const_iterator cit = vars_.find(var);
34 if (cit != vars_.end())
41 bool Variables::isSet(string const & var) const
43 Vars::const_iterator cit = vars_.find(var);
44 return (cit != vars_.end());
48 string const Variables::expand(string const & s) const
51 LRegex reg("\\$\\{\\(.*\\)\\}");
53 if (!reg.exact_match(str))
56 LRegex::MatchPair match;
60 match = reg.first_match(str);
61 var = str.substr(match.first,match.second);
62 // we correct the match to take ${} in account.
63 str.replace(match.first - 2, match.second + 3, get(var));
64 } while (reg.exact_match(str));
77 vars.set("x", "hello");
78 vars.set("y", "world");
79 cout << vars.expand("${x}") << endl;