diff options
Diffstat (limited to 'src/sisudoc/io_out/html.d')
| -rw-r--r-- | src/sisudoc/io_out/html.d | 151 | 
1 files changed, 71 insertions, 80 deletions
| diff --git a/src/sisudoc/io_out/html.d b/src/sisudoc/io_out/html.d index c1f0aa5..6d3129a 100644 --- a/src/sisudoc/io_out/html.d +++ b/src/sisudoc/io_out/html.d @@ -64,22 +64,19 @@ template outputHTML() {      sisudoc.io_out.xmls,      sisudoc.io_out.xmls_css;    mixin outputXHTMLs; -  void scroll(D,M)( -    const        D    doc_abstraction, -                 M    doc_matters, -  ) { +  void scroll(D)(D doc) {      mixin spineRgxOut;      mixin spineRgxXHTML;      auto xhtml_format = outputXHTMLs();      static auto rgx = RgxO();      static auto rgx_xhtml = RgxXHTML();      string[] doc_html; -    string[] doc; +    string[] doc_out;      string suffix = ".html";      string previous_section = "";      string delimit = ""; -    foreach (section; doc_matters.has.keys_seq.scroll) { -      foreach (obj; doc_abstraction[section]) { +    foreach (section; doc.matters.has.keys_seq.scroll) { +      foreach (obj; doc.abstraction[section]) {          delimit = xhtml_format.div_delimit(section, previous_section);          string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj);          switch (obj.metainfo.is_of_part) { @@ -88,14 +85,14 @@ template outputHTML() {            case "para":              switch (obj.metainfo.is_a) {              case "heading": -              doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); +              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); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                  }                } @@ -104,7 +101,7 @@ template outputHTML() {              break;            default:              { /+ debug +/ -              if (doc_matters.opt.action.debug_do_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);                }              } @@ -116,14 +113,14 @@ template outputHTML() {            case "para":              switch (obj.metainfo.is_a) {              case "heading": -              doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); +              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); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                  }                } @@ -133,28 +130,28 @@ template outputHTML() {            case "block":              switch (obj.metainfo.is_a) {              case "quote": -              doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters); +              doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc.matters);                break;              case "group": -              doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters); +              doc_html ~= xhtml_format.group_scroll(_txt, obj, doc.matters);                break;              case "block": -              doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters); +              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); +              doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc.matters, suffix);                break;              case "code": -              doc_html ~= xhtml_format.code(_txt, obj, doc_matters); +              doc_html ~= xhtml_format.code(_txt, obj, doc.matters);                break;              case "table": -              doc_html ~= xhtml_format.table(_txt, obj, doc_matters); +              doc_html ~= xhtml_format.table(_txt, obj, doc.matters);                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                  }                } @@ -163,7 +160,7 @@ template outputHTML() {              break;            default:              { /+ debug +/ -              if (doc_matters.opt.action.debug_do_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);                }              } @@ -176,29 +173,29 @@ template outputHTML() {            case "para":              switch (obj.metainfo.is_a) {              case "heading": -              doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix);                break;              case "endnote":              assert(section == "endnotes"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              case "glossary":             assert(section == "glossary"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              case "bibliography":         assert(section == "bibliography"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              case "bookindex":            assert(section == "bookindex"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              case "blurb":                assert(section == "blurb"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              case "tail":                 assert(section == "tail"); -              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); +              doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                  }                } @@ -207,7 +204,7 @@ template outputHTML() {              break;            default:              { /+ debug +/ -              if (doc_matters.opt.action.debug_do_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);                }              } @@ -218,7 +215,7 @@ template outputHTML() {            break;          default:            { /+ debug +/ -            if (doc_matters.opt.action.debug_do_html) { +            if (doc.matters.opt.action.debug_do_html) {                writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);                writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                writeln(__FILE__, ":", __LINE__, ": ", obj.text); @@ -228,18 +225,18 @@ template outputHTML() {          }        }      } -    doc = xhtml_format.html_head(doc_matters, "scroll") +    doc_out = xhtml_format.html_head(doc.matters, "scroll")      ~ doc_html      ~ xhtml_format.dom_close -    ~ xhtml_format.tail(doc_matters); -    scroll_write_output(doc, doc_matters); +    ~ xhtml_format.tail(doc.matters); +    scroll_write_output(doc_out, doc.matters);    } -  @trusted void scroll_write_output(D,M)( -    D doc, +  @trusted void scroll_write_output(O,M)( +    O doc_out,      M doc_matters,    ) {      debug(asserts) { -      static assert(is(typeof(doc)    == string[])); +      static assert(is(typeof(doc_out)    == string[]));      }      auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);      try { @@ -248,7 +245,7 @@ template outputHTML() {        }        {          auto f = File(pth_html.fn_scroll(doc_matters.src.filename), "w"); -        foreach (o; doc) { +        foreach (o; doc_out) {            f.writeln(o);          }        } @@ -271,10 +268,7 @@ template outputHTML() {        writeln(" ", pth_html.fn_scroll(doc_matters.src.filename));      }    } -  void seg(D,M)( -    const D    doc_abstraction, -          M    doc_matters, -  ) { +  void seg(D)(D doc) {      mixin spineRgxOut;      mixin spineRgxXHTML;      static auto rgx = RgxO(); @@ -282,15 +276,14 @@ template outputHTML() {      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_section = "";      string delimit = ""; -    foreach (section; doc_matters.has.keys_seq.seg) { -      foreach (obj; doc_abstraction[section]) { +    foreach (section; doc.matters.has.keys_seq.seg) { +      foreach (obj; doc.abstraction[section]) {          delimit = xhtml_format.div_delimit(section, previous_section);          string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj);          if (obj.metainfo.is_a == "heading") { @@ -318,33 +311,33 @@ template outputHTML() {                top_level_headings[3] = "";                goto default;              default: -              Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); +              Tuple!(string, string[]) 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] ~= 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;              } -            Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); +            Tuple!(string, string[]) 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[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc.matters);              doc_html_endnotes[segment_filename] ~= t[1];              break;            case 5: .. case 7: -            Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); +            Tuple!(string, string[]) 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_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);                  writeln(__FILE__, ":", __LINE__, ": ", obj.text);                } @@ -352,7 +345,7 @@ template outputHTML() {              break;            default:              { /+ debug +/ -              if (doc_matters.opt.action.debug_do_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);                }              } @@ -367,12 +360,12 @@ template outputHTML() {              case "para":                switch (obj.metainfo.is_a) {                case "toc": -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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_html) { +                  if (doc.matters.opt.action.debug_do_html) {                      writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                    }                  } @@ -381,7 +374,7 @@ template outputHTML() {                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                  }                } @@ -393,13 +386,13 @@ template outputHTML() {              case "para":                switch (obj.metainfo.is_a) {                case "para": -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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_html) { +                  if (doc.matters.opt.action.debug_do_html) {                      writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                    }                  } @@ -409,24 +402,24 @@ template outputHTML() {              case "block":                switch (obj.metainfo.is_a) {                case "quote": -                t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg"); +                t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "seg");                  goto default;                case "group": -                t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg"); +                t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "seg");                  goto default;                case "block": -                t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg"); +                t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "seg");                  goto default;                case "poem":                  break;                case "verse": -                t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg"); +                t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "seg");                  goto default;                case "code": -                doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters); +                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[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters);                  doc_html_endnotes[segment_filename] ~= "";                  break;                default: @@ -438,7 +431,7 @@ template outputHTML() {                    doc_html[segment_filename] ~= t[0].to!string;                    doc_html_endnotes[segment_filename] ~= t[1];                  } else { /+ debug +/ -                  if (doc_matters.opt.action.debug_do_html) { +                  if (doc.matters.opt.action.debug_do_html) {                      writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                    }                  } @@ -447,7 +440,7 @@ template outputHTML() {                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);                  }                } @@ -460,37 +453,37 @@ template outputHTML() {              case "para":                switch (obj.metainfo.is_a) {                case "endnote":             assert(section == "endnotes"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");                  doc_html[segment_filename] ~= t[0];                  break;                case "glossary":            assert(section == "glossary"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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(section == "bibliography"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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(section == "bookindex"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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(section == "blurb"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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 "tail":                assert(section == "tail"); -                t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); +                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_html) { +                  if (doc.matters.opt.action.debug_do_html) {                      writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);                    }                  } @@ -499,7 +492,7 @@ template outputHTML() {                break;              default:                { /+ debug +/ -                if (doc_matters.opt.action.debug_do_html) { +                if (doc.matters.opt.action.debug_do_html) {                    writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);                  }                } @@ -510,7 +503,7 @@ template outputHTML() {              break;            default:              { /+ debug +/ -              if (doc_matters.opt.action.debug_do_html) { +              if (doc.matters.opt.action.debug_do_html) {                  writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);                }              } @@ -519,7 +512,7 @@ template outputHTML() {          }        }      } -    seg_write_output(doc_html, doc_html_endnotes, doc_matters); +    seg_write_output(doc_html, doc_html_endnotes, doc.matters);    }    @trusted void seg_write_output(D,E,M)( // @system?      D doc_html, @@ -587,9 +580,7 @@ template outputHTML() {        // Handle error      }    } -  @trusted void images_cp(M)( // @system -    M    doc_matters, -  ) { +  @trusted void images_cp(M)(M doc_matters) { // @system      { /+ (copy html images) +/        auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);        if (!exists(pth_html.image)) { | 
