From f5c32101f14aa21c056b57ddce14394b7f1e7c23 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Thu, 2 Feb 2017 12:17:38 -0500
Subject: 0.12.2 ao_summary_and_debugs.org (ao_output_debugs.org moved and
 reorganised)

---
 src/sdp.d                      |   7 +-
 src/sdp/abstraction.d          |   5 +-
 src/sdp/abstraction_summary.d  |  89 ++++++
 src/sdp/ao_doc_debugs.d        | 653 +++++++++++++++++++++++++++++++++++++
 src/sdp/ao_output_debugs.d     | 708 -----------------------------------------
 src/sdp/ao_read_source_files.d |   8 +-
 6 files changed, 755 insertions(+), 715 deletions(-)
 create mode 100644 src/sdp/abstraction_summary.d
 create mode 100644 src/sdp/ao_doc_debugs.d
 delete mode 100644 src/sdp/ao_output_debugs.d

(limited to 'src')

diff --git a/src/sdp.d b/src/sdp.d
index 31593e0..9d19d38 100755
--- a/src/sdp.d
+++ b/src/sdp.d
@@ -7,12 +7,13 @@ import
   abstraction;
 /+ sdp: sisu document parser, see http://sisudoc.org +/
 import
+  abstraction_summary,
   ao_abstract_doc_source,
   ao_conf_make_meta,
   ao_conf_make_meta_native,
   ao_conf_make_meta_sdlang,
   ao_defaults,
-  ao_output_debugs,
+  ao_doc_debugs,
   ao_read_config_files,
   ao_read_source_files,
   ao_rgx,
@@ -189,6 +190,10 @@ void main(string[] args) {
       auto doc_abstraction = t[0];
       auto doc_matters = t[1];
       /+ ↓ debugs +/
+      if (doc_matters.opt_action_bool["verbose"]) {
+        SiSUabstractionSummary!()(doc_abstraction, doc_matters);
+      }
+      /+ ↓ debugs +/
       if ((doc_matters.opt_action_bool["debug"])
       || (doc_matters.opt_action_bool["verbose"])
       ) {
diff --git a/src/sdp/abstraction.d b/src/sdp/abstraction.d
index de26582..c799fb7 100644
--- a/src/sdp/abstraction.d
+++ b/src/sdp/abstraction.d
@@ -1,12 +1,13 @@
 template SiSUabstraction() {
   /+ sdp: sisu document parser, see http://sisudoc.org +/
   import
+    abstraction_summary,
     ao_abstract_doc_source,
     ao_conf_make_meta,
     ao_conf_make_meta_native,
     ao_conf_make_meta_sdlang,
     ao_defaults,
-    ao_output_debugs,
+    ao_doc_debugs,
     ao_read_config_files,
     ao_read_source_files,
     ao_rgx,
@@ -48,7 +49,7 @@ template SiSUabstraction() {
     /+ ↓ read file (filename with path) +/
     /+ ↓ file tuple of header and content +/
     auto _0_header_1_body_content_2_insert_filelist_tuple =
-      SiSUmarkupRaw!()(fn_src);
+      SiSUrawMarkupContent!()(fn_src);
     static assert(!isTypeTuple!(_0_header_1_body_content_2_insert_filelist_tuple));
     static assert(_0_header_1_body_content_2_insert_filelist_tuple.length==3);
     debug(header_and_body) {
diff --git a/src/sdp/abstraction_summary.d b/src/sdp/abstraction_summary.d
new file mode 100644
index 0000000..d39e020
--- /dev/null
+++ b/src/sdp/abstraction_summary.d
@@ -0,0 +1,89 @@
+template SiSUabstractionSummary() {
+  auto SiSUabstractionSummary(S,T)(
+    auto ref const S         contents,
+    auto ref T               doc_matters,
+  ) {
+    import
+      ao_defaults,
+      ao_rgx;
+    import
+      std.algorithm,
+      std.array,
+      std.container,
+      std.exception,
+      std.getopt,
+      std.stdio,
+      std.file,
+      std.path,
+      std.range,
+      std.regex,
+      std.string,
+      std.traits,
+      std.typecons,
+      std.uni,
+      std.utf,
+      std.conv : to;
+    mixin InternalMarkup;
+    auto markup = InlineMarkup();
+    if (doc_matters.opt_action_bool["verbose"]) {
+      string[string] check = [
+        "last_obj_cite_number" : "NA [debug \"checkdoc\" not run]",
+      ];
+      foreach (k; doc_matters.keys_seq_seg) {
+        foreach (obj; contents[k]) {
+          if (obj.use != "empty") {
+            if (!empty(obj.obj_cite_number)) {
+              check["last_obj_cite_number"] = obj.obj_cite_number;
+            }
+          }
+        }
+      }
+      // auto char_repeat_number = doc_matters.source_filename.length;
+      // char_repeat_number = (char_repeat_number > 33)
+      auto min_repeat_number = 66;
+      auto char_repeat_number = (doc_matters.dochead_meta["title"]["full"].length
+        + doc_matters.dochead_meta["creator"]["author"].length + 4);
+      char_repeat_number = (char_repeat_number > min_repeat_number)
+      ? char_repeat_number
+      : min_repeat_number;
+      // writeln(char_repeat_number);
+      writefln(
+        "%s\n\"%s\", %s\n%s\n%s\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n(%s: %s)\n%s",
+        markup.repeat_character_by_number_provided("-", char_repeat_number),
+        doc_matters.dochead_meta["title"]["full"],
+        doc_matters.dochead_meta["creator"]["author"],
+        doc_matters.source_filename,
+        markup.repeat_character_by_number_provided("-", char_repeat_number),
+        "length toc array:      ",
+        to!int(contents["toc_seg"].length),
+        "length contents array: ",
+        to!int(contents["body"].length),
+        "last obj_cite_number:  ",
+        to!int(check["last_obj_cite_number"]),
+        "length endnotes:       ",
+        (contents["endnotes"].length > 1)
+        ? (to!int(contents["endnotes"].length))
+        : 0,
+        "length glossary:       ",
+        (contents["glossary"].length > 1)
+        ? (to!int(contents["glossary"].length))
+        : 0,
+        "length biblio:         ",
+        (contents["bibliography"].length > 1)
+        ? (to!int(contents["bibliography"].length))
+        : 0,
+        "length bookindex:      ",
+        (contents["bookindex_seg"].length > 1)
+        ? (to!int(contents["bookindex_seg"].length))
+        : 0,
+        "length blurb:          ",
+        (contents["blurb"].length > 1)
+        ? (to!int(contents["blurb"].length))
+        : 0,
+        __FILE__,
+        __LINE__,
+        markup.repeat_character_by_number_provided("-", min_repeat_number),
+      );
+    }
+  }
+}
diff --git a/src/sdp/ao_doc_debugs.d b/src/sdp/ao_doc_debugs.d
new file mode 100644
index 0000000..c5f1486
--- /dev/null
+++ b/src/sdp/ao_doc_debugs.d
@@ -0,0 +1,653 @@
+/++
+  output debugs
++/
+template SiSUdebugs() {
+  import
+    ao_defaults,
+    ao_rgx;
+  private import
+    std.algorithm,
+    std.array,
+    std.container,
+    std.exception,
+    std.getopt,
+    std.json,
+    std.process,
+    std.stdio,
+    std.file,
+    std.path,
+    std.range,
+    std.regex,
+    std.string,
+    std.traits,
+    std.typecons,
+    std.uni,
+    std.utf,
+    std.conv : to;
+  auto SiSUdebugs(S,T)(
+    auto ref const S         contents,
+    auto ref T               doc_matters,
+  ) {
+    mixin SiSUrgxInit;
+    mixin InternalMarkup;
+    auto rgx = Rgx();
+    auto markup = InlineMarkup();
+    string key;
+    debug(parent) {
+      writefln(
+        "%s:%s",
+        __FILE__,
+        __LINE__,
+      );
+      foreach (key; doc_matters.keys_seq_seg) {
+        foreach (obj; contents[key]) {
+          if (obj.use != "empty") {
+            if (obj.is_a == "heading") {
+              writefln(
+                "%s node: %s heading: %s %s",
+                obj.obj_cite_number,
+                obj.node,
+                obj.heading_lev_markup,
+                obj.text,
+              );
+            }
+          }
+        }
+      }
+    }
+    debug(dumpdoc) {
+      writefln(
+        "%s\n%s:%s",
+        "-------------------------------",
+        __FILE__,
+        __LINE__,
+      );
+      foreach (obj; contents) {
+        if (obj.use != "empty") {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(section_head) {
+      key="head";
+      if (contents[key].length > 1) {
+        foreach (obj; contents[key]) {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(section_toc) {
+      key="toc_seg";
+      out_toc(contents, key);
+    }
+    debug(section_toc_seg) {
+      key="toc_seg";
+      out_toc(contents, key);
+    }
+    debug(section_toc_scroll) {
+      key="toc_scroll";
+      out_toc(contents, key);
+    }
+    debug(segnames) {
+      writeln(__LINE__);
+      out_segnames(contents, doc_matters);
+    }
+    debug(section_body) {
+      key="body";
+      if (contents[key].length > 1) {
+        foreach (obj; contents[key]) {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(dom) {
+      enum DomTags { none, open, close, close_and_open, open_still, }
+      foreach (sect; doc_matters.keys_seq_seg) {
+        foreach (obj; contents[sect]) {
+          if (obj.is_a == "heading") {
+            foreach_reverse (k; 0 .. 7) {
+              switch (obj.dom_markedup[k]) {
+              case DomTags.close :
+                writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+                break;
+              case DomTags.close_and_open :
+                writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+                writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+                break;
+              case DomTags.open :
+                writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+                break;
+              default :
+                break;
+              }
+            }
+          }
+        }
+      }
+      writeln("--------------------");
+      foreach (sect; doc_matters.keys_seq_seg) {
+        foreach (obj; contents[sect]) {
+          if (obj.is_a == "heading") {
+            foreach_reverse (k; 0 .. 7) {
+              switch (obj.dom_collapsed[k]) {
+              case DomTags.close :
+                writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+                break;
+              case DomTags.close_and_open :
+                writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+                writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+                break;
+              case DomTags.open :
+                writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+                break;
+              default :
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+    debug(section_endnotes) {
+      key="endnotes";
+      out_endnotes(contents, key);
+    }
+    debug(section_endnotes_seg) {
+      key="endnotes";
+      out_endnotes(contents, key);
+    }
+    debug(section_glossary) {
+      key="glossary";
+      if (contents[key].length > 1) {
+        foreach (obj; contents[key]) {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(section_bibliography) {
+      key="bibliography";
+      if (contents[key].length > 1) {
+        foreach (obj; contents[key]) {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(section_bookindex) {
+      key="bookindex_seg";
+      out_bookindex(contents, key);
+    }
+    debug(section_bookindex_seg) {
+      key="bookindex_seg";
+      out_bookindex(contents, key);
+    }
+    debug(section_bookindex_scroll) {
+      key="bookindex_scroll";
+      out_bookindex(contents, key);
+    }
+    debug(blurb_section) {
+      key="blurb";
+      if (contents[key].length > 1) {
+        foreach (obj; contents[key]) {
+          writefln(
+            "[%s][%s]\n%s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(objects) {
+      writefln(
+        "%s\n%s:%s",
+        "-------------------------------",
+        __FILE__,
+        __LINE__,
+      );
+      foreach (obj; contents) {
+        if (obj.use != "empty") {
+          writefln(
+            "* [%s][%s] %s",
+            obj.obj_cite_number,
+            obj.is_a,
+            obj.text
+          );
+        }
+      }
+    }
+    debug(headermakejson) {
+      writefln(
+        "%s\n%s\n%s",
+        "document header, metadata & make instructions:",
+        doc_matters.dochead_meta,
+        ptr_head_main,
+      );
+      foreach (main_header; ptr_head_main) {
+        switch (main_header) {
+        case "make":
+          foreach (sub_header; ptr_head_sub_make) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        default:
+          break;
+        }
+      }
+    }
+    debug(headermetadatajson) {
+      writefln(
+        "%s\n%s\n%s",
+        "document header, metadata & make instructions:",
+        doc_matters.dochead_meta,
+        ptr_head_main,
+      );
+      foreach (main_header; ptr_head_main) {
+        switch (main_header) {
+        case "creator":
+          foreach (sub_header; ptr_head_sub_creator) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "title":
+          foreach (sub_header; ptr_head_sub_title) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "rights":
+          foreach (sub_header; ptr_head_sub_rights) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "date":
+          foreach (sub_header; ptr_head_sub_date) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "original":
+          foreach (sub_header; ptr_head_sub_original) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "classify":
+          foreach (sub_header; ptr_head_sub_classify) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "identifier":
+          foreach (sub_header; ptr_head_sub_identifier) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "notes":
+          foreach (sub_header; ptr_head_sub_notes) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        case "publisher":
+          foreach (sub_header; ptr_head_sub_publisher) {
+            if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
+              writefln(
+                "%s:%s: %s",
+                main_header,
+                sub_header,
+                doc_matters.dochead_meta[main_header][sub_header]
+              );
+            }
+          }
+          break;
+        default:
+          break;
+        }
+      }
+    }
+    debug(anchor) {
+      writefln(
+        "%s\n%s:%s",
+        "-------------------------------",
+        __FILE__,
+        __LINE__,
+      );
+      foreach (k; doc_matters.keys_seq_seg) {
+        foreach (obj; contents[k]) {
+          if (obj.is_a == "heading") {
+            writefln(
+              "%s~ [%s] %s %s",
+              obj.marked_up_level,
+              obj.obj_cite_number,
+              obj.anchor_tags,
+              // "[", obj["is"], "] ",
+              obj.text
+            );
+          }
+        }
+      }
+    }
+    debug(heading) {                         // heading
+      foreach (k; doc_matters.keys_seq_seg) {
+        foreach (o; contents[k]) {
+          if (o.is_a == "heading") {
+            writefln(
+              "%s* %s\n                (markup level: %s; collapsed level: %s)",
+              replicate("  ", o.heading_lev_markup),
+              strip(o.text),
+              o.heading_lev_markup,
+              o.heading_lev_collapsed,
+            );
+          }
+        }
+      }
+    }
+    debug(summary) {
+      string[string] check = [
+        "last_obj_cite_number" : "NA [debug \"checkdoc\" not run]",
+      ];
+    }
+    debug(checkdoc) {
+      if ((doc_matters.opt_action_bool["debug"])) {
+        debug(headings) {
+          writefln(
+            "%s\n%s:%s",
+            "-------------------------------",
+            __FILE__,
+            __LINE__,
+          );
+          foreach (k; doc_matters.keys_seq_seg) {
+            foreach (obj; contents[k]) {
+              if (obj.is_a == "heading") {
+                writefln(
+                  "%s~ [%s] %s",
+                  obj.marked_up_level,
+                  obj.obj_cite_number,
+                  // "[", obj["is"], "] ",
+                  obj.text
+                );
+              }
+            }
+          }
+        }
+        debug(checkdoc) {
+          if (auto mfn=match(doc_matters.source_filename, rgx.src_fn)) {
+            if (doc_matters.opt_action_bool["assertions"]) {
+              switch (mfn.captures[2]) {
+              // live manual:
+              case "live-manual.ssm":
+                assert(check["last_obj_cite_number"] ==
+                  "1019","last obj_cite_number should be: 1019 (check test, document is frequently updated)"); // ok
+                break;
+              // sisu_markup:
+              case "sisu_markup.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "297","last obj_cite_number expected to be: 297 rather than " ~ check["last_obj_cite_number"]); // ok
+                // assert(check["last_obj_cite_number"] == "297","last obj_cite_number expected to be: 297 rather than " ~ check["last_obj_cite_number"]);
+                // notes for first divergance study sisu headings 247 250
+                // sisu has issue with code that contains heading 1~ which results in no obj_cite_number! ??
+                // sisu currently has incorrect last body obj_cite_number of 294!
+                // bug in sisu? attend
+                break;
+              // sisu-markup-samples:
+              case "accelerando.charles_stross.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "2861","last obj_cite_number expected to be: 2861 rather than " ~ check["last_obj_cite_number"]); // ok
+                break;
+              case "alices_adventures_in_wonderland.lewis_carroll.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "805","last obj_cite_number expected to be: 805 rather than " ~ check["last_obj_cite_number"]); // 808
+                break;
+              case "autonomy_markup0.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "77","last obj_cite_number expected to be: 77 rather than " ~ check["last_obj_cite_number"]); // ok endnotes
+                // assert(check["last_obj_cite_number"] == "78","last obj_cite_number expected to be: 78 rather than " ~ check["last_obj_cite_number"]);
+                break;
+              case "content.cory_doctorow.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "953","last obj_cite_number expected to be: 953 rather than " ~ check["last_obj_cite_number"]); // 1007 way off, check obj_cite_number off switches
+                // assert(check["last_obj_cite_number"] == "953","last obj_cite_number expected to be: 953 rather than " ~ check["last_obj_cite_number"]);
+                break;
+              case "democratizing_innovation.eric_von_hippel.sst":
+                // fixed ERROR! range violation, broken check! endnotes, bookindex, biblio
+                // error in bookindex ... (ch1; ch6; ch8 )
+                assert(check["last_obj_cite_number"] ==
+                  "905","last obj_cite_number expected to be: 905 rather than " ~ check["last_obj_cite_number"]); // 911
+                break;
+              case "down_and_out_in_the_magic_kingdom.cory_doctorow.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "1417","last obj_cite_number expected to be: 1417 rather than " ~ check["last_obj_cite_number"]); // 1455 check obj_cite_number off switches
+                break;
+              case "for_the_win.cory_doctorow.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "3510","last obj_cite_number expected to be: 3510 rather than " ~ check["last_obj_cite_number"]); // 3569 check obj_cite_number off switches
+                break;
+              case "free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "1082","last obj_cite_number expected to be: 1082 rather than " ~ check["last_obj_cite_number"]); // check 1079 too few
+                break;
+              case "free_culture.lawrence_lessig.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "1330","last obj_cite_number expected to be: 1330 rather than " ~ check["last_obj_cite_number"]); // 1312
+                // fixed ERROR! range violation, broken check!
+                // error in bookindex ... sections piracy (ch1) & property (ch10 market concentration) fixed
+                break;
+              case "free_for_all.peter_wayner.sst": // endnotes, bookindex, biblio
+                assert(check["last_obj_cite_number"] ==
+                  "1559","last obj_cite_number expected to be: 1559 rather than " ~ check["last_obj_cite_number"]); // 1560, check obj_cite_number off switches, has endnotes so 2 too many
+                // assert(check["last_obj_cite_number"] == "1559","last obj_cite_number expected to be: 1559 rather than " ~ check["last_obj_cite_number"]);
+                break;
+              case "gpl2.fsf.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "65","last obj_cite_number expected to be: 65 rather than " ~ check["last_obj_cite_number"]); // ok endnotes? check
+                // assert(check["last_obj_cite_number"] == "66","last obj_cite_number expected to be: 66 rather than " ~ check["last_obj_cite_number"]);
+                break;
+              case "gpl3.fsf.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "123","last obj_cite_number expected to be: 123 rather than " ~ check["last_obj_cite_number"]); // ok
+                break;
+              case "gullivers_travels.jonathan_swift.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "668","last obj_cite_number expected to be: 668 rather than " ~ check["last_obj_cite_number"]); // 674
+                break;
+              case "little_brother.cory_doctorow.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "3130","last obj_cite_number expected to be: 3130 rather than " ~ check["last_obj_cite_number"]); // 3204, check obj_cite_number off switches
+                break;
+              case "the_cathedral_and_the_bazaar.eric_s_raymond.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "258","last obj_cite_number expected to be: 258 rather than " ~ check["last_obj_cite_number"]); // ok
+                break;
+              case "the_public_domain.james_boyle.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "970","last obj_cite_number expected to be: 970 rather than " ~ check["last_obj_cite_number"]); // 978
+                break;
+              case "the_wealth_of_networks.yochai_benkler.sst": // endnotes, bookindex
+                assert(check["last_obj_cite_number"] ==
+                  "829","last obj_cite_number expected to be: 829 rather than " ~ check["last_obj_cite_number"]); // ok
+                // assert(check["last_obj_cite_number"] == "832","last obj_cite_number expected to be: 832 rather than " ~ check["last_obj_cite_number"]);
+                // has endnotes and bookindex, issue with sisu.rb
+                break;
+              case "through_the_looking_glass.lewis_carroll.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "949","last obj_cite_number expected to be: 949 rather than " ~ check["last_obj_cite_number"]); // 955
+                break;
+              case "two_bits.christopher_kelty.sst": // endnotes, bookindex, biblio
+                assert(check["last_obj_cite_number"] ==
+                  "1190","last obj_cite_number expected to be: 1190 rather than " ~ check["last_obj_cite_number"]); // 1191
+                // assert(check["last_obj_cite_number"] == "1193","last obj_cite_number expected to be: 1193 rather than " ~ check["last_obj_cite_number"]); // 1191 ok?
+                // has endnotes and bookindex, issue with sisu.rb
+                break;
+                // fixed ERROR! range violation!
+                // error in bookindex ... (ch3 the movement)
+              case "un_contracts_international_sale_of_goods_convention_1980.sst":
+                assert(check["last_obj_cite_number"] ==
+                  "377","last obj_cite_number expected to be: 377 rather than " ~ check["last_obj_cite_number"]); // ok
+                break;
+              case "viral_spiral.david_bollier.sst": // endnotes, bookindex
+                assert(check["last_obj_cite_number"] ==
+                  "1078","last obj_cite_number expected to be: 1078 rather than " ~ check["last_obj_cite_number"]); // 1100
+                // fixed ERROR! range violation!
+                // error in bookindex ... (ch7 ... building the cc machine, an extra semi colon)
+                break;
+              default:
+                writeln(doc_matters.source_filename);
+                break;
+              }
+            }
+          }
+        }
+        debug(checkdoc) {
+          void out_segnames(S,T)(
+            auto ref const S         contents,
+            auto ref T               doc_matters,
+          ) {
+            foreach (key; doc_matters.keys_seq_seg) {
+              if (contents[key].length > 1) {
+                foreach (obj; contents[key]) {
+                  if (obj.heading_lev_markup == 4) {
+                    writeln(obj.ptr_html_segnames, ". (", doc_matters.segnames[obj.ptr_html_segnames], ") -> ",  obj.text);
+                  }
+                }
+              }
+            }
+          }
+        }
+        debug(checkdoc) {
+          void out_toc(S)(
+            auto ref const S         contents,
+            string                   key,
+          ) {
+            if (contents[key].length > 1) {
+              string indent_spaces;
+              foreach (obj; contents[key]) {
+                indent_spaces=markup.indent_by_spaces_provided(obj.indent_hang);
+                writefln(
+                  "%s%s",
+                  indent_spaces,
+                  obj.text
+                );
+              }
+            }
+          }
+        }
+        debug(checkdoc) {
+          void out_endnotes(S)(
+            auto ref const S         contents,
+            string                   key,
+          ) {
+            if (contents[key].length > 1) {
+              foreach (obj; contents[key]) {
+                writefln(
+                  "[%s]\n%s",
+                  obj.is_a,
+                  obj.text
+                );
+              }
+            }
+          }
+        }
+        debug(checkdoc) {
+          void out_bookindex(S)(
+            auto ref const S         contents,
+            string                   key,
+          ) {
+            if (contents[key].length > 1) {
+              foreach (obj; contents[key]) {
+                writefln(
+                  "[%s][%s]\n%s",
+                  obj.obj_cite_number,
+                  obj.is_a,
+                  obj.text
+                );
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/src/sdp/ao_output_debugs.d b/src/sdp/ao_output_debugs.d
deleted file mode 100644
index aff30e8..0000000
--- a/src/sdp/ao_output_debugs.d
+++ /dev/null
@@ -1,708 +0,0 @@
-/++
-  output debugs
-+/
-template SiSUdebugs() {
-  import
-    ao_defaults,
-    ao_rgx;
-  private import
-    std.algorithm,
-    std.array,
-    std.container,
-    std.exception,
-    std.getopt,
-    std.json,
-    std.process,
-    std.stdio,
-    std.file,
-    std.path,
-    std.range,
-    std.regex,
-    std.string,
-    std.traits,
-    std.typecons,
-    std.uni,
-    std.utf,
-    std.conv : to;
-  auto SiSUdebugs(S,T)(
-    auto ref const S         contents,
-    auto ref T               doc_matters,
-  ) {
-      mixin SiSUrgxInit;
-      mixin InternalMarkup;
-      auto rgx = Rgx();
-      auto markup = InlineMarkup();
-      string key;
-      debug(parent) {
-        writefln(
-          "%s:%s",
-          __FILE__,
-          __LINE__,
-        );
-        foreach (key; doc_matters.keys_seq_seg) {
-          foreach (obj; contents[key]) {
-            if (obj.use != "empty") {
-              if (obj.is_a == "heading") {
-                writefln(
-                  "%s node: %s heading: %s %s",
-                  obj.obj_cite_number,
-                  obj.node,
-                  obj.heading_lev_markup,
-                  obj.text,
-                );
-              }
-            }
-          }
-        }
-      }
-      debug(dumpdoc) {
-        writefln(
-          "%s\n%s:%s",
-          "-------------------------------",
-          __FILE__,
-          __LINE__,
-        );
-        foreach (obj; contents) {
-          if (obj.use != "empty") {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(section_head) {
-        key="head";
-        if (contents[key].length > 1) {
-          foreach (obj; contents[key]) {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(section_toc) {
-        key="toc_seg";
-        out_toc(contents, key);
-      }
-      debug(section_toc_seg) {
-        key="toc_seg";
-        out_toc(contents, key);
-      }
-      debug(section_toc_scroll) {
-        key="toc_scroll";
-        out_toc(contents, key);
-      }
-      debug(segnames) {
-        writeln(__LINE__);
-        out_segnames(contents, doc_matters);
-      }
-      debug(section_body) {
-        key="body";
-        if (contents[key].length > 1) {
-          foreach (obj; contents[key]) {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(dom) {
-        enum DomTags { none, open, close, close_and_open, open_still, }
-        foreach (sect; doc_matters.keys_seq_seg) {
-          foreach (obj; contents[sect]) {
-            if (obj.is_a == "heading") {
-              foreach_reverse (k; 0 .. 7) {
-                switch (obj.dom_markedup[k]) {
-                case DomTags.close :
-                  writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
-                  break;
-                case DomTags.close_and_open :
-                  writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
-                  writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
-                  break;
-                case DomTags.open :
-                  writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
-                  break;
-                default :
-                  break;
-                }
-              }
-            }
-          }
-        }
-        writeln("--------------------");
-        foreach (sect; doc_matters.keys_seq_seg) {
-          foreach (obj; contents[sect]) {
-            if (obj.is_a == "heading") {
-              foreach_reverse (k; 0 .. 7) {
-                switch (obj.dom_collapsed[k]) {
-                case DomTags.close :
-                  writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
-                  break;
-                case DomTags.close_and_open :
-                  writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
-                  writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
-                  break;
-                case DomTags.open :
-                  writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
-                  break;
-                default :
-                  break;
-                }
-              }
-            }
-          }
-        }
-      }
-      debug(section_endnotes) {
-        key="endnotes";
-        out_endnotes(contents, key);
-      }
-      debug(section_endnotes_seg) {
-        key="endnotes";
-        out_endnotes(contents, key);
-      }
-      debug(section_glossary) {
-        key="glossary";
-        if (contents[key].length > 1) {
-          foreach (obj; contents[key]) {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(section_bibliography) {
-        key="bibliography";
-        if (contents[key].length > 1) {
-          foreach (obj; contents[key]) {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(section_bookindex) {
-        key="bookindex_seg";
-        out_bookindex(contents, key);
-      }
-      debug(section_bookindex_seg) {
-        key="bookindex_seg";
-        out_bookindex(contents, key);
-      }
-      debug(section_bookindex_scroll) {
-        key="bookindex_scroll";
-        out_bookindex(contents, key);
-      }
-      debug(blurb_section) {
-        key="blurb";
-        if (contents[key].length > 1) {
-          foreach (obj; contents[key]) {
-            writefln(
-              "[%s][%s]\n%s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(objects) {
-        writefln(
-          "%s\n%s:%s",
-          "-------------------------------",
-          __FILE__,
-          __LINE__,
-        );
-        foreach (obj; contents) {
-          if (obj.use != "empty") {
-            writefln(
-              "* [%s][%s] %s",
-              obj.obj_cite_number,
-              obj.is_a,
-              obj.text
-            );
-          }
-        }
-      }
-      debug(headermakejson) {
-        writefln(
-          "%s\n%s\n%s",
-          "document header, metadata & make instructions:",
-          doc_matters.dochead_meta,
-          ptr_head_main,
-        );
-        foreach (main_header; ptr_head_main) {
-          switch (main_header) {
-          case "make":
-            foreach (sub_header; ptr_head_sub_make) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          default:
-            break;
-          }
-        }
-      }
-      debug(headermetadatajson) {
-        writefln(
-          "%s\n%s\n%s",
-          "document header, metadata & make instructions:",
-          doc_matters.dochead_meta,
-          ptr_head_main,
-        );
-        foreach (main_header; ptr_head_main) {
-          switch (main_header) {
-          case "creator":
-            foreach (sub_header; ptr_head_sub_creator) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "title":
-            foreach (sub_header; ptr_head_sub_title) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "rights":
-            foreach (sub_header; ptr_head_sub_rights) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "date":
-            foreach (sub_header; ptr_head_sub_date) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "original":
-            foreach (sub_header; ptr_head_sub_original) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "classify":
-            foreach (sub_header; ptr_head_sub_classify) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "identifier":
-            foreach (sub_header; ptr_head_sub_identifier) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "notes":
-            foreach (sub_header; ptr_head_sub_notes) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          case "publisher":
-            foreach (sub_header; ptr_head_sub_publisher) {
-              if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) {
-                writefln(
-                  "%s:%s: %s",
-                  main_header,
-                  sub_header,
-                  doc_matters.dochead_meta[main_header][sub_header]
-                );
-              }
-            }
-            break;
-          default:
-            break;
-          }
-        }
-      }
-      debug(anchor) {
-        writefln(
-          "%s\n%s:%s",
-          "-------------------------------",
-          __FILE__,
-          __LINE__,
-        );
-        foreach (k; doc_matters.keys_seq_seg) {
-          foreach (obj; contents[k]) {
-            if (obj.is_a == "heading") {
-              writefln(
-                "%s~ [%s] %s %s",
-                obj.marked_up_level,
-                obj.obj_cite_number,
-                obj.anchor_tags,
-                // "[", obj["is"], "] ",
-                obj.text
-              );
-            }
-          }
-        }
-      }
-      debug(heading) {                         // heading
-        foreach (k; doc_matters.keys_seq_seg) {
-          foreach (o; contents[k]) {
-            if (o.is_a == "heading") {
-              writefln(
-                "%s* %s\n                (markup level: %s; collapsed level: %s)",
-                replicate("  ", o.heading_lev_markup),
-                strip(o.text),
-                o.heading_lev_markup,
-                o.heading_lev_collapsed,
-              );
-            }
-          }
-        }
-      }
-      debug(summary) {
-        string[string] check = [
-          "last_obj_cite_number" : "NA [debug \"checkdoc\" not run]",
-        ];
-      debug(checkdoc) {
-        if ((doc_matters.opt_action_bool["debug"])) {
-          debug(headings) {
-            writefln(
-              "%s\n%s:%s",
-              "-------------------------------",
-              __FILE__,
-              __LINE__,
-            );
-            foreach (k; doc_matters.keys_seq_seg) {
-              foreach (obj; contents[k]) {
-                if (obj.is_a == "heading") {
-                  writefln(
-                    "%s~ [%s] %s",
-                    obj.marked_up_level,
-                    obj.obj_cite_number,
-                    // "[", obj["is"], "] ",
-                    obj.text
-                  );
-                }
-              }
-            }
-          }
-          debug(checkdoc) {
-            if (auto mfn=match(doc_matters.source_filename, rgx.src_fn)) {
-              if (doc_matters.opt_action_bool["assertions"]) {
-                switch (mfn.captures[2]) {
-                // live manual:
-                case "live-manual.ssm":
-                  assert(check["last_obj_cite_number"] ==
-                    "1019","last obj_cite_number should be: 1019 (check test, document is frequently updated)"); // ok
-                  break;
-                // sisu_markup:
-                case "sisu_markup.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "297","last obj_cite_number expected to be: 297 rather than " ~ check["last_obj_cite_number"]); // ok
-                  // assert(check["last_obj_cite_number"] == "297","last obj_cite_number expected to be: 297 rather than " ~ check["last_obj_cite_number"]);
-                  // notes for first divergance study sisu headings 247 250
-                  // sisu has issue with code that contains heading 1~ which results in no obj_cite_number! ??
-                  // sisu currently has incorrect last body obj_cite_number of 294!
-                  // bug in sisu? attend
-                  break;
-                // sisu-markup-samples:
-                case "accelerando.charles_stross.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "2861","last obj_cite_number expected to be: 2861 rather than " ~ check["last_obj_cite_number"]); // ok
-                  break;
-                case "alices_adventures_in_wonderland.lewis_carroll.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "805","last obj_cite_number expected to be: 805 rather than " ~ check["last_obj_cite_number"]); // 808
-                  break;
-                case "autonomy_markup0.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "77","last obj_cite_number expected to be: 77 rather than " ~ check["last_obj_cite_number"]); // ok endnotes
-                  // assert(check["last_obj_cite_number"] == "78","last obj_cite_number expected to be: 78 rather than " ~ check["last_obj_cite_number"]);
-                  break;
-                case "content.cory_doctorow.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "953","last obj_cite_number expected to be: 953 rather than " ~ check["last_obj_cite_number"]); // 1007 way off, check obj_cite_number off switches
-                  // assert(check["last_obj_cite_number"] == "953","last obj_cite_number expected to be: 953 rather than " ~ check["last_obj_cite_number"]);
-                  break;
-                case "democratizing_innovation.eric_von_hippel.sst":
-                  // fixed ERROR! range violation, broken check! endnotes, bookindex, biblio
-                  // error in bookindex ... (ch1; ch6; ch8 )
-                  assert(check["last_obj_cite_number"] ==
-                    "905","last obj_cite_number expected to be: 905 rather than " ~ check["last_obj_cite_number"]); // 911
-                  break;
-                case "down_and_out_in_the_magic_kingdom.cory_doctorow.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "1417","last obj_cite_number expected to be: 1417 rather than " ~ check["last_obj_cite_number"]); // 1455 check obj_cite_number off switches
-                  break;
-                case "for_the_win.cory_doctorow.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "3510","last obj_cite_number expected to be: 3510 rather than " ~ check["last_obj_cite_number"]); // 3569 check obj_cite_number off switches
-                  break;
-                case "free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "1082","last obj_cite_number expected to be: 1082 rather than " ~ check["last_obj_cite_number"]); // check 1079 too few
-                  break;
-                case "free_culture.lawrence_lessig.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "1330","last obj_cite_number expected to be: 1330 rather than " ~ check["last_obj_cite_number"]); // 1312
-                  // fixed ERROR! range violation, broken check!
-                  // error in bookindex ... sections piracy (ch1) & property (ch10 market concentration) fixed
-                  break;
-                case "free_for_all.peter_wayner.sst": // endnotes, bookindex, biblio
-                  assert(check["last_obj_cite_number"] ==
-                    "1559","last obj_cite_number expected to be: 1559 rather than " ~ check["last_obj_cite_number"]); // 1560, check obj_cite_number off switches, has endnotes so 2 too many
-                  // assert(check["last_obj_cite_number"] == "1559","last obj_cite_number expected to be: 1559 rather than " ~ check["last_obj_cite_number"]);
-                  break;
-                case "gpl2.fsf.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "65","last obj_cite_number expected to be: 65 rather than " ~ check["last_obj_cite_number"]); // ok endnotes? check
-                  // assert(check["last_obj_cite_number"] == "66","last obj_cite_number expected to be: 66 rather than " ~ check["last_obj_cite_number"]);
-                  break;
-                case "gpl3.fsf.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "123","last obj_cite_number expected to be: 123 rather than " ~ check["last_obj_cite_number"]); // ok
-                  break;
-                case "gullivers_travels.jonathan_swift.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "668","last obj_cite_number expected to be: 668 rather than " ~ check["last_obj_cite_number"]); // 674
-                  break;
-                case "little_brother.cory_doctorow.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "3130","last obj_cite_number expected to be: 3130 rather than " ~ check["last_obj_cite_number"]); // 3204, check obj_cite_number off switches
-                  break;
-                case "the_cathedral_and_the_bazaar.eric_s_raymond.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "258","last obj_cite_number expected to be: 258 rather than " ~ check["last_obj_cite_number"]); // ok
-                  break;
-                case "the_public_domain.james_boyle.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "970","last obj_cite_number expected to be: 970 rather than " ~ check["last_obj_cite_number"]); // 978
-                  break;
-                case "the_wealth_of_networks.yochai_benkler.sst": // endnotes, bookindex
-                  assert(check["last_obj_cite_number"] ==
-                    "829","last obj_cite_number expected to be: 829 rather than " ~ check["last_obj_cite_number"]); // ok
-                  // assert(check["last_obj_cite_number"] == "832","last obj_cite_number expected to be: 832 rather than " ~ check["last_obj_cite_number"]);
-                  // has endnotes and bookindex, issue with sisu.rb
-                  break;
-                case "through_the_looking_glass.lewis_carroll.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "949","last obj_cite_number expected to be: 949 rather than " ~ check["last_obj_cite_number"]); // 955
-                  break;
-                case "two_bits.christopher_kelty.sst": // endnotes, bookindex, biblio
-                  assert(check["last_obj_cite_number"] ==
-                    "1190","last obj_cite_number expected to be: 1190 rather than " ~ check["last_obj_cite_number"]); // 1191
-                  // assert(check["last_obj_cite_number"] == "1193","last obj_cite_number expected to be: 1193 rather than " ~ check["last_obj_cite_number"]); // 1191 ok?
-                  // has endnotes and bookindex, issue with sisu.rb
-                  break;
-                  // fixed ERROR! range violation!
-                  // error in bookindex ... (ch3 the movement)
-                case "un_contracts_international_sale_of_goods_convention_1980.sst":
-                  assert(check["last_obj_cite_number"] ==
-                    "377","last obj_cite_number expected to be: 377 rather than " ~ check["last_obj_cite_number"]); // ok
-                  break;
-                case "viral_spiral.david_bollier.sst": // endnotes, bookindex
-                  assert(check["last_obj_cite_number"] ==
-                    "1078","last obj_cite_number expected to be: 1078 rather than " ~ check["last_obj_cite_number"]); // 1100
-                  // fixed ERROR! range violation!
-                  // error in bookindex ... (ch7 ... building the cc machine, an extra semi colon)
-                  break;
-                default:
-                  writeln(doc_matters.source_filename);
-                  break;
-                }
-              }
-            }
-          }
-        }
-        debug(checkdoc) {
-          void out_segnames(S,T)(
-            auto ref const S         contents,
-            auto ref T               doc_matters,
-          ) {
-            foreach (key; doc_matters.keys_seq_seg) {
-              if (contents[key].length > 1) {
-                foreach (obj; contents[key]) {
-                  if (obj.heading_lev_markup == 4) {
-                    writeln(obj.ptr_html_segnames, ". (", doc_matters.segnames[obj.ptr_html_segnames], ") -> ",  obj.text);
-                  }
-                }
-              }
-            }
-          }
-        }
-        debug(checkdoc) {
-          void out_toc(S)(
-            auto ref const S         contents,
-            string                   key,
-          ) {
-            if (contents[key].length > 1) {
-              string indent_spaces;
-              foreach (obj; contents[key]) {
-                indent_spaces=markup.indent_by_spaces_provided(obj.indent_hang);
-                writefln(
-                  "%s%s",
-                  indent_spaces,
-                  obj.text
-                );
-              }
-            }
-          }
-        }
-        debug(checkdoc) {
-          void out_endnotes(S)(
-            auto ref const S         contents,
-            string                   key,
-          ) {
-            if (contents[key].length > 1) {
-              foreach (obj; contents[key]) {
-                writefln(
-                  "[%s]\n%s",
-                  obj.is_a,
-                  obj.text
-                );
-              }
-            }
-          }
-        }
-        debug(checkdoc) {
-          void out_bookindex(S)(
-            auto ref const S         contents,
-            string                   key,
-          ) {
-            if (contents[key].length > 1) {
-              foreach (obj; contents[key]) {
-                writefln(
-                  "[%s][%s]\n%s",
-                  obj.obj_cite_number,
-                  obj.is_a,
-                  obj.text
-                );
-              }
-            }
-          }
-        }
-      }
-      if ((doc_matters.opt_action_bool["verbose"])) {
-        if ((doc_matters.opt_action_bool["verbose"])) {
-          foreach (k; doc_matters.keys_seq_seg) {
-            foreach (obj; contents[k]) {
-              if (obj.use != "empty") {
-                if (!empty(obj.obj_cite_number)) {
-                  check["last_obj_cite_number"] = obj.obj_cite_number;
-                }
-              }
-            }
-          }
-        }
-        auto min_repeat_number = 66;
-        auto char_repeat_number = (doc_matters.dochead_meta["title"]["full"].length + doc_matters.dochead_meta["creator"]["author"].length + 4);
-        char_repeat_number = (char_repeat_number > min_repeat_number)
-        ? char_repeat_number
-        : min_repeat_number;
-        writefln(
-          "%s\n\"%s\", %s\n%s\n%s\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n%s%10d\n(%s: %s)\n%s",
-          markup.repeat_character_by_number_provided("-", char_repeat_number),
-          doc_matters.dochead_meta["title"]["full"],
-          doc_matters.dochead_meta["creator"]["author"],
-          doc_matters.source_filename,
-          markup.repeat_character_by_number_provided("-", char_repeat_number),
-          "length toc array:      ",
-          to!int(contents["toc_seg"].length),
-          "length contents array: ",
-          to!int(contents["body"].length),
-          "last obj_cite_number:  ",
-          to!int(check["last_obj_cite_number"]),
-          "length endnotes:       ",
-          (contents["endnotes"].length > 1)
-          ? (to!int(contents["endnotes"].length))
-          : 0,
-          "length glossary:       ",
-          (contents["glossary"].length > 1)
-          ? (to!int(contents["glossary"].length))
-          : 0,
-          "length biblio:         ",
-          (contents["bibliography"].length > 1)
-          ? (to!int(contents["bibliography"].length))
-          : 0,
-          "length bookindex:      ",
-          (contents["bookindex_seg"].length > 1)
-          ? (to!int(contents["bookindex_seg"].length))
-          : 0,
-          "length blurb:          ",
-          (contents["blurb"].length > 1)
-          ? (to!int(contents["blurb"].length))
-          : 0,
-          __FILE__,
-          __LINE__,
-          markup.repeat_character_by_number_provided("-", min_repeat_number),
-        );
-      }
-    }
-  }
-}
diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d
index 808457d..a6459b2 100644
--- a/src/sdp/ao_read_source_files.d
+++ b/src/sdp/ao_read_source_files.d
@@ -3,7 +3,7 @@
   - open markup files<BR>
   - if master file scan for addional files to import/insert
 +/
-template SiSUmarkupRaw() {
+template SiSUrawMarkupContent() {
   private import
     ao_rgx;
   private import
@@ -24,13 +24,13 @@ template SiSUmarkupRaw() {
     std.conv : to;
   mixin SiSUrgxInit;
   auto rgx = Rgx();
-  auto rawsrc = MarkupRaw();
-  auto SiSUmarkupRaw(Fn)(Fn fn_src) {
+  auto rawsrc = RawMarkupContent();
+  auto SiSUrawMarkupContent(Fn)(Fn fn_src) {
     auto _0_header_1_body_content_2_insert_filelist_tuple =
       rawsrc.sourceContentSplitIntoHeaderAndBody(rawsrc.sourceContent(fn_src), fn_src);
     return _0_header_1_body_content_2_insert_filelist_tuple;
   }
-  struct MarkupRaw {
+  struct RawMarkupContent {
     final sourceContent(in string fn_src) {
       auto raw = MarkupRawUnit();
       auto source_txt_str =
-- 
cgit v1.2.3