路径重置完成
This commit is contained in:
parent
af4dde1629
commit
31ed703644
|
@ -5,9 +5,9 @@
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:16.3782516Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:51.9907375Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.0264292Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.0532400Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,4 +1,5 @@
|
||||||
#include "htmlprint.h"
|
#include "htmlprint.h"
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
using namespace example_novel;
|
using namespace example_novel;
|
||||||
using namespace printer;
|
using namespace printer;
|
||||||
|
@ -119,7 +120,7 @@ void tools_printer::build_storyline(std::shared_ptr<StoryLine> line, std::shared
|
||||||
}return;
|
}return;
|
||||||
case example_novel::NovelNode::FragmentRefer: {
|
case example_novel::NovelNode::FragmentRefer: {
|
||||||
auto refer_node = std::dynamic_pointer_cast<const example_novel::FragmentRefers>(novel_node->element());
|
auto refer_node = std::dynamic_pointer_cast<const example_novel::FragmentRefers>(novel_node->element());
|
||||||
auto refer_fragment = this->fragment_defines[refer_node->signature().mid(1)];
|
auto refer_fragment = this->fragment_defines[refer_node->referSignature()];
|
||||||
auto inst = std::make_shared<FragmentRef>(novel_node);
|
auto inst = std::make_shared<FragmentRef>(novel_node);
|
||||||
refer_fragment->appendRefers(inst);
|
refer_fragment->appendRefers(inst);
|
||||||
line->append(inst);
|
line->append(inst);
|
||||||
|
@ -131,23 +132,57 @@ void tools_printer::build_storyline(std::shared_ptr<StoryLine> line, std::shared
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tools_printer::build_volumeline(std::shared_ptr<StoryVolume> line, std::shared_ptr<const ast_gen::ElementAccess> novel_node)
|
void tools_printer::build_volumeline(std::shared_ptr<StoryVolume> volume, std::shared_ptr<const ast_gen::ElementAccess> novel_node)
|
||||||
{
|
{
|
||||||
if (!novel_node) {
|
if (!novel_node) {
|
||||||
for (auto& inst_c : line->accessPeers()->children())
|
for (auto& inst_c : volume->accessPeers()->children())
|
||||||
build_volumeline(line, inst_c);
|
build_volumeline(volume, inst_c);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (example_novel::NovelNode::FragmentRefer == (example_novel::NovelNode)novel_node->element()->typeMark()) {
|
if (example_novel::NovelNode::FragmentRefer == (example_novel::NovelNode)novel_node->element()->typeMark()) {
|
||||||
auto refer_node = std::dynamic_pointer_cast<const example_novel::FragmentRefers>(novel_node->element());
|
auto refer_node = std::dynamic_pointer_cast<const example_novel::FragmentRefers>(novel_node->element());
|
||||||
auto refer_fragment = this->fragment_defines[refer_node->signature().mid(1)];
|
auto refer_fragment = this->fragment_defines[refer_node->referSignature()];
|
||||||
auto inst = std::make_shared<FragmentRef>(novel_node);
|
auto inst = std::make_shared<FragmentRef>(novel_node);
|
||||||
refer_fragment->appendRefers(inst);
|
refer_fragment->appendRefers(inst);
|
||||||
line->append(inst);
|
volume->append(inst);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& inst_c : novel_node->children())
|
for (auto& inst_c : novel_node->children())
|
||||||
build_volumeline(line, inst_c);
|
build_volumeline(volume, inst_c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void printer::tools_printer::fragments_anchors_define(const QList<std::shared_ptr<Fragment>>& list, const QDir & destdir) {
|
||||||
|
for (auto &it : list) {
|
||||||
|
auto address_x = QString::number((qulonglong)it->accessPeers()->element().get());
|
||||||
|
it->setHtmlRefer(destdir.absoluteFilePath(QString("%1.html").arg(address_x)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::function<void(const QList<std::shared_ptr<Element>>&, const QDir &)> refers_refresh =
|
||||||
|
[&](const QList<std::shared_ptr<Element>> &items, const QDir &destdir){
|
||||||
|
for (auto &item : items) {
|
||||||
|
auto refer = std::dynamic_pointer_cast<FragmentRef>(item);
|
||||||
|
if (refer) {
|
||||||
|
auto address_x = QString::number((qulonglong)refer->accessPeers()->element().get());
|
||||||
|
refer->setHtmlRefer(destdir.absoluteFilePath(QString("%1.html").arg(address_x)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void printer::tools_printer::storylines_anchors_define(const QList<std::shared_ptr<StoryLine>>& list, const QDir & destdir) {
|
||||||
|
for (auto &it : list) {
|
||||||
|
auto address_x = QString::number((qulonglong)it->accessPeers()->element().get());
|
||||||
|
it->setHtmlRefer(destdir.absoluteFilePath(QString("%1.html").arg(address_x)));
|
||||||
|
refers_refresh(it->elements(), destdir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void printer::tools_printer::volumes_anchors_define(const QList<std::shared_ptr<StoryVolume>>& list, const QDir & destdir) {
|
||||||
|
for (auto &it : list) {
|
||||||
|
auto address_x = QString::number((qulonglong)it->accessPeers()->element().get());
|
||||||
|
it->setHtmlRefer(destdir.absoluteFilePath(QString("%1.html").arg(address_x)));
|
||||||
|
refers_refresh(it->elements(), destdir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,6 @@ namespace printer {
|
||||||
public:
|
public:
|
||||||
StoryLine(std::shared_ptr<const ast_gen::ElementAccess> handle);
|
StoryLine(std::shared_ptr<const ast_gen::ElementAccess> handle);
|
||||||
|
|
||||||
|
|
||||||
// ͨ¹ý Group ¼Ì³Ð
|
// ͨ¹ý Group ¼Ì³Ð
|
||||||
QString toHTML() const override;
|
QString toHTML() const override;
|
||||||
|
|
||||||
|
@ -67,7 +66,6 @@ namespace printer {
|
||||||
public:
|
public:
|
||||||
StoryVolume(std::shared_ptr<const ast_gen::ElementAccess> handle);
|
StoryVolume(std::shared_ptr<const ast_gen::ElementAccess> handle);
|
||||||
|
|
||||||
|
|
||||||
// ͨ¹ý Group ¼Ì³Ð
|
// ͨ¹ý Group ¼Ì³Ð
|
||||||
QString toHTML() const override;
|
QString toHTML() const override;
|
||||||
|
|
||||||
|
@ -106,7 +104,7 @@ namespace printer {
|
||||||
|
|
||||||
|
|
||||||
class tools_printer {
|
class tools_printer {
|
||||||
private:
|
public:
|
||||||
QHash<QString, std::shared_ptr<Fragment>> fragment_defines;
|
QHash<QString, std::shared_ptr<Fragment>> fragment_defines;
|
||||||
QHash<QString, std::shared_ptr<StoryLine>> storyline_defines;
|
QHash<QString, std::shared_ptr<StoryLine>> storyline_defines;
|
||||||
QHash<QString, std::shared_ptr<StoryVolume>> volume_defines;
|
QHash<QString, std::shared_ptr<StoryVolume>> volume_defines;
|
||||||
|
@ -118,5 +116,9 @@ namespace printer {
|
||||||
|
|
||||||
void build_storyline(std::shared_ptr<StoryLine> line, std::shared_ptr<const ast_gen::ElementAccess> novel_node = nullptr);
|
void build_storyline(std::shared_ptr<StoryLine> line, std::shared_ptr<const ast_gen::ElementAccess> novel_node = nullptr);
|
||||||
void build_volumeline(std::shared_ptr<StoryVolume> line, std::shared_ptr<const ast_gen::ElementAccess> novel_node = nullptr);
|
void build_volumeline(std::shared_ptr<StoryVolume> line, std::shared_ptr<const ast_gen::ElementAccess> novel_node = nullptr);
|
||||||
|
|
||||||
|
void fragments_anchors_define(const QList<std::shared_ptr<Fragment>> &list, const QDir &destdir);
|
||||||
|
void storylines_anchors_define(const QList<std::shared_ptr<StoryLine>> &list, const QDir &destdir);
|
||||||
|
void volumes_anchors_define(const QList<std::shared_ptr<StoryVolume>> &list, const QDir &destdir);
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -7,8 +7,10 @@
|
||||||
#include <libtoken.h>
|
#include <libtoken.h>
|
||||||
#include <syntax_novel.h>
|
#include <syntax_novel.h>
|
||||||
#include <tokens_novel.h>
|
#include <tokens_novel.h>
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
#include "novelparser.h"
|
#include "novelparser.h"
|
||||||
|
#include "htmlprint.h"
|
||||||
|
|
||||||
using namespace example_novel;
|
using namespace example_novel;
|
||||||
|
|
||||||
|
@ -22,6 +24,19 @@ int main(int argc, char* argv[]) {
|
||||||
auto parser = std::make_shared<NovelParser>();
|
auto parser = std::make_shared<NovelParser>();
|
||||||
auto novel_accesstree = parser->parse(files);
|
auto novel_accesstree = parser->parse(files);
|
||||||
|
|
||||||
|
printer::tools_printer tool;
|
||||||
|
tool.build_fragments(novel_accesstree);
|
||||||
|
tool.build_refers_network(novel_accesstree);
|
||||||
|
|
||||||
|
auto dest = QDir::current();
|
||||||
|
dest.mkdir("storylines");
|
||||||
|
dest.mkdir("volumes");
|
||||||
|
dest.mkdir("fragments");
|
||||||
|
|
||||||
|
tool.fragments_anchors_define(tool.fragment_defines.values(), QDir(dest.filePath("fragments")));
|
||||||
|
tool.storylines_anchors_define(tool.storyline_defines.values(), QDir(dest.filePath("storylines")));
|
||||||
|
tool.volumes_anchors_define(tool.volume_defines.values(), QDir(dest.filePath("volumes")));
|
||||||
|
|
||||||
std::function<void(std::shared_ptr<const ast_gen::ElementAccess>, int)> tnode_print =
|
std::function<void(std::shared_ptr<const ast_gen::ElementAccess>, int)> tnode_print =
|
||||||
[&](std::shared_ptr<const ast_gen::ElementAccess> node, int intend) {
|
[&](std::shared_ptr<const ast_gen::ElementAccess> node, int intend) {
|
||||||
auto name = node->element()->signature();
|
auto name = node->element()->signature();
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.4728899Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.1001219Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.7556506Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.1782463Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -35,6 +35,10 @@ QString FragmentRefers::storyRefer() const { return story_ref; }
|
||||||
|
|
||||||
QString FragmentRefers::fragmentRefer() const { return fragm_ref; }
|
QString FragmentRefers::fragmentRefer() const { return fragm_ref; }
|
||||||
|
|
||||||
|
QString FragmentRefers::referSignature() const {
|
||||||
|
return story_ref + u8"&" + fragm_ref;
|
||||||
|
}
|
||||||
|
|
||||||
int FragmentRefers::typeMark() const { return (int)NovelNode::FragmentRefer; }
|
int FragmentRefers::typeMark() const { return (int)NovelNode::FragmentRefer; }
|
||||||
|
|
||||||
bool example_novel::FragmentRefers::isAnonymous() const
|
bool example_novel::FragmentRefers::isAnonymous() const
|
||||||
|
|
|
@ -57,6 +57,7 @@ namespace example_novel
|
||||||
|
|
||||||
QString storyRefer() const;
|
QString storyRefer() const;
|
||||||
QString fragmentRefer() const;
|
QString fragmentRefer() const;
|
||||||
|
QString referSignature() const;
|
||||||
|
|
||||||
// SyntaxElement interface
|
// SyntaxElement interface
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.9061468Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.3344976Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:18.2310593Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.5226570Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -2,9 +2,9 @@
|
||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.1430384Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.2094883Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<QtLastBackgroundBuild>2024-03-28T12:35:17.3463137Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2024-03-31T05:42:52.3032378Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue