summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/name_format.cc15
-rw-r--r--src/name_format.h2
2 files changed, 13 insertions, 4 deletions
diff --git a/src/name_format.cc b/src/name_format.cc
index 7b9cfd63..76cca3fd 100644
--- a/src/name_format.cc
+++ b/src/name_format.cc
@@ -64,15 +64,24 @@ filter (string c)
return o;
}
+
+/** @param values Values to replace our specifications with; e.g.
+ * if the specification contains %c it will be be replaced with the
+ * value corresponding to the key 'c'.
+ * @param suffix Suffix to add on after processing the specification.
+ * @param ignore Any specification characters in this string will not
+ * be replaced, but left as-is.
+ */
string
-NameFormat::get (Map values, string suffix) const
+NameFormat::get (Map values, string suffix, string ignore) const
{
string result;
for (size_t i = 0; i < _specification.length(); ++i) {
bool done = false;
if (_specification[i] == '%' && (i < _specification.length() - 1)) {
- Map::const_iterator j = values.find(_specification[i + 1]);
- if (j != values.end()) {
+ char const key = _specification[i + 1];
+ Map::const_iterator j = values.find(key);
+ if (j != values.end() && ignore.find(key) == string::npos) {
result += filter (j->second);
++i;
done = true;
diff --git a/src/name_format.h b/src/name_format.h
index e5cfb76d..e6fc9d72 100644
--- a/src/name_format.h
+++ b/src/name_format.h
@@ -60,7 +60,7 @@ public:
typedef std::map<char, std::string> Map;
- std::string get (Map, std::string suffix) const;
+ std::string get (Map, std::string suffix, std::string ignore = "") const;
private:
std::string _specification;