[ci] Test Tcl bindings for dragonfly/freebsd
[xapian.git] / xapian-applications / omega / genericxmlparser.cc
blob044942c5ae1ddc69a4d32dfed233239ffd12ae85
1 /** @file
2 * @brief Generic parser for XML - just replaces tags with spaces
3 */
4 /* Copyright (C) 2020 Olly Betts
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 #include <config.h>
23 #include "genericxmlparser.h"
25 #include "stringutils.h"
27 using namespace std;
29 void
30 GenericXmlParser::process_content(const string& content)
32 auto first_non_space = find_if_not(content.begin(), content.end(),
33 C_isspace);
34 if (first_non_space == content.end()) {
35 // Ignore content which is empty or all whitespace - we'll add a space
36 // before we append any further content anyway.
37 return;
39 if (!dump.empty())
40 dump += ' ';
41 auto first = first_non_space - content.begin();
42 auto last_non_space = find_if_not(content.rbegin(), content.rend(),
43 C_isspace);
44 auto last = content.size() - (last_non_space - content.rbegin());
45 dump.append(content, first, last - first);