BareGit
#ifndef MACRODOWN_BLOCK_H
#define MACRODOWN_BLOCK_H

#include <string>
#include <vector>
#include <memory>

namespace macrodown
{

enum class BlockType
{
    Document,
    Quote,
    List,
    ListItem,
    FencedCode,
    IndentedCode,
    HtmlBlock,
    Paragraph,
    Heading,
    ThematicBreak
};

struct Block
{
    BlockType type;
    std::vector<std::unique_ptr<Block>> children; // For container blocks
    std::string literal_content; // For leaf blocks
    int level = 0; // For headings
    bool open = true;

    Block(BlockType t) : type(t) {}
};

} // namespace macrodown

#endif // MACRODOWN_BLOCK_H