1 // =================================
 2 // Copyright (c) 2020 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #ifndef GENDOC_HTML_LEXER_FILE_SOURCE_GENERATOR_INCLUDED
 7 #define GENDOC_HTML_LEXER_FILE_SOURCE_GENERATOR_INCLUDED
 8 #include <gendoc/html/HtmlSourceCodeWriter.hpp>
 9 #include <sngxml/dom/Document.hpp>
10 #include <sngcpp/ast/Visitor.hpp>
11 #include <sngcpp/ast/SourceFile.hpp>
12 
13 namespace gendoc { namespace html {
14 
15 class HtmlLexerFileSourceGenerator public sngcpp::ast::Visitor
16 {
17 public:
18     HtmlLexerFileSourceGenerator(const std::u32string& projectName_const std::std::vector<std::u32string>&inputLines_intnumDigits_conststd::string&styleDirName_conststd::string& styleFileName_);
19     void Visit(SourceFileNode& sourceFileNode) override;
20     void OpenLine();
21     void CloseLine();
22 private:
23     std::u32string projectName;
24     const std::std::vector<std::u32string>&inputLines;
25     int numDigits;
26     std::string styleFilePath;
27     HtmlSourceCodeWriter writer;
28     sngxml::dom::Document htmlSourceFileDocument;
29     std::unique_ptr<sngxml::dom::Element> htmlElement;
30     std::unique_ptr<sngxml::dom::Element> bodyElement;
31     std::unique_ptr<sngxml::dom::Element> lineElement;
32     int currentSourceLineNumber;
33 };
34 
35 } } // namespace gendoc::html
36 
37 #endif // GENDOC_HTML_LEXER_FILE_SOURFCE_GENERATOR_INCLUDED