From 5fea6ece5c4c90753e19c27150522678b1872a12 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Tue, 28 Oct 2025 02:44:33 -0700 Subject: pre-parse headers and add external links metadata tag for sidemenu --- include/markdown_translator.hpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/markdown_translator.hpp b/include/markdown_translator.hpp index 8bf6c84..65eb545 100644 --- a/include/markdown_translator.hpp +++ b/include/markdown_translator.hpp @@ -16,10 +16,22 @@ public: std::string translate(const std::string& markdownContent); std::string processLine(const std::string& line); + void addExternalMenuItem(const std::string& name, const std::string& link){ + ExternalMenuItem menuItem{name, link}; + externalMenuLinks.push_back(menuItem); + } enum Theme { carbon }; + struct ExternalMenuItem{ + std::string name; + std::string link; + }; + + std::vector externalMenuLinks; + + private: // Regex for various tags const std::string headerRegexStr{"^(#{1,6})\\s+(.*)$"}; @@ -37,7 +49,8 @@ private: std::string processSingleFigure(const std::string& text); std::string processFigureBlock(const std::vector& lines); // Navigation and table of contents - void generateSideBar(std::stringstream& output, const std::vector& headers); + void prescanHeaders(std::stringstream& markdownStream); + void generateSideBar(std::stringstream& output); std::string createAnchorId(const std::string& text); // Utility functions @@ -80,6 +93,7 @@ private: switch(theme){ case Theme::carbon: cssPath = "styles/carbon.css"; + break; default: cssPath = "styles/carbon.css"; } @@ -88,6 +102,8 @@ private: // Member variables std::string title; std::string cssPath{"styles/carbon.css"}; + std::vector headers; // h1-6 + }; #endif // MARKDOWN_TRANSLATOR_H -- cgit v1.2.3