aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform/meta/metadoc_summary.d
blob: 7395e81de25dcb01fa6edf0ee58fb99f2d4c07ca (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
102
103
104
105
106
107
108
109
110
111
112
113
module doc_reform.meta.metadoc_summary;
template DocReformMetaDocSummary() {
  void DocReformMetaDocSummary(S,T)(
    const S  doc_abstraction,
          T  doc_matters,
  ) {
    import
      doc_reform.meta.defaults,
      doc_reform.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
      || doc_matters.opt.action.show_summary
    ) {
      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.has.keys_seq.seg) {
        foreach (obj; doc_abstraction[k]) {
          if (obj.metainfo.is_of_part != "empty") {
            if (!empty(obj.metainfo.object_number)) {
              if (k == "body") {
                check["last_object_number_body"] = obj.metainfo.object_number;
              }
              if (!(obj.metainfo.object_number.empty)) {
                check["last_object_number"] = obj.metainfo.object_number;
              }
            }
            if (k == "bookindex") {
              if (obj.metainfo.object_number_type == 2) {
                check["last_object_number_book_index"] = obj.metainfo.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%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",
        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),
        "- toc arr length:",
        to!int(doc_abstraction["toc"].length),
        "- doc_abstraction arr length:",
        to!int(doc_abstraction["body"].length),
        "  doc body last obj on.#:",
        to!int(check["last_object_number_body"]),
        "  - number of tables:",
        doc_matters.has.tables,
        "  - number of codeblocks:",
        doc_matters.has.codeblocks,
        "  - number of poems:",
        doc_matters.has.poems,
        "  - number of blocks:",
        doc_matters.has.blocks,
        "  - number of groups:",
        doc_matters.has.groups,
        "  - number of images:",
        doc_matters.has.images,
        "- endnotes length:",                                // subtract headings
        (doc_abstraction["endnotes"].length > 2)
        ? (to!int(doc_abstraction["endnotes"].length - 2))
        : 0,
        "- glossary length:",
        (doc_abstraction["glossary"].length > 1)
        ? (to!int(doc_abstraction["glossary"].length))
        : 0,
        "- biblio length:",
        (doc_abstraction["bibliography"].length > 1)
        ? (to!int(doc_abstraction["bibliography"].length))
        : 0,
        "- bookindex length:",
        (doc_abstraction["bookindex"].length > 1)
        ? (to!int(doc_abstraction["bookindex"].length))
        : 0,
        "  book idx last obj on.#:",
        to!int(check["last_object_number_book_index"]),
        "- blurb length:",
        (doc_abstraction["blurb"].length > 1)
        ? (to!int(doc_abstraction["blurb"].length))
        : 0,
        "* last obj on.#:",
        to!int(check["last_object_number"]),
        "number of segments:",
        (doc_matters.has.segnames_lv4.length > 1)
        ? (to!int(doc_matters.has.segnames_lv4.length))
        : 0,
        markup.repeat_character_by_number_provided("-", min_repeat_number),
      );
    }
  }
}