AK: Add StringBuilder::try_join()

This is a failable version of StringBuilder::join().
This commit is contained in:
MacDue 2023-01-14 00:08:18 +00:00 committed by Andreas Kling
parent 0c688fa117
commit 2366265c53

View file

@ -78,15 +78,21 @@ public:
template<class SeparatorType, class CollectionType> template<class SeparatorType, class CollectionType>
void join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv) void join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv)
{
MUST(try_join(separator, collection, fmtstr));
}
template<class SeparatorType, class CollectionType>
ErrorOr<void> try_join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv)
{ {
bool first = true; bool first = true;
for (auto& item : collection) { for (auto& item : collection) {
if (first) if (!first)
first = false; TRY(try_append(separator));
else TRY(try_appendff(fmtstr, item));
append(separator); first = false;
appendff(fmtstr, item);
} }
return {};
} }
private: private: