/* * Copyright (c) 2021, Peter Elliott * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Markdown { class ContainerBlock final : public Block { public: ContainerBlock(NonnullOwnPtrVector blocks, bool has_blank_lines, bool has_trailing_blank_lines) : m_blocks(move(blocks)) , m_has_blank_lines(has_blank_lines) , m_has_trailing_blank_lines(has_trailing_blank_lines) { } virtual ~ContainerBlock() override { } virtual String render_to_html(bool tight = false) const override; virtual String render_for_terminal(size_t view_width = 0) const override; virtual RecursionDecision walk(Visitor&) const override; static OwnPtr parse(LineIterator& lines); bool has_blank_lines() const { return m_has_blank_lines; } bool has_trailing_blank_lines() const { return m_has_trailing_blank_lines; } NonnullOwnPtrVector const& blocks() const { return m_blocks; } private: NonnullOwnPtrVector m_blocks; bool m_has_blank_lines; bool m_has_trailing_blank_lines; }; }