diff options
| -rw-r--r-- | org/ocda.org | 46 | ||||
| -rw-r--r-- | org/ocda_functions.org | 4 | ||||
| -rw-r--r-- | org/output_show.org | 46 | ||||
| -rw-r--r-- | org/spine.org | 76 | ||||
| -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 | 
12 files changed, 185 insertions, 194 deletions
| diff --git a/org/ocda.org b/org/ocda.org index 2e4bbb0..148edf8 100644 --- a/org/ocda.org +++ b/org/ocda.org @@ -75,7 +75,7 @@ mixin docAbstractionFunctions;  #+HEADER: :noweb yes  #+BEGIN_SRC d  <<docAbstractionInit>> -<<docAbstractionInitSubstitutions>> +<<docAbstractionInitSubstitutionsDebug>>  <<docAbstractionMainLoopSrcByLine>>  <<docAbstractionPostMainLoop>>  <<docAbstractionReturnsStruct>> @@ -109,8 +109,8 @@ scope(exit) {    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, @@ -221,7 +221,7 @@ int cnt1 = 1; int cnt2 = 1; int cnt3 = 1;  *** abstraction init substitutions -#+NAME: docAbstractionInitSubstitutions +#+NAME: docAbstractionInitSubstitutionsDebug  #+HEADER: :noweb yes  #+BEGIN_SRC d  debug (substitutions) { @@ -255,7 +255,7 @@ debug (substitutions) {  #+NAME: docAbstractionMainLoopSrcByLine  #+HEADER: :noweb yes  #+BEGIN_SRC d -auto loopMarkupSrcByLine( +_loopMarkupSrcByLineStruct loopMarkupSrcByLine(    char[][]         markup_sourcefile_content,    string[string]   an_object,    uint[string]     pith, @@ -364,7 +364,7 @@ auto loopMarkupSrcByLine(              ._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; @@ -377,7 +377,7 @@ auto loopMarkupSrcByLine(              ._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; @@ -393,7 +393,7 @@ auto loopMarkupSrcByLine(                .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; @@ -402,7 +402,7 @@ auto loopMarkupSrcByLine(            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; @@ -436,7 +436,7 @@ auto loopMarkupSrcByLine(              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; @@ -466,7 +466,7 @@ auto loopMarkupSrcByLine(            || 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; @@ -488,7 +488,7 @@ auto loopMarkupSrcByLine(                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; @@ -505,7 +505,7 @@ auto loopMarkupSrcByLine(                && (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; @@ -520,7 +520,7 @@ auto loopMarkupSrcByLine(                ) {                  // 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; @@ -558,7 +558,7 @@ auto loopMarkupSrcByLine(                    ._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; @@ -587,7 +587,7 @@ auto loopMarkupSrcByLine(          } 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, @@ -703,7 +703,7 @@ auto loopMarkupSrcByLine(              _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, @@ -724,7 +724,7 @@ auto loopMarkupSrcByLine(              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, @@ -745,7 +745,7 @@ auto loopMarkupSrcByLine(              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; @@ -766,7 +766,7 @@ auto loopMarkupSrcByLine(              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, @@ -798,7 +798,7 @@ auto loopMarkupSrcByLine(              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; @@ -872,7 +872,7 @@ auto loopMarkupSrcByLine(    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; @@ -1534,7 +1534,7 @@ struct DocHas_ {      return tag_assoc;    }  } -auto doc_has() { +DocHas_ doc_has() {    return DocHas_();  }  // the doc to be returned diff --git a/org/ocda_functions.org b/org/ocda_functions.org index 120c3e3..ffbecb6 100644 --- a/org/ocda_functions.org +++ b/org/ocda_functions.org @@ -3899,7 +3899,7 @@ ST_the_section build_the_glossary_section(      }    } 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; @@ -4206,7 +4206,7 @@ ST_the_section build_the_blurb_section(Opt) (      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/org/output_show.org b/org/output_show.org index 607f668..6f54451 100644 --- a/org/output_show.org +++ b/org/output_show.org @@ -28,10 +28,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;      <<metadoc_show_summary_imports>>      <<metadoc_show_imports_shared>>      mixin InternalMarkup; @@ -55,7 +53,7 @@ string[string] check = [    "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") { @@ -92,9 +90,9 @@ writefln(    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:", @@ -110,26 +108,26 @@ writefln(    "  - 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"]), @@ -252,9 +250,7 @@ writefln(  #+HEADER: :noweb yes  #+BEGIN_SRC d  template spineShowConfig() { -  void spineShowConfig(T)( -    T  doc_matters, -  ) { +  void spineShowConfig(T)(T doc_matters) {      <<metadoc_show_summary_imports>>      <<metadoc_show_imports_shared>>      mixin InternalMarkup; @@ -348,9 +344,7 @@ writefln(  module sisudoc.meta.metadoc_show_make;  @safe:  template spineShowMake() { -  void spineShowMake(T)( -    T  doc_matters, -  ) { +  void spineShowMake(T)(T doc_matters) {      <<metadoc_show_summary_imports>>      <<metadoc_show_imports_shared>>      mixin InternalMarkup; @@ -422,9 +416,7 @@ writefln(  module sisudoc.meta.metadoc_show_metadata;  @safe:  template spineShowMetaData() { -  void spineShowMetaData(T)( -    T  doc_matters, -  ) { +  void spineShowMetaData(T)(T doc_matters) {      <<metadoc_show_summary_imports>>      <<metadoc_show_imports_shared>>      mixin InternalMarkup; diff --git a/org/spine.org b/org/spine.org index f1fc7b2..f6e7faa 100644 --- a/org/spine.org +++ b/org/spine.org @@ -1282,7 +1282,7 @@ enforce(  *** 1. _document abstraction_ [#A]  - return tuple of: -  - doc_abstraction (the document) +  - doc.abstraction (the document)    - doc_matters  #+NAME: spine_each_file_do_abstraction @@ -1292,11 +1292,10 @@ if ((_opt_action.debug_do)  ) {    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, "]"); @@ -1323,9 +1322,9 @@ if ((doc_matters.opt.action.debug_do)  #+NAME: spine_each_file_do_debugs_checkdoc_0  #+BEGIN_SRC d  /+ ↓ 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);  }  #+END_SRC @@ -1335,9 +1334,9 @@ if (doc_matters.opt.action.show_summary) {  #+NAME: spine_each_file_do_debugs_checkdoc_1  #+BEGIN_SRC d  /+ ↓ 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);  }  #+END_SRC @@ -1347,9 +1346,9 @@ if (doc_matters.opt.action.show_metadata) {  #+NAME: spine_each_file_do_debugs_checkdoc_2  #+BEGIN_SRC d  /+ ↓ 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);  }  #+END_SRC @@ -1359,9 +1358,9 @@ if (doc_matters.opt.action.show_make) {  #+NAME: spine_each_file_do_debugs_checkdoc_3  #+BEGIN_SRC d  /+ ↓ 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);  }  #+END_SRC @@ -1370,17 +1369,17 @@ if (doc_matters.opt.action.show_config) {  #+NAME: spine_each_file_do_debugs_checkdoc_4  #+BEGIN_SRC d -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);      } @@ -1394,8 +1393,8 @@ if (doc_matters.opt.action.curate) {  #+NAME: spine_each_file_do_debugs_checkdoc_5  #+BEGIN_SRC d  /+ ↓ 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);  }  #+END_SRC @@ -1413,16 +1412,12 @@ if (!(_opt_action.skip_output)) {  #+NAME: spine_each_file_do_selected_output  #+BEGIN_SRC d  /+ ↓ 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, "]");    }  } @@ -1489,8 +1484,19 @@ template spineAbstraction() {      }      auto doc_matters = ST_DocumentMatters();      <<spine_each_file_do_document_matters_msg_step4_end>> -    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;    }  }  #+END_SRC @@ -1589,12 +1595,12 @@ if ((_opt_action.debug_do)  - prepare the document abstraction used in downstream processing  - _return tuple of_: -  - document abstraction (_the_document_ or doc_abstraction) +  - document abstraction (_the_document_ or doc.abstraction)    - document abstraction keys      - (head, toc, body, endnotes, glossary, bibliography, bookindex, blurb, tail) -    - (transfer to _doc_matters_) -  - segnames for html epub (transfer to _doc_matters_) -  - image list (transfer to _doc_matters_) +    - (transfer to _doc.matters_) +  - segnames for html epub (transfer to _doc.matters_) +  - image list (transfer to _doc.matters_)  #+NAME: spine_each_file_do_document_abstraction  #+BEGIN_SRC d @@ -1632,7 +1638,7 @@ if ((_opt_action.debug_do)  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, "]");  }  #+END_SRC 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, "]");              }            } | 
