X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fname_format.cc;h=dce0935bb2f92f673669b03c532a818106167182;hb=0d31c86d6dfad9f437f5613d41cace9cc5928474;hp=7b9cfd634760b1b57d6dd399729da6cdb2b9d150;hpb=81ed0ebb725a7b5fec00ae209ba8b0d70ebc4ee1;p=libdcp.git diff --git a/src/name_format.cc b/src/name_format.cc index 7b9cfd63..dce0935b 100644 --- a/src/name_format.cc +++ b/src/name_format.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2016 Carl Hetherington + Copyright (C) 2016-2021 Carl Hetherington This file is part of libdcp. @@ -31,15 +31,22 @@ files in the program, then also delete it here. */ + +/** @file src/name_format.cc + * @brief NameFormat class + */ + + #include "name_format.h" #include -#include + using std::string; using std::map; using boost::optional; using namespace dcp; + static char filter (char c) { @@ -48,10 +55,16 @@ filter (char c) } else if (c == ' ') { c = '_'; } +#ifdef LIBDCP_WINDOWS + else if (c == '?' || c == '.') { + c = '_'; + } +#endif return c; } + static string filter (string c) { @@ -64,15 +77,17 @@ filter (string c) return o; } + 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]; + auto j = values.find(key); + if (j != values.end() && ignore.find(key) == string::npos) { result += filter (j->second); ++i; done = true; @@ -87,6 +102,7 @@ NameFormat::get (Map values, string suffix) const return result + suffix; } + bool dcp::operator== (NameFormat const & a, NameFormat const & b) {