#pragma once

#include <string>
#include <vector>

#include "result.h"

enum class TokenType {
    TextFragment,
    QuestionEnd,
	MatchGroupEnd,
    ElementDashStart,
    ElementPlusStart,
    ElementOrderModifier,
    Cooldown,
    CooldownStart,
    CooldownEnd,
    StartOfFile,
    EndOfFile
};

struct Token {
    TokenType tokenType;
    std::string content;
    int32_t row;
    int32_t column;

    std::string ToString() const;
    static std::string ToString(const TokenType* ttype);
};

Result<std::vector<Token>> tokenizeMdem(const std::string& fileRunes);
