1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 1995 Matthias Ettrich
7 * Copyright 1995-2000 the LyX Team.
9 * ====================================================== */
14 #pragma implementation "Variables.h"
17 #include "Variables.h"
18 #include "support/LRegex.h"
20 void Variables::set(string const &var, string const &val)
22 Vars::const_iterator cit = vars_.find(var);
23 if (cit != vars_.end())
29 string Variables::get(string const &var) const
31 Vars::const_iterator cit = vars_.find(var);
32 if (cit != vars_.end())
38 bool Variables::isset(string const & var) const
40 Vars::const_iterator cit = vars_.find(var);
41 return (cit != vars_.end());
44 string Variables::expand(string str) const
46 LRegex reg("\\$\\{\\(.*\\)\\}");
48 if (!reg.exact_match(str))
51 LRegex::MatchPair match;
55 match = reg.first_match(str);
56 var = str.substr(match.first,match.second);
57 // we correct the match to take ${} in account.
58 str.replace(match.first - 2, match.second + 3, get(var));
59 } while (reg.exact_match(str));
72 vars.set("x", "hello");
73 vars.set("y", "world");
74 cout << vars.expand("${x}") << endl;