aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/meta/metadoc_summary.d
blob: 0c5e73d74ab30b0e439de210783071070761ba3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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_object_number" : "NA [debug \"checkdoc\" not run]",
        "last_object_number_body"  : "0",
        "last_object_number_book_index" : "0",
      ];
      foreach (k; doc_matters.xml.keys_seq.seg) {
        foreach (obj; doc_abstraction[k]) {
          if (obj.typeinfo.is_of_part != "empty") {
            if (!empty(obj.node.object_number)) {
              if (k == "body") {
                check["last_object_number_body"] = obj.node.object_number;
              }
              if (!(obj.node.object_number.empty)) {
                check["last_object_number"] = obj.node.object_number;
              }
            }
            if (k == "bookindex_seg") {
              if (obj.misc.object_number_type == 2) {
                check["last_object_number_book_index"] = obj.misc.object_number_book_index;
              }
            }
          }
        }
      }
      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%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_object_number_body"]),
        "last object_number:",
        to!int(check["last_object_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_object_number_book_index"]),
        "length blurb:",
        (doc_abstraction["blurb"].length > 1)
        ? (to!int(doc_abstraction["blurb"].length))
        : 0,
        "number of segments:",
        (doc_matters.xml.segnames.length > 1)
        ? (to!int(doc_matters.xml.segnames.length))
        : 0,
        __FILE__,
        __LINE__,
        markup.repeat_character_by_number_provided("-", min_repeat_number),
      );
    }
  }
}