diff options
Diffstat (limited to 'src/doc_reform')
| -rw-r--r-- | src/doc_reform/io_out/epub3.d | 58 | ||||
| -rw-r--r-- | src/doc_reform/io_out/xmls.d | 1 | 
2 files changed, 35 insertions, 24 deletions
| diff --git a/src/doc_reform/io_out/epub3.d b/src/doc_reform/io_out/epub3.d index a49304f..efdf12c 100644 --- a/src/doc_reform/io_out/epub3.d +++ b/src/doc_reform/io_out/epub3.d @@ -71,6 +71,7 @@ template outputEPub3() {        .replaceAll(rgx.xhtml_less_than,    "<")   // "<"        .replaceAll(rgx.xhtml_greater_than, ">")   // ">"        .replaceAll(rgx.br_line,            "<br />") +      .replaceAll(rgx.br_newline_inline,  "<br />")        .replaceAll(rgx.nbsp_char,          " ");      return _txt;    } @@ -183,6 +184,7 @@ template outputEPub3() {      auto markup = InlineMarkup();      static auto rgx = RgxO();      string toc; +    bool _new_title_set = false;      string toc_head = format(q"┃<html xmlns="https://www.w3.org/1999/xhtml"        xmlns:epub="http://www.idpf.org/2007/ops">    <head> @@ -194,7 +196,7 @@ template outputEPub3() {        <h1>Contents</h1>      </header>      <nav epub:type="toc" id="toc"> -      <li>┃", +  ┃",              (doc_matters.conf_make_meta.meta.title_full).special_characters_text,            );      string _toc_nav_tail = ""; @@ -202,17 +204,9 @@ template outputEPub3() {      foreach (sect; doc_matters.has.keys_seq.seg) {        foreach (obj; doc_abstraction[sect]) {          if ((sect == "head") && (obj.metainfo.is_a == "heading")) { -          toc = format(q"┃%s -        <a href="_the_title.xhtml">%s</a> -      </li> -  ┃", -            toc_head, -            obj.text -              .replaceAll(rgx.inline_notes_al_gen, "") -              .replaceAll(rgx.br_newline_inline, "<br />") -              .strip, -          ); -        } else if (sect == "tail") { // skip +          toc = toc_head; +        } +        if (sect == "tail") { // skip          } else if ((sect != "tail") && (obj.metainfo.is_a == "heading")) {            string _txt = obj.text.replaceAll(rgx.inline_notes_al_gen, "").strip;            foreach_reverse (n; 0 .. 7) { @@ -228,23 +222,39 @@ template outputEPub3() {                toc ~= markup.indent_by_spaces_provided((n + 1), "    ") ~ "</li>" ~ "\n";                goto default;              case DomTags.open : -              toc ~= markup.indent_by_spaces_provided(n, "    ") ~ "<ol>" ~ "\n"; +              if (!(_new_title_set)) { +                toc ~= markup.indent_by_spaces_provided(n, "    ") ~ "<ol>" ~ "\n"; +              }                goto default;              default :                if ((obj.metainfo.dom_structure_collapsed_tags_status[n] == DomTags.close_and_open ||                     obj.metainfo.dom_structure_collapsed_tags_status[n] == DomTags.open                )) { -                string _hashtag = ""; -                if ((obj.metainfo.heading_lev_markup <= 4) && (obj.metainfo.ocn == 0)) { -                  _hashtag = "#" ~ obj.metainfo.ocn.to!string; +                if ((sect == "head") && (obj.metainfo.is_a == "heading")) { +                  toc ~= format(q"┃      <li> +        <a href="_the_title.xhtml">%s</a> +      </li>┃", +                    obj.text +                      .replaceAll(rgx.inline_notes_al_gen, "") +                      .replaceAll(rgx.br_newline_inline, "<br />") +                      .strip, +                  ); +                  toc ~= "\n"; +                  _new_title_set = true; +                } else { +                  _new_title_set = false; +                  string _hashtag = ""; +                  if ((obj.metainfo.heading_lev_markup <= 4) && (obj.metainfo.ocn == 0)) { +                    _hashtag = "#" ~ obj.metainfo.ocn.to!string; +                  } +                  string _href = "<a href=\"" +                    ~ obj.tags.segment_anchor_tag_epub ~ ".xhtml" +                    ~ _hashtag +                    ~ "\">"; +                  toc ~= markup.indent_by_spaces_provided((n + 1), "    ") ~ "<li>" ~ "\n" +                  ~ markup.indent_by_spaces_provided((n + 2), "    ") +                  ~ _href ~ _txt.special_characters_text ~ "</a>" ~ "\n";                  } -                string _href = "<a href=\"" -                  ~ obj.tags.segment_anchor_tag_epub ~ ".xhtml" -                  ~ _hashtag -                  ~ "\">"; -                toc ~= markup.indent_by_spaces_provided((n + 1), "    ") ~ "<li>" ~ "\n" -                ~ markup.indent_by_spaces_provided((n + 2), "    ") -                ~ _href ~ _txt.special_characters_text ~ "</a>" ~ "\n";                }                break;              } @@ -261,8 +271,8 @@ template outputEPub3() {                // case DomTags.open: case DomTags.close_and_open: case DomTags.open_still:                  if (n != 0) {                    _toc_nav_tail ~= "   " ~ markup.indent_by_spaces_provided((n + 1), "  ") ~ "</li>" ~ "\n"; +                  _toc_nav_tail ~= "   " ~ markup.indent_by_spaces_provided(n, "  ") ~ "</ol>" ~ "\n";                  } -                _toc_nav_tail ~= "   " ~ markup.indent_by_spaces_provided(n, "  ") ~ "</ol>" ~ "\n";                  break;                default :                  break; diff --git a/src/doc_reform/io_out/xmls.d b/src/doc_reform/io_out/xmls.d index 6191fa9..fd9305a 100644 --- a/src/doc_reform/io_out/xmls.d +++ b/src/doc_reform/io_out/xmls.d @@ -100,6 +100,7 @@ template outputXHTMLs() {          .replaceAll(rgx.xhtml_less_than,    "<")   // "<"          .replaceAll(rgx.xhtml_greater_than, ">")   // ">"          .replaceAll(rgx.br_line,            "<br />") +        .replaceAll(rgx.br_newline_inline,  "<br />")          .replaceAll(rgx.nbsp_char,          " ");        return _txt;      } | 
