diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/sisudoc/meta/metadoc.d | 17 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_from_src.d | 42 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_from_src_functions.d | 4 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_show_config.d | 4 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_show_make.d | 4 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_show_metadata.d | 4 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_show_summary.d | 34 | ||||
| -rwxr-xr-x | src/sisudoc/spine.d | 98 | 
8 files changed, 100 insertions, 107 deletions
| diff --git a/src/sisudoc/meta/metadoc.d b/src/sisudoc/meta/metadoc.d index 0d58c2e..5c3694e 100644 --- a/src/sisudoc/meta/metadoc.d +++ b/src/sisudoc/meta/metadoc.d @@ -144,7 +144,7 @@ template spineAbstraction() {      if ((_opt_action.debug_do)        || (_opt_action.debug_do_stages)      ) { -      writeln("step4 commence → (doc_matters) [", _manifest.src.filename, "]"); +      writeln("step4 commence → (doc.matters) [", _manifest.src.filename, "]");      }      struct ST_DocumentMatters {        auto generator_program() { @@ -294,7 +294,18 @@ template spineAbstraction() {      ) {        writeln("- step4 complete for [", _manifest.src.filename, "]");      } -    auto t = tuple(doc_abstraction, doc_matters); -    return t; +    auto theDOC() { +      struct ST_DOC { +        const auto abstraction() { +          return doc_abstraction; +        } +        auto matters() { +          return doc_matters; +        } +      } +      return ST_DOC(); +    } +    auto the_doc = theDOC(); +    return the_doc;    }  } diff --git a/src/sisudoc/meta/metadoc_from_src.d b/src/sisudoc/meta/metadoc_from_src.d index 012dd36..4aa49dc 100644 --- a/src/sisudoc/meta/metadoc_from_src.d +++ b/src/sisudoc/meta/metadoc_from_src.d @@ -99,8 +99,8 @@ template docAbstraction() {        anchor_tag = "";      }      mixin spineNode; -    auto node_para_int_    = node_metadata_para_int; -    auto node_para_str_    = node_metadata_para_str; +    int[string] node_para_int_     = node_metadata_para_int; +    string[string] node_para_str_  = node_metadata_para_str;      ObjGenericComposite comp_obj_;      line_occur = [        "heading"  : 0, @@ -231,7 +231,7 @@ template docAbstraction() {          writeln("substitution to make: ", conf_make_meta.make.italics[Substitute.markup]);        }      } -    auto loopMarkupSrcByLine( +    _loopMarkupSrcByLineStruct loopMarkupSrcByLine(        char[][]         markup_sourcefile_content,        string[string]   an_object,        uint[string]     pith, @@ -340,7 +340,7 @@ template docAbstraction() {                  ._doc_header_and_make_substitutions_(conf_make_meta)                  ._doc_header_and_make_substitutions_fontface_(conf_make_meta);                { -                auto _get = line.txt_by_line_block_quote(an_object, pith); +                ST_txt_by_line_block_generic _get = line.txt_by_line_block_quote(an_object, pith);                  {                    an_object = _get.this_object;                    pith      = _get.pith; @@ -353,7 +353,7 @@ template docAbstraction() {                  ._doc_header_and_make_substitutions_fontface_(conf_make_meta)                  .replaceAll(rgx.para_delimiter, mkup.br_line_spaced ~ "$1");                { -                auto _get = line.txt_by_line_block_group(an_object, pith); +                ST_txt_by_line_block_generic _get = line.txt_by_line_block_group(an_object, pith);                  {                    an_object = _get.this_object;                    pith      = _get.pith; @@ -369,7 +369,7 @@ template docAbstraction() {                    .replaceAll(rgx.spaces_keep, (m.captures[1]).translate([ ' ' : mkup.nbsp ]));                }                { -                auto _get = line.txt_by_line_block_block(an_object, pith); +                ST_txt_by_line_block_generic _get = line.txt_by_line_block_block(an_object, pith);                  {                    an_object = _get.this_object;                    pith      = _get.pith; @@ -378,7 +378,7 @@ template docAbstraction() {                continue;              } else if (pith["block_is"]    == eN.blk_is.poem) {                { -                auto _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); +                ST_txt_by_line_block_poem _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg);                  {                    an_object = _get.this_object;                    pith      = _get.pith; @@ -412,7 +412,7 @@ template docAbstraction() {                  object_number_poem["start"] = obj_cite_digits.object_number.to!string;                }                { -                auto _get = line.txt_by_line_block_start(pith, dochas, object_number_poem); +                ST_txt_by_line_block_start _get = line.txt_by_line_block_start(pith, dochas, object_number_poem);                  {                    pith               = _get.pith;                    dochas             = _get.dochas; @@ -442,7 +442,7 @@ template docAbstraction() {                || line.matchFirst(rgx.book_index_item_open)                || pith["section"] == eN.sect.book_index)  {                  { // book_index -                  auto _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); +                  ST_flow_book_index _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action);                    {                      an_object = _get.this_object;                      pith      = _get.pith; @@ -464,7 +464,7 @@ template docAbstraction() {                    comp_obj_comment.text                   = an_object[an_object_key].strip;                    the_document_body_section               ~= comp_obj_comment;                    { -                    auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); +                    ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith);                      {                        line_occur = _get.line_occur;                        an_object  = _get.this_object; @@ -481,7 +481,7 @@ template docAbstraction() {                    && (pith["make_headings"] == eN.bi.off)) {                      // heading found                      { -                      auto _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith); +                      ST_flow_heading_found _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith);                        {                          heading_match_str = _get.heading_match_str;                          heading_match_rgx = _get.heading_match_rgx; @@ -496,7 +496,7 @@ template docAbstraction() {                    ) {                      // heading make set                      { -                      auto _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith); +                      ST_flow_heading_make_set _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith);                        {                          line      = _get.line;                          an_object = _get.this_object; @@ -534,7 +534,7 @@ template docAbstraction() {                        ._doc_header_and_make_substitutions_(conf_make_meta)                        ._doc_header_and_make_substitutions_fontface_(conf_make_meta);                      { -                      auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); +                      ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur);                        {                          an_object     = _get.this_object;                          an_object_key = _get.this_object_key; @@ -563,7 +563,7 @@ template docAbstraction() {              } else if (pith["block_state"] == eN.blk_state.closing) {                // line empty, with blocks flag                { -                auto _get = line.flow_block_flag_line_empty_( +                ST_flow_block_flag_line_empty _get = line.flow_block_flag_line_empty_(                    an_object,                    bookindex_extract_hash,                    the_document_body_section, @@ -679,7 +679,7 @@ template docAbstraction() {                  _anchor_tag                   = obj_cite_digits.identifier;                  // (incrementally build toc) table of contents here!                  { -                  auto _get = obj_im.flow_table_of_contents_gather_headings( +                  ST_flow_table_of_contents_gather_headings _get = obj_im.flow_table_of_contents_gather_headings(                      an_object,                      conf_make_meta,                      tag_in_seg, @@ -700,7 +700,7 @@ template docAbstraction() {                  if (an_object["lev_markup_number"].to!int <= 4) {                    segnames["epub"] ~= tag_in_seg["seg_lv1to4"];                  } -                auto comp_obj_ = node_construct.node_emitter_heading( +                ObjGenericComposite comp_obj_ = node_construct.node_emitter_heading(                      an_object,                      tag_in_seg,                      lev_anchor_tag, @@ -721,7 +721,7 @@ template docAbstraction() {                  the_document_body_section ~= comp_obj_;                  debug(objectrelated1) { writeln(line); } // check                  { -                  auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); +                  ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith);                    {                      line_occur = _get.line_occur;                      an_object  = _get.this_object; @@ -742,7 +742,7 @@ template docAbstraction() {                  an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : "";                  bookindex_unordered_hashes = bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, tag_in_seg);                  an_object["is"] = "para"; -                auto comp_obj_ = node_construct.node_location_emitter( +                ObjGenericComposite comp_obj_ = node_construct.node_location_emitter(                      content_non_header,                      tag_in_seg,                      lev_anchor_tag, @@ -774,7 +774,7 @@ template docAbstraction() {                  the_document_body_section                       ~= comp_obj_;                  tag_assoc                                           = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);                  { -                  auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); +                  ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith);                    {                      line_occur = _get.line_occur;                      an_object  = _get.this_object; @@ -848,7 +848,7 @@ template docAbstraction() {        return ret;      }      { // loopMarkupSrcByLine -      auto _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith); +      _loopMarkupSrcByLineStruct _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith);        the_document_toc_section      = _doc_by_line.toc;        the_document_body_section     = _doc_by_line.body;        the_document_glossary_section = _doc_by_line.glossary; @@ -1496,7 +1496,7 @@ template docAbstraction() {          return tag_assoc;        }      } -    auto doc_has() { +    DocHas_ doc_has() {        return DocHas_();      }      // the doc to be returned diff --git a/src/sisudoc/meta/metadoc_from_src_functions.d b/src/sisudoc/meta/metadoc_from_src_functions.d index 8ccf21b..781227f 100644 --- a/src/sisudoc/meta/metadoc_from_src_functions.d +++ b/src/sisudoc/meta/metadoc_from_src_functions.d @@ -3631,7 +3631,7 @@ template docAbstractionFunctions() {        }      } else { // para        { -        auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); +        ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur);          {            an_object     = _get.this_object;            an_object_key = _get.this_object_key; @@ -3924,7 +3924,7 @@ template docAbstractionFunctions() {        tag_assoc[comp_obj_.tags.segment_anchor_tag_epub]["seg_lv1to4"] = comp_obj_.tags.segment_anchor_tag_epub;      } else if (!(line.empty)) {        { -        auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); +        ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur);          {            an_object     = _get.this_object;            an_object_key = _get.this_object_key; diff --git a/src/sisudoc/meta/metadoc_show_config.d b/src/sisudoc/meta/metadoc_show_config.d index a56e632..7434506 100644 --- a/src/sisudoc/meta/metadoc_show_config.d +++ b/src/sisudoc/meta/metadoc_show_config.d @@ -139,9 +139,7 @@ template spineShowSiteConfig() {    }  }  template spineShowConfig() { -  void spineShowConfig(T)( -    T  doc_matters, -  ) { +  void spineShowConfig(T)(T doc_matters) {      import        sisudoc.meta.defaults,        sisudoc.meta.rgx; diff --git a/src/sisudoc/meta/metadoc_show_make.d b/src/sisudoc/meta/metadoc_show_make.d index d3271bf..a5e5608 100644 --- a/src/sisudoc/meta/metadoc_show_make.d +++ b/src/sisudoc/meta/metadoc_show_make.d @@ -50,9 +50,7 @@  module sisudoc.meta.metadoc_show_make;  @safe:  template spineShowMake() { -  void spineShowMake(T)( -    T  doc_matters, -  ) { +  void spineShowMake(T)(T doc_matters) {      import        sisudoc.meta.defaults,        sisudoc.meta.rgx; diff --git a/src/sisudoc/meta/metadoc_show_metadata.d b/src/sisudoc/meta/metadoc_show_metadata.d index 1857df8..4a7a177 100644 --- a/src/sisudoc/meta/metadoc_show_metadata.d +++ b/src/sisudoc/meta/metadoc_show_metadata.d @@ -50,9 +50,7 @@  module sisudoc.meta.metadoc_show_metadata;  @safe:  template spineShowMetaData() { -  void spineShowMetaData(T)( -    T  doc_matters, -  ) { +  void spineShowMetaData(T)(T doc_matters) {      import        sisudoc.meta.defaults,        sisudoc.meta.rgx; diff --git a/src/sisudoc/meta/metadoc_show_summary.d b/src/sisudoc/meta/metadoc_show_summary.d index 0404af4..2ceb337 100644 --- a/src/sisudoc/meta/metadoc_show_summary.d +++ b/src/sisudoc/meta/metadoc_show_summary.d @@ -50,10 +50,8 @@  module sisudoc.meta.metadoc_show_summary;  @safe:  template spineMetaDocSummary() { -  void spineMetaDocSummary(S,T)( -    const S  doc_abstraction, -          T  doc_matters, -  ) { +  void spineMetaDocSummary(D)(D doc) { +    auto doc_matters = doc.matters;      import        sisudoc.meta.defaults,        sisudoc.meta.rgx; @@ -85,7 +83,7 @@ template spineMetaDocSummary() {          "last_object_number_book_index" : "0",        ];        foreach (k; doc_matters.has.keys_seq.seg) { -        foreach (obj; doc_abstraction[k]) { +        foreach (obj; doc.abstraction[k]) {            if (obj.metainfo.is_of_part != "empty") {              if (!empty(obj.metainfo.object_number)) {                if (k == "body") { @@ -116,9 +114,9 @@ template spineMetaDocSummary() {          doc_matters.src.language,          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), +        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:", @@ -134,26 +132,26 @@ template spineMetaDocSummary() {          "  - number of images:",          doc_matters.has.images,          "- endnotes length:",                                // subtract headings -        (doc_abstraction["endnotes"].length > 2) -        ? (to!int(doc_abstraction["endnotes"].length - 2)) +        (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)) +        (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)) +        (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)) +        (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)) +        (doc.abstraction["blurb"].length > 1) +        ? (to!int(doc.abstraction["blurb"].length))          : 0,          "* last obj on.#:",          to!int(check["last_object_number"]), diff --git a/src/sisudoc/spine.d b/src/sisudoc/spine.d index fc2b2dd..81713c0 100755 --- a/src/sisudoc/spine.d +++ b/src/sisudoc/spine.d @@ -1059,66 +1059,61 @@ string program_name = "spine";            ) {              writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]");            } -          auto t = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); -          static assert(t.length==2); -          auto doc_abstraction = t[dAM.abstraction]; -          auto doc_matters = t[dAM.matters]; -          if ((doc_matters.opt.action.debug_do) +          auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); +          auto doc_abstraction = doc.abstraction; +          auto doc_matters = doc.matters; +          if ((doc.matters.opt.action.debug_do)              || (_opt_action.debug_do_stages)            ) {              writeln("- stepX complete for [", manifest.src.filename, "]");            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_summary) { +          if (doc.matters.opt.action.show_summary) {              import sisudoc.meta.metadoc_show_summary; -            spineMetaDocSummary!()(doc_abstraction, doc_matters); +            spineMetaDocSummary!()(doc);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_metadata) { +          if (doc.matters.opt.action.show_metadata) {              import sisudoc.meta.metadoc_show_metadata; -            spineShowMetaData!()(doc_matters); +            spineShowMetaData!()(doc.matters);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_make) { +          if (doc.matters.opt.action.show_make) {              import sisudoc.meta.metadoc_show_make; -            spineShowMake!()(doc_matters); +            spineShowMake!()(doc.matters);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_config) { +          if (doc.matters.opt.action.show_config) {              import sisudoc.meta.metadoc_show_config; -            spineShowConfig!()(doc_matters); +            spineShowConfig!()(doc.matters);            } -          if (doc_matters.opt.action.curate) { -            auto _hvst = spineMetaDocCurate!()(doc_matters, hvst); +          if (doc.matters.opt.action.curate) { +            auto _hvst = spineMetaDocCurate!()(doc.matters, hvst);              if (                _hvst.title.length > 0                && _hvst.author_surname_fn.length > 0              ) {                hvst.curates ~= _hvst;              } else { -              if ((doc_matters.opt.action.debug_do) +              if ((doc.matters.opt.action.debug_do)                  || (_opt_action.debug_do_curate) -                || (doc_matters.opt.action.vox_gt2) +                || (doc.matters.opt.action.vox_gt2)                ) {                  writeln("WARNING curate: document header yaml does not contain information related to: title or author: ", _hvst.path_html_segtoc);                }              }            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.debug_do) { -            spineDebugs!()(doc_abstraction, doc_matters); +          if (doc.matters.opt.action.debug_do) { +            spineDebugs!()(doc.abstraction, doc.matters);            }            /+ ↓ output hub +/ -          if (!(doc_matters.opt.action.skip_output)) { -            if ((_opt_action.debug_do) -              || (_opt_action.debug_do_stages) -            ) { +          if (!(doc.matters.opt.action.skip_output)) { +            if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {                writeln("step5 commence → (process outputs) [", manifest.src.filename, "]");              } -            doc_abstraction.outputHub!()(doc_matters); -            if ((_opt_action.debug_do) -              || (_opt_action.debug_do_stages) -            ) { +            doc.abstraction.outputHub!()(doc.matters); +            if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {                writeln("- step5 complete for [", manifest.src.filename, "]");              }            } @@ -1165,66 +1160,61 @@ string program_name = "spine";            ) {              writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]");            } -          auto t = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); -          static assert(t.length==2); -          auto doc_abstraction = t[dAM.abstraction]; -          auto doc_matters = t[dAM.matters]; -          if ((doc_matters.opt.action.debug_do) +          auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); +          auto doc_abstraction = doc.abstraction; +          auto doc_matters = doc.matters; +          if ((doc.matters.opt.action.debug_do)              || (_opt_action.debug_do_stages)            ) {              writeln("- stepX complete for [", manifest.src.filename, "]");            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_summary) { +          if (doc.matters.opt.action.show_summary) {              import sisudoc.meta.metadoc_show_summary; -            spineMetaDocSummary!()(doc_abstraction, doc_matters); +            spineMetaDocSummary!()(doc);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_metadata) { +          if (doc.matters.opt.action.show_metadata) {              import sisudoc.meta.metadoc_show_metadata; -            spineShowMetaData!()(doc_matters); +            spineShowMetaData!()(doc.matters);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_make) { +          if (doc.matters.opt.action.show_make) {              import sisudoc.meta.metadoc_show_make; -            spineShowMake!()(doc_matters); +            spineShowMake!()(doc.matters);            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.show_config) { +          if (doc.matters.opt.action.show_config) {              import sisudoc.meta.metadoc_show_config; -            spineShowConfig!()(doc_matters); +            spineShowConfig!()(doc.matters);            } -          if (doc_matters.opt.action.curate) { -            auto _hvst = spineMetaDocCurate!()(doc_matters, hvst); +          if (doc.matters.opt.action.curate) { +            auto _hvst = spineMetaDocCurate!()(doc.matters, hvst);              if (                _hvst.title.length > 0                && _hvst.author_surname_fn.length > 0              ) {                hvst.curates ~= _hvst;              } else { -              if ((doc_matters.opt.action.debug_do) +              if ((doc.matters.opt.action.debug_do)                  || (_opt_action.debug_do_curate) -                || (doc_matters.opt.action.vox_gt2) +                || (doc.matters.opt.action.vox_gt2)                ) {                  writeln("WARNING curate: document header yaml does not contain information related to: title or author: ", _hvst.path_html_segtoc);                }              }            }            /+ ↓ debugs +/ -          if (doc_matters.opt.action.debug_do) { -            spineDebugs!()(doc_abstraction, doc_matters); +          if (doc.matters.opt.action.debug_do) { +            spineDebugs!()(doc.abstraction, doc.matters);            }            /+ ↓ output hub +/ -          if (!(doc_matters.opt.action.skip_output)) { -            if ((_opt_action.debug_do) -              || (_opt_action.debug_do_stages) -            ) { +          if (!(doc.matters.opt.action.skip_output)) { +            if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {                writeln("step5 commence → (process outputs) [", manifest.src.filename, "]");              } -            doc_abstraction.outputHub!()(doc_matters); -            if ((_opt_action.debug_do) -              || (_opt_action.debug_do_stages) -            ) { +            doc.abstraction.outputHub!()(doc.matters); +            if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {                writeln("- step5 complete for [", manifest.src.filename, "]");              }            } | 
