#include "htmlprint.h" using namespace example_novel; void HtmlPrint::fragment_summary(std::shared_ptr root, const QDir& frag_outs) { std::function>(std::shared_ptr)> peak_story = [&](std::shared_ptr pnode) -> QList> { QList> listret; if (pnode->element()->typeMark() == (int)example_novel::NovelNode::StoryDefine) listret << pnode; for (auto& vit : pnode->children()) listret.append(peak_story(vit)); return listret; }; auto stories = peak_story(root); std::sort(std::begin(stories), std::end(stories), [](std::shared_ptr itema, std::shared_ptr itemb) -> bool { auto storya = std::dynamic_pointer_cast(itema->element()); auto storyb = std::dynamic_pointer_cast(itemb->element()); return storya->sort() < storyb->sort(); }); for (auto& sit : stories) { auto story_sort = std::make_shared(sit); const_cast(this)->stories_list << story_sort; auto children = sit->children(); std::shared_ptr temp_ptr = nullptr; for (auto& nf : children) { switch ((example_novel::NovelNode)nf->element()->typeMark()) { case example_novel::NovelNode::FragmentDefine: case example_novel::NovelNode::FragmentRefer: { auto frag_sort = std::make_shared(nf, story_sort->sortValue()); if (!temp_ptr) { story_sort->attachFragmentSort(frag_sort); } else { temp_ptr->attachNext(frag_sort); } temp_ptr = frag_sort; } break; default: break; } } } const_cast(this)->elements_link_build(this->stories_list); } void HtmlPrint::htmlOutput(std::shared_ptr root, const QDir& out_directory) const { }