From fe9d2a290682021cd12a00bf21fa4db3012e2049 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 29 Jul 2016 15:54:09 +0100 Subject: Basics of custom DCP filename components. --- src/lib/name_format.cc | 98 -------------------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 src/lib/name_format.cc (limited to 'src/lib/name_format.cc') diff --git a/src/lib/name_format.cc b/src/lib/name_format.cc deleted file mode 100644 index 07909c5fb..000000000 --- a/src/lib/name_format.cc +++ /dev/null @@ -1,98 +0,0 @@ -/* - Copyright (C) 2016 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - -#include "name_format.h" -#include -#include - -using std::string; -using std::map; -using boost::optional; - -static char -filter (char c) -{ - if (c == '/' || c == ':') { - c = '-'; - } else if (c == ' ') { - c = '_'; - } - - return c; -} - -static string -filter (string c) -{ - string o; - - for (size_t i = 0; i < c.length(); ++i) { - o += filter (c[i]); - } - - return o; -} - -void -NameFormat::add (string name, char placeholder, string title) -{ - _components.push_back (Component (name, placeholder, title)); -} - -optional -NameFormat::component_by_placeholder (char p) const -{ - BOOST_FOREACH (Component const & i, _components) { - if (i.placeholder == p) { - return i; - } - } - - return optional (); -} - -string -NameFormat::get (Map values) const -{ - string result; - for (size_t i = 0; i < _specification.length(); ++i) { - bool done = false; - if (_specification[i] == '%' && (i < _specification.length() - 1)) { - optional c = component_by_placeholder (_specification[i + 1]); - if (c) { - result += filter (values[c->name]); - ++i; - done = true; - } - } - - if (!done) { - result += filter (_specification[i]); - } - } - - return result; -} - -bool -operator== (NameFormat const & a, NameFormat const & b) -{ - return a.specification() == b.specification(); -} -- cgit v1.2.3