1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 18:37:34 +00:00

LibMarkdown: Rewrite Inline text parser to be more forgiving

The previous Text::parse was not able to give up on parsing a textual
element, and just leave it as plain text. Because this is a very
important part of markdown, I fully rewrote the parser to support this
without having to backtrack. Also the parser now some other little
features, such ast delimiter runs and flanking.
This commit is contained in:
Peter Elliott 2021-09-06 19:11:46 -06:00 committed by Andreas Kling
parent 80e58dab9a
commit ec9f892899
10 changed files with 462 additions and 397 deletions

View file

@ -15,22 +15,8 @@ namespace Markdown {
class Paragraph final : public Block {
public:
class Line {
public:
explicit Line(Text&& text)
: m_text(move(text))
{
}
static OwnPtr<Line> parse(Vector<StringView>::ConstIterator& lines);
const Text& text() const { return m_text; }
private:
Text m_text;
};
Paragraph(NonnullOwnPtrVector<Line>&& lines)
: m_lines(move(lines))
Paragraph(Text text)
: m_text(move(text))
{
}
@ -40,7 +26,7 @@ public:
virtual String render_for_terminal(size_t view_width = 0) const override;
private:
NonnullOwnPtrVector<Line> m_lines;
Text m_text;
};
}