#pragma once #include #include class Highlighter { public: struct HighlightSpan { size_t start; size_t length; }; static std::string highlight_text( const std::string& text, const std::vector& keywords, const std::string& pre_tag = "", const std::string& post_tag = "" ); static std::vector find_keyword_positions( const std::string& text, const std::vector& keywords ); static std::string extract_snippet( const std::string& text, const std::vector& spans, size_t context_size = 50 ); };