diff --git a/Libraries/LibMarkdown/Document.cpp b/Libraries/LibMarkdown/Document.cpp index 3e036dab16..2bd283c920 100644 --- a/Libraries/LibMarkdown/Document.cpp +++ b/Libraries/LibMarkdown/Document.cpp @@ -83,12 +83,20 @@ OwnPtr Document::parse(const StringView& str) auto& blocks = document->m_blocks; NonnullOwnPtrVector paragraph_lines; + auto flush_paragraph = [&] { + if (paragraph_lines.is_empty()) + return; + auto paragraph = make(move(paragraph_lines)); + document->m_blocks.append(move(paragraph)); + paragraph_lines.clear(); + }; while (true) { if (lines.is_end()) break; if ((*lines).is_empty()) { ++lines; + flush_paragraph(); continue; } @@ -98,10 +106,8 @@ OwnPtr Document::parse(const StringView& str) if (any) { if (!paragraph_lines.is_empty()) { auto last_block = document->m_blocks.take_last(); - auto paragraph = make(move(paragraph_lines)); - document->m_blocks.append(move(paragraph)); + flush_paragraph(); document->m_blocks.append(move(last_block)); - paragraph_lines.clear(); } continue; } @@ -113,10 +119,8 @@ OwnPtr Document::parse(const StringView& str) paragraph_lines.append(line.release_nonnull()); } - if (!paragraph_lines.is_empty()) { - auto paragraph = make(move(paragraph_lines)); - document->m_blocks.append(move(paragraph)); - } + if (!paragraph_lines.is_empty()) + flush_paragraph(); return document; }