#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