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,19 +68,26 @@ 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;
}
std::size_t entries = 0, size = 0;
for (const auto &str : strings) { for (const auto &str : strings) {
if (!omitEmpty || !str.empty()) { if (omitEmpty && str.empty()) {
continue;
}
size += str.size(); size += str.size();
++entries; ++entries;
} }
if (!entries) {
return res;
} }
if (entries) {
size += (entries * leftClosure.size()) + (entries * rightClosure.size()) + ((entries - 1) * delimiter.size()); size += (entries * leftClosure.size()) + (entries * rightClosure.size()) + ((entries - 1) * delimiter.size());
res.reserve(size); res.reserve(size);
for (const auto &str : strings) { for (const auto &str : strings) {
if (!omitEmpty || !str.empty()) { if (omitEmpty && str.empty()) {
continue;
}
if (!res.empty()) { if (!res.empty()) {
res.append(delimiter); res.append(delimiter);
} }
@ -88,9 +95,6 @@ typename Container::value_type joinStrings(const Container &strings,
res.append(str); res.append(str);
res.append(rightClosure); res.append(rightClosure);
} }
}
}
}
return res; return res;
} }