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"
21 void Variables::set(string const & var, string const & val)
23 Vars::const_iterator cit = vars_.find(var);
24 if (cit != vars_.end())
30 string Variables::get(string const & var) const
32 Vars::const_iterator cit = vars_.find(var);
33 if (cit != vars_.end())
40 bool Variables::isset(string const & var) const
42 Vars::const_iterator cit = vars_.find(var);
43 return (cit != vars_.end());
47 string Variables::expand(string const & s) const
50 LRegex reg("\\$\\{\\(.*\\)\\}");
52 if (!reg.exact_match(str))
55 LRegex::MatchPair match;
59 match = reg.first_match(str);
60 var = str.substr(match.first,match.second);
61 // we correct the match to take ${} in account.
62 str.replace(match.first - 2, match.second + 3, get(var));
63 } while (reg.exact_match(str));
76 vars.set("x", "hello");
77 vars.set("y", "world");
78 cout << vars.expand("${x}") << endl;