module sdp.meta.metadoc_summary;
template SiSUabstractionSummary() {
  auto SiSUabstractionSummary(S,T)(
    auto return ref const S  doc_abstraction,
    auto return ref       T  doc_matters,
  ) {
    import
      sdp.meta.defaults,
      sdp.meta.rgx;
    import
      std.array,
      std.exception,
      std.regex,
      std.stdio,
      std.string,
      std.traits,
      std.typecons,
      std.uni,
      std.utf,
      std.conv : to;
    mixin InternalMarkup;
    auto markup = InlineMarkup();
    if (doc_matters.opt.action.verbose) {
      string[string] check = [
        "last_obj_cite_number" : "NA [debug \"checkdoc\" not run]",
        "last_obj_cite_number_body"  : "0",
        "last_obj_cite_number_bkidx" : "0",
      ];
      foreach (k; doc_matters.xml.keys_seq.seg) {
        foreach (obj; doc_abstraction[k]) {
          if (obj.of_part != "empty") {
            if (!empty(obj.obj_cite_number)) {
              if (k == "body") {
                check["last_obj_cite_number_body"] = obj.obj_cite_number;
              }
              if (!(obj.obj_cite_number.empty)) {
                check["last_obj_cite_number"] = obj.obj_cite_number;
              }
            }
            if (k == "bookindex_seg") {
              if (obj.obj_cite_number_type == 2) {
                check["last_obj_cite_number_bkidx"] = obj.obj_cite_number_bkidx;
              }
            }
          }
        }
      }
      auto min_repeat_number = 66;
      auto char_repeat_number = (doc_matters.conf_make_meta.meta.title_full.length
        + doc_matters.conf_make_meta.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%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n(%s: %s)\n%s",
        markup.repeat_character_by_number_provided("-", char_repeat_number),
        doc_matters.conf_make_meta.meta.title_full,
        doc_matters.conf_make_meta.meta.creator_author,
        doc_matters.src.filename,
        markup.repeat_character_by_number_provided("-", char_repeat_number),
        "length toc arr:",
        to!int(doc_abstraction["toc_seg"].length),
        "length doc_abstraction arr:",
        to!int(doc_abstraction["body"].length),
        "last doc body ocn:",
        to!int(check["last_obj_cite_number_body"]),
        "last obj_cite_number:",
        to!int(check["last_obj_cite_number"]),
        "length endnotes:",                                // subtract headings
        (doc_abstraction["endnotes"].length > 2)
        ? (to!int(doc_abstraction["endnotes"].length - 2))
        : 0,
        "length glossary:",
        (doc_abstraction["glossary"].length > 1)
        ? (to!int(doc_abstraction["glossary"].length))
        : 0,
        "length biblio:",
        (doc_abstraction["bibliography"].length > 1)
        ? (to!int(doc_abstraction["bibliography"].length))
        : 0,
        "length bookindex:",
        (doc_abstraction["bookindex_seg"].length > 1)
        ? (to!int(doc_abstraction["bookindex_seg"].length))
        : 0,
        "  last book idx ocn:",
        to!int(check["last_obj_cite_number_bkidx"]),
        "length blurb:",
        (doc_abstraction["blurb"].length > 1)
        ? (to!int(doc_abstraction["blurb"].length))
        : 0,
        __FILE__,
        __LINE__,
        markup.repeat_character_by_number_provided("-", min_repeat_number),
      );
    }
  }
}