aboutsummaryrefslogtreecommitdiffstats
path: root/include/markdown_translator.hpp
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-10-28 02:44:33 -0700
committerPinapelz <yukais@pinapelz.com>2025-10-28 02:44:44 -0700
commit5fea6ece5c4c90753e19c27150522678b1872a12 (patch)
tree51f08a6e294e5a60fa0e6af38c71a0e5981853a0 /include/markdown_translator.hpp
parent29a0ab1f2b04a9b9a45282b6c9026136b1ed1f6d (diff)
pre-parse headers and add external links metadata tag for sidemenu
Diffstat (limited to 'include/markdown_translator.hpp')
-rw-r--r--include/markdown_translator.hpp18
1 files changed, 17 insertions, 1 deletions
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<ExternalMenuItem> 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<std::string>& lines);
// Navigation and table of contents
- void generateSideBar(std::stringstream& output, const std::vector<std::string>& 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<std::string> headers; // h1-6
+
};
#endif // MARKDOWN_TRANSLATOR_H
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage