构建索引页

This commit is contained in:
codeboss 2024-04-05 21:39:29 +08:00
parent 3ef65d13e8
commit ff7b9d7e7a
1 changed files with 66 additions and 0 deletions

View File

@ -66,6 +66,8 @@ int main(int argc, char* argv[]) {
for (auto& node : tool.volume_defines)
html_output(node);
std::function<void(std::shared_ptr<const ast_gen::ElementAccess>, int)> tnode_print =
[&](std::shared_ptr<const ast_gen::ElementAccess> node, int intend) {
auto name = node->element()->signature();
@ -80,6 +82,70 @@ int main(int argc, char* argv[]) {
}
};
{
QFile tfile("./index.html");
if (tfile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QDomDocument doc_inst(QDomImplementation().createDocumentType(u8"html", QString(), QString()));
auto html = doc_inst.createElement(u8"html");
doc_inst.appendChild(html);
auto body = doc_inst.createElement(u8"body");
html.appendChild(body);
auto dom_storyline = doc_inst.createElement("div");
auto dom_storyline_title = doc_inst.createElement("h2");
dom_storyline_title.appendChild(doc_inst.createTextNode(u8"故事脉络"));
dom_storyline.appendChild(dom_storyline_title);
body.appendChild(dom_storyline);
for (auto& inst_line : tool.storyline_defines) {
auto dom_line = doc_inst.createElement("p");
dom_storyline.appendChild(dom_line);
auto line_href = doc_inst.createElement("a");
line_href.setAttribute(u8"href", u8"file:///"+inst_line->pageRefers());
line_href.appendChild(doc_inst.createTextNode(inst_line->accessPeers()->element()->signature()));
dom_line.appendChild(line_href);
}
auto dom_volume = doc_inst.createElement("div");
auto dom_volume_title = doc_inst.createElement("h2");
dom_volume_title.appendChild(doc_inst.createTextNode(u8"分卷内容"));
dom_volume.appendChild(dom_volume_title);
body.appendChild(dom_volume);
for (auto& inst_volume : tool.volume_defines) {
auto dom_volume_ref = doc_inst.createElement("p");
dom_volume.appendChild(dom_volume_ref);
auto volume_href = doc_inst.createElement("a");
volume_href.setAttribute(u8"href", u8"file:///" + inst_volume->pageRefers());
volume_href.appendChild(doc_inst.createTextNode(inst_volume->accessPeers()->element()->signature()));
dom_volume_ref.appendChild(volume_href);
}
auto dom_fragment = doc_inst.createElement("div");
auto dom_fragment_title = doc_inst.createElement("h2");
dom_fragment_title.appendChild(doc_inst.createTextNode(u8"情节集合"));
dom_fragment.appendChild(dom_fragment_title);
body.appendChild(dom_fragment);
for (auto &inst_frag : tool.fragment_defines) {
auto dom_fragment_ref = doc_inst.createElement("p");
dom_fragment.appendChild(dom_fragment_ref);
auto frag_href = doc_inst.createElement("a");
frag_href.setAttribute(u8"href", u8"file:///" + inst_frag->pageRefers());
frag_href.appendChild(doc_inst.createTextNode(inst_frag->accessPeers()->element()->signature()));
dom_fragment_ref.appendChild(frag_href);
}
QTextStream tout(&tfile);
doc_inst.save(tout, 2);
tout.flush();
}
}
tnode_print(novel_accesstree, 0);
}
catch (lib_syntax::SyntaxException* e) {