aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform/output/html.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc_reform/output/html.d')
-rw-r--r--src/doc_reform/output/html.d536
1 files changed, 0 insertions, 536 deletions
diff --git a/src/doc_reform/output/html.d b/src/doc_reform/output/html.d
deleted file mode 100644
index 07da3c1..0000000
--- a/src/doc_reform/output/html.d
+++ /dev/null
@@ -1,536 +0,0 @@
-module doc_reform.output.html;
-template outputHTML() {
- import doc_reform.output;
- import
- std.digest.sha,
- std.file,
- std.outbuffer,
- std.uri,
- std.zip,
- std.conv : to;
- import
- doc_reform.output.create_zip_file,
- doc_reform.output.xmls,
- doc_reform.output.xmls_css;
- mixin outputXHTMLs;
- void scroll(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
- mixin spineOutputRgxInit;
- auto xhtml_format = outputXHTMLs();
- auto rgx = Rgx();
- string[] doc_html;
- string[] doc;
- string suffix = ".html";
- string previous_part = "";
- string delimit = "";
- foreach (part; doc_matters.has.keys_seq.scroll) {
- foreach (obj; doc_abstraction[part]) {
- delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj);
- switch (obj.metainfo.is_of_part) {
- case "frontmatter": assert(part == "head" || "toc");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "toc":
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
- }
- }
- break;
- }
- break;
- case "body": assert(part == "body" || "head");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "para":
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- case "block":
- switch (obj.metainfo.is_a) {
- case "quote":
- doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters);
- break;
- case "group":
- doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters);
- break;
- case "block":
- doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters);
- break;
- case "poem":
- break;
- case "verse":
- doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "code":
- doc_html ~= xhtml_format.code(_txt, obj, doc_matters);
- break;
- case "table":
- doc_html ~= xhtml_format.table(_txt, obj, doc_matters);
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
- }
- }
- break;
- }
- break;
- case "backmatter":
- assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "endnote": assert(part == "endnotes");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "glossary": assert(part == "glossary");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "bibliography": assert(part == "bibliography");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "bookindex": assert(part == "bookindex");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- case "blurb": assert(part == "blurb");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
- }
- }
- break;
- }
- break;
- case "comment":
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- writeln(__FILE__, ":", __LINE__, ": ", obj.text);
- }
- }
- break;
- }
- }
- }
- doc = xhtml_format.html_head(doc_matters, "scroll") ~ doc_html ~ xhtml_format.tail;
- scroll_write_output(doc, doc_matters);
- }
- void scroll_write_output(D,M)(
- D doc,
- M doc_matters,
- ) {
- debug(asserts) {
- static assert(is(typeof(doc) == string[]));
- }
- auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
- try {
- if (!exists(pth_html.base)) {
- pth_html.base.mkdirRecurse;
- }
- auto f = File(pth_html.fn_scroll(doc_matters.src.filename), "w");
- foreach (o; doc) {
- f.writeln(o);
- }
- } catch (ErrnoException ex) {
- // Handle error
- }
- if (!(doc_matters.opt.action.quiet)) {
- writeln(" ", pth_html.fn_scroll(doc_matters.src.filename));
- }
- }
- void seg(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
- mixin spineOutputRgxInit;
- auto rgx = Rgx();
- auto xhtml_format = outputXHTMLs();
- string[][string] doc_html;
- string[][string] doc_html_endnotes;
- string[] doc;
- string segment_filename;
- string[] top_level_headings = ["","","",""];
- string previous_seg_filename = "";
- string suffix = ".html";
- string previous_part = "";
- string delimit = "";
- foreach (part; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[part]) {
- delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj);
- if (obj.metainfo.is_a == "heading") {
- assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
- switch (obj.metainfo.heading_lev_markup) {
- case 0: .. case 3:
- /+ fill buffer, and replace with new levels from 1 to 3 +/
- switch (obj.metainfo.heading_lev_markup) {
- case 0:
- top_level_headings[0] = "";
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 1:
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 2:
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 3:
- top_level_headings[3] = "";
- goto default;
- default:
- auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
- top_level_headings[obj.metainfo.heading_lev_markup] = t[0];
- break;
- }
- break;
- case 4:
- segment_filename = obj.tags.segment_anchor_tag_epub;
- doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg");
- auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc_matters);
- doc_html[segment_filename] ~= navigation_bar.toc_pre_next;
- previous_seg_filename = segment_filename;
- foreach (top_level_heading; top_level_headings) {
- doc_html[segment_filename] ~= top_level_heading;
- }
- auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc_matters);
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case 5: .. case 7:
- auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case 8: .. case 9:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
- writeln(__FILE__, ":", __LINE__, ": ", obj.text);
- }
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
- }
- }
- break;
- }
- } else {
- assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
- switch (obj.metainfo.is_of_part) {
- case "frontmatter": assert(part == "head" || "toc");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "toc":
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- case "body": assert(part == "body");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "para":
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- case "block":
- switch (obj.metainfo.is_a) {
- case "quote":
- auto t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "group":
- auto t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "block":
- auto t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "poem":
- break;
- case "verse":
- auto t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0].to!string;
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "code":
- doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters);
- break;
- case "table":
- doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters);
- doc_html_endnotes[segment_filename] ~= "";
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
- }
- }
- break;
- }
- break;
- case "backmatter":
- assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
- switch (obj.metainfo.is_of_type) {
- case "para":
- switch (obj.metainfo.is_a) {
- case "endnote": assert(part == "endnotes");
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0];
- break;
- case "glossary": assert(part == "glossary");
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0];
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "bibliography": assert(part == "bibliography");
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0];
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "bookindex": assert(part == "bookindex");
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0];
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- case "blurb": assert(part == "blurb");
- auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
- doc_html[segment_filename] ~= t[0];
- doc_html_endnotes[segment_filename] ~= t[1];
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- }
- }
- break;
- }
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
- }
- }
- break;
- }
- break;
- case "comment":
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
- }
- }
- break;
- }
- }
- }
- }
- seg_write_output(doc_html, doc_html_endnotes, doc_matters);
- }
- void seg_write_output(D,E,M)(
- D doc_html,
- E doc_html_endnotes,
- M doc_matters,
- ) {
- debug(asserts) {
- static assert(is(typeof(doc_html) == string[][string]));
- }
- mixin spineOutputRgxInit;
- auto rgx = Rgx();
- auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
- auto xhtml_format = outputXHTMLs();
- auto m = doc_matters.src.filename.matchFirst(rgx.src_fn);
- try {
- if (!exists(pth_html.seg(doc_matters.src.filename))) {
- pth_html.seg(doc_matters.src.filename).mkdirRecurse;
- }
- foreach (seg_filename; doc_matters.has.segnames_lv4) {
- auto f = File(pth_html.fn_seg(doc_matters.src.filename, seg_filename), "w");
- foreach (docseg; doc_html[seg_filename]) {
- f.writeln(docseg);
- }
- foreach (docseg; doc_html_endnotes[seg_filename]) {
- f.writeln(docseg);
- }
- f.writeln(xhtml_format.tail);
- }
- } catch (ErrnoException ex) {
- // handle error
- }
- if (!(doc_matters.opt.action.quiet)) {
- writeln(" ", pth_html.fn_seg(doc_matters.src.filename, "toc"));
- }
- }
- void css(M)(M doc_matters) {
- auto css = spineCss(doc_matters);
- auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
- try {
- if (!exists(pth_html.css)) {
- (pth_html.css).mkdirRecurse;
- }
- auto f = File(pth_html.fn_seg_css, "w");
- f.writeln(css.html_seg);
- f = File(pth_html.fn_scroll_css, "w");
- f.writeln(css.html_scroll);
- } catch (ErrnoException ex) {
- // Handle error
- }
- }
- void images_cp(M)(
- M doc_matters,
- ) {
- { /+ (copy html images) +/
-
- auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
- if (!exists(pth_html.image)) {
- pth_html.image.mkdirRecurse;
- }
- foreach (image; doc_matters.srcs.image_list) {
- auto fn_src_in = doc_matters.src.image_dir_path ~ "/" ~ image;
- auto fn_src_out = pth_html.image ~ "/" ~ image;
- debug(images_html) {
- writeln(fn_src_in, " -> ", fn_src_out);
- }
- if (exists(fn_src_in)) {
- fn_src_in.copy(fn_src_out);
- } else {
- if (!(doc_matters.opt.action.quiet)) {
- writeln("WARNING image not found: ", fn_src_in);
- }
- }
- }
- }
- }
-}