Reduce block-nesting in joinStrings()

This commit is contained in:
Martchus 2018-07-01 23:21:06 +02:00
parent 6dcd39f1ac
commit 97aac2424a
1 changed files with 24 additions and 20 deletions

View File

@ -68,28 +68,32 @@ typename Container::value_type joinStrings(const Container &strings,
const typename Container::value_type &rightClosure = typename Container::value_type()) const typename Container::value_type &rightClosure = typename Container::value_type())
{ {
typename Container::value_type res; typename Container::value_type res;
if (strings.size()) { if (!strings.size()) {
size_t entries = 0, size = 0; return res;
for (const auto &str : strings) { }
if (!omitEmpty || !str.empty()) { std::size_t entries = 0, size = 0;
size += str.size(); for (const auto &str : strings) {
++entries; if (omitEmpty && str.empty()) {
} continue;
} }
if (entries) { size += str.size();
size += (entries * leftClosure.size()) + (entries * rightClosure.size()) + ((entries - 1) * delimiter.size()); ++entries;
res.reserve(size); }
for (const auto &str : strings) { if (!entries) {
if (!omitEmpty || !str.empty()) { return res;
if (!res.empty()) { }
res.append(delimiter); size += (entries * leftClosure.size()) + (entries * rightClosure.size()) + ((entries - 1) * delimiter.size());
} res.reserve(size);
res.append(leftClosure); for (const auto &str : strings) {
res.append(str); if (omitEmpty && str.empty()) {
res.append(rightClosure); continue;
}
}
} }
if (!res.empty()) {
res.append(delimiter);
}
res.append(leftClosure);
res.append(str);
res.append(rightClosure);
} }
return res; return res;
} }