#ifndef GAME_MWDIALOGUE_HYPERTEXTPARSER_H #define GAME_MWDIALOGUE_HYPERTEXTPARSER_H #include #include #include "keywordsearch.hpp" namespace MWDialogue { class HyperTextParser { uint64_t mKeywordModPoint; KeywordSearch mKeywordSearch; public: struct Token { enum Type { ExplicitLink, // enclosed in @# ImplicitKeyword }; Token(const std::string & text, Type type) : mText(text), mType(type) {} bool isExplicitLink() { return mType == ExplicitLink; } std::string mText; Type mType; }; HyperTextParser() : mKeywordModPoint(0) {} // In translations (at least Russian) the links are marked with @#, so // it should be a function to parse it std::vector parseHyperText(const std::string & text); void tokenizeKeywords(const std::string & text, std::vector & tokens); static size_t removePseudoAsterisks(std::string & phrase); }; } #endif