BareGit
#ifndef MACRODOWN_CONVERTER_H
#define MACRODOWN_CONVERTER_H

#include <vector>
#include <memory>
#include "block.h"
#include "nodes.h"
#include "markups.h"

namespace macrodown
{

class Converter
{
public:
    // Converts a Block tree into a list of AST Nodes (Macros)
    static std::vector<std::unique_ptr<Node>> convert(
        const Block* root,
        const std::vector<PrefixMarkup>& prefix_markups = {},
        const std::vector<DelimitedMarkup>& delimited_markups = {});

private:
    static std::unique_ptr<Node> convert_block(
        const Block* block,
        const std::vector<PrefixMarkup>& prefix_markups,
        const std::vector<DelimitedMarkup>& delimited_markups);
};

} // namespace macrodown

#endif // MACRODOWN_CONVERTER_H