diff options
| -rw-r--r-- | include/markdown_translator.hpp | 36 | ||||
| -rw-r--r-- | src/markdown_translator.cpp | 32 |
2 files changed, 36 insertions, 32 deletions
diff --git a/include/markdown_translator.hpp b/include/markdown_translator.hpp index 6a3b91f..6eb32f8 100644 --- a/include/markdown_translator.hpp +++ b/include/markdown_translator.hpp @@ -36,7 +36,41 @@ private: void generateSideBar(std::stringstream& output, const std::vector<std::string>& headers); std::string createAnchorId(const std::string& text); // Utility functions - std::string getCurrentDateTime(); + + std::string getCurrentDateTime() { + std::time_t now = std::time(nullptr); + std::tm* localTime = std::localtime(&now); + + char buffer[80]; + std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localTime); + + return std::string(buffer); + } + + // HTML builders + std::string buildHTMLHeader(const std::string& title, const std::string& cssPath){ + return R"(<!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>)" + title + R"(</title> + <link rel="stylesheet" href=")" + cssPath + R"("> + </head> + <body> + )"; + } + + std::string buildHTMLFooter(){ + return R"( <div class="article-meta"> + <p>Last updated: )" + getCurrentDateTime() + R"(</p> + </div> + </div> + </div> + </body> + </html> + )"; + } // Member variables std::string title; diff --git a/src/markdown_translator.cpp b/src/markdown_translator.cpp index 9ec37a6..3c97874 100644 --- a/src/markdown_translator.cpp +++ b/src/markdown_translator.cpp @@ -62,22 +62,10 @@ std::string MarkdownTranslator::translate(const std::string& markdownContent, co } } } - markdownStream.clear(); markdownStream.str(markdownContent); - // Start with basic HTML structure - htmlOutput << R"(<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>)" << title << R"(</title> - <link rel="stylesheet" href=")" << cssPath << R"("> -</head> -<body> -)"; - + htmlOutput << buildHTMLHeader(title, cssPath); // Add navigation sidebar generateSideBar(htmlOutput, headers); @@ -111,15 +99,7 @@ std::string MarkdownTranslator::translate(const std::string& markdownContent, co htmlOutput << " " << processLine(line); } - // Add article meta information section - htmlOutput << " <div class=\"article-meta\">\n"; - htmlOutput << " <p>Last updated: " << getCurrentDateTime() << "</p>\n"; - htmlOutput << " </div>\n"; - htmlOutput << " </div>\n"; - htmlOutput << " </div>\n"; - htmlOutput << "</body>\n"; - htmlOutput << "</html>\n"; return htmlOutput.str(); } @@ -182,16 +162,6 @@ std::string MarkdownTranslator::createAnchorId(const std::string& text) { return id; } -std::string MarkdownTranslator::getCurrentDateTime() { - std::time_t now = std::time(nullptr); - std::tm* localTime = std::localtime(&now); - - char buffer[80]; - std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localTime); - - return std::string(buffer); -} - std::string MarkdownTranslator::processLine(const std::string& line) { std::string processed = line; processed = processHeaders(processed); |
