aboutsummaryrefslogtreecommitdiffstats
path: root/include/markdown_translator.hpp
blob: 6c0c1bc1cfe518d536940f6caccafe33e80001a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef MARKDOWN_TRANSLATOR_H
#define MARKDOWN_TRANSLATOR_H

#include <string>
#include <vector>
#include <sstream>
#include <ctime>

class MarkdownTranslator {
public:
    // Constructor
    MarkdownTranslator();
    // Destructor
    ~MarkdownTranslator();
    // Main translation function - takes markdown content and returns HTML
    std::string translate(const std::string& markdownContent, const std::string& cssPath = "styles/carbon.css");
    std::string processLine(const std::string& line);

private:
    // Helper functions for different markdown elements
    void processMetadata(const std::vector<std::string>& lines);
    std::string processHeaders(const std::string& line);
    std::string processBold(const std::string& text);
    std::string processItalic(const std::string& text);
    std::string processLinks(const std::string& text);
    std::string processParagraph(const std::string& text);
    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);
    std::string createAnchorId(const std::string& text);
    // Utility functions
    std::string getCurrentDateTime();

    // Member variables
    std::string title;
};

#endif // MARKDOWN_TRANSLATOR_H
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage