diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2025-10-14 09:02:41 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2025-10-14 10:54:55 -0400 | 
| commit | 7864505c3d3030c7a32d0eee360528d0d504f747 (patch) | |
| tree | d5fd182a02fdc3a4c44526661bddab508ff60629 /src/sisudoc/io_out/text.d | |
| parent | abstraction metainfo, provide endnote parent ocn (diff) | |
text output, improve various (including no-ocn)
- revisit links (fix later)
Diffstat (limited to 'src/sisudoc/io_out/text.d')
| -rw-r--r-- | src/sisudoc/io_out/text.d | 65 | 
1 files changed, 30 insertions, 35 deletions
diff --git a/src/sisudoc/io_out/text.d b/src/sisudoc/io_out/text.d index ce37310..9401bae 100644 --- a/src/sisudoc/io_out/text.d +++ b/src/sisudoc/io_out/text.d @@ -66,8 +66,7 @@ template outputText() {      string newlines = "\n\n";      template special_characters_and_font_face() {        string code(string _txt){ -         _txt = _txt -           .replaceAll(rgx.nbsp_char,          " "); +        _txt = _txt.replaceAll(rgx.nbsp_char, " ");          return _txt;        }        string general(string _txt) { @@ -89,21 +88,16 @@ template outputText() {          return _txt;        }        string links_and_images(string _txt){ -        if (_txt.matchFirst(rgx.inline_link)) { +        if (_txt.match(rgx.inline_link)) {            foreach (m; _txt.matchAll(rgx.inline_link)) { -            if (m.captures[3] == "0") { -              _txt = _txt -                .replaceFirst(rgx.inline_link,        (m.captures[1])); -            } else { -              _txt = _txt -                .replaceFirst(rgx.inline_link,        (m.captures[1] ~ " ≫" ~ m.captures[3])); -            } +            _txt = (m.captures[3] == "0") +              ? _txt.replaceFirst(rgx.inline_link, (m.captures[1])) +              : _txt.replaceFirst(rgx.inline_link, (m.captures[1] ~ " ≫" ~ m.captures[3]));            }          }          if (_txt.matchFirst(rgx.inline_image)) {            foreach (m; _txt.matchAll(rgx.inline_image)) { -              _txt = _txt -                .replaceFirst(rgx.inline_image,        (m.captures[3])); +            _txt = _txt.replaceFirst(rgx.inline_image, (m.captures[3]));            }          }          return _txt; @@ -114,28 +108,22 @@ template outputText() {        string _notes;        string _ocn;        string general_munge; -      if (obj.metainfo.ocn == 0 || doc_matters.opt.action.ocn_off) { -        _ocn = ""; -      } else { -        _ocn =  "「" ~ obj.metainfo.ocn.to!string ~ "」" ~ newline; -      } +      _ocn = (obj.metainfo.ocn == 0 || doc_matters.opt.action.ocn_off) +        ? "" : "「" ~ obj.metainfo.ocn.to!string ~ "」" ~ newline;        if (_txt.matchFirst(rgx.inline_notes_al_gen)) {          foreach (m; _txt.matchAll(rgx.inline_notes_al_regular_number_note)) { -          _notes ~= newlines ~ m["num"] ~ ". " ~ m["note"]; +          _notes ~= newlines ~ m["num"] ~ ". " +            ~ special_characters_and_font_face!().general(m["note"].replaceAll(rgx.inline_link, ("$1")));          }        }        _txt = _txt.replaceAll(rgx.inline_notes_al_regular_number_note, "[$1]"); -      if (obj.metainfo.is_a == "code") { -        _txt = special_characters_and_font_face!().code(_txt); -      } else { -        _txt = special_characters_and_font_face!().general(_txt); -      } +      _txt = (obj.metainfo.is_a == "code") +        ? special_characters_and_font_face!().code(_txt) +        : special_characters_and_font_face!().general(_txt);        _txt = special_characters_and_font_face!().links_and_images(_txt); -      if (obj.metainfo.is_a == "heading") { -        general_munge = newline ~ _txt ~ _notes ~ newline ~ _ocn ~ newline; -      } else { -        general_munge = _txt ~ _notes ~ newline ~ _ocn ~ newline; -      } +      general_munge = (obj.metainfo.is_a == "heading") +        ? newline ~ _txt ~ _notes ~ newline ~ _ocn ~ newline +        : _txt ~ _notes ~ newline ~ _ocn ~ newline;        return general_munge;      }      string toc(O,M)(O obj, M doc_matters) { @@ -164,7 +152,9 @@ template outputText() {          default:            break;        } -      _txt = _txt.replaceAll(rgx.inline_link,  (_spaces ~ "$1   ≫ $3")); +      _txt = (doc_matters.opt.action.ocn_off) +        ? _txt.replaceAll(rgx.inline_link,  (_spaces ~ "$1")) +        : _txt.replaceAll(rgx.inline_link,  (_spaces ~ "$1   ≫ $3"));        return _txt ~ newline;      }      string heading(O,M)(O obj, M doc_matters) { @@ -308,19 +298,24 @@ template outputText() {        string _ocn;        _ocn =  "「" ~ obj.metainfo.ocn.to!string ~ "」";        string _txt = obj.text; +      string _parent_ocn;        _txt = _txt -        .replaceAll(rgx.inline_link,  ("$1")) // consider -        .replaceFirst(rgx.inline_superscript,  ("$1")); -      _txt = special_characters_and_font_face!().general(_txt)  ~ " ≫" ~ obj.metainfo.parent_ocn.to!string; +        .replaceAll(rgx.inline_link, ("$1")) // consider +        .replaceFirst(rgx.inline_superscript, ("$1")); +      _parent_ocn = (obj.metainfo.parent_ocn == 0 || doc_matters.opt.action.ocn_off) +        ? "" : " ≫" ~ obj.metainfo.parent_ocn.to!string; +      _txt = special_characters_and_font_face!().general(_txt) ~ _parent_ocn;        return _txt ~ newlines;      }      string bookindex(O,M)(O obj, M doc_matters) {        // puts(obj.metainfo.is_a);        // return obj.metainfo.is_a;        string _txt = obj.text; -      _txt = _txt -        .replaceAll(rgx.inline_link,  ("≫$1")) -        .replaceAll(regex("\\s*\\\\"),  ""); +      _txt = (doc_matters.opt.action.ocn_off) +        ? _txt.replaceAll(rgx.find_bookindex_ocn_link_and_comma, "") +            .replaceAll(regex("\\s*\\\\"), "") +        : _txt.replaceAll(rgx.inline_link, ("≫$1")) +            .replaceAll(regex("\\s*\\\\"), "");        _txt = special_characters_and_font_face!().general(_txt);        return _txt ~ newlines;      }  | 
