summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibMarkdown/Paragraph.h
blob: 4e58e69c2c542bd07e203b1f7923032e22581af3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * Copyright (c) 2019-2020, Sergey Bugaev <bugaevc@serenityos.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/NonnullOwnPtrVector.h>
#include <AK/OwnPtr.h>
#include <LibMarkdown/Block.h>
#include <LibMarkdown/Text.h>

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))
    {
    }

    virtual ~Paragraph() override { }

    virtual String render_to_html() const override;
    virtual String render_for_terminal(size_t view_width = 0) const override;

private:
    NonnullOwnPtrVector<Line> m_lines;
};

}