diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2019-05-14 11:35:24 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2019-08-19 14:42:43 -0400 | 
| commit | 24c9ed3645178a6ee2abbd9201fa4643dba068e2 (patch) | |
| tree | 37cd2dbe489d8ab850fd814cdec63004c9a3150c /org | |
| parent | doc_abstraction reduce use of return ref, check (diff) | |
review, reduce use of auto
Diffstat (limited to 'org')
| -rw-r--r-- | org/default_misc.org | 72 | ||||
| -rw-r--r-- | org/doc_reform.org | 86 | ||||
| -rw-r--r-- | org/meta_abstraction.org | 768 | ||||
| -rw-r--r-- | org/meta_conf_make_meta.org | 66 | ||||
| -rw-r--r-- | org/output_hub.org | 2 | ||||
| -rw-r--r-- | org/output_sqlite.org | 162 | ||||
| -rw-r--r-- | org/output_xmls.org | 68 | ||||
| -rw-r--r-- | org/source_files_read.org | 32 | 
8 files changed, 507 insertions, 749 deletions
diff --git a/org/default_misc.org b/org/default_misc.org index 6866c85..8c901ca 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -86,7 +86,7 @@ template DocReformRgxInitFlags() {  #+BEGIN_SRC d  template DocReformNode() {    static string[string] node_metadata_heading_str() { -    auto _node = [ +    string[string] _node = [          "is"                            : "",          "ocn"                           : "",          "marked_up_lev"                 : "", @@ -97,7 +97,7 @@ template DocReformNode() {      return _node;    }    static int[string] node_metadata_heading_int() { -    auto _node = [ +    int[string] _node = [          "ocn"                           : 0, // decide whether to use or keep?          "ptr_doc_object"                : 0,          "ptr_html_segnames"             : 0, @@ -110,7 +110,7 @@ template DocReformNode() {      return _node;    }    static string[string] node_metadata_para_str() { -    auto _node = [ +    string[string] _node = [          "is"                            : "",          "ocn"                           : "",          "attrib"                        : "", @@ -118,7 +118,7 @@ template DocReformNode() {      return _node;    }    static int[string] node_metadata_para_int() { -    auto _node = [ +    int[string] _node = [          "ocn"                           : 0,          "indent_base"                   : 0,          "indent_hang"                   : 0, @@ -225,36 +225,36 @@ import  template InternalMarkup() {    import std.array;    static struct InlineMarkup { -    auto en_a_o = "【";      auto en_a_c = "】"; -    auto en_b_o = "〖";      auto en_b_c = "〗"; -    auto quote_o = "“";      auto quote_c = "”"; -    auto ff_o = "┨";         auto ff_c = "┣"; // fontface -    auto lnk_o = "┥";        auto lnk_c = "┝"; -    auto url_o = "┤";        auto url_c = "├"; -    auto emph = "*"; -    auto bold = "!"; -    auto italic = "/"; -    auto underscore = "_"; -    auto superscript = "^"; -    auto subscript = ","; -    auto mono = "■"; -    auto cite = "‖"; -    auto mark_internal_site_lnk = "¤"; -    auto nbsp                   = "░"; -    auto br_line                = "┘"; -    auto br_nl                  = "┙"; -    auto br_paragraph           = "┚"; -    auto br_obj                 = "break_obj"; -    auto br_page_line           = "┼"; -    auto br_page                = "┿"; -    auto br_page_new            = "╂"; -    auto tc_s                   = "┊"; -    auto tc_o                   = "┏"; -    auto tc_c                   = "┚"; -    auto tc_p                   = "┆"; -    auto img                    = "☼"; -    auto on_o  = "「";       auto on_c  = "」"; -    auto mk_bullet               = "● "; +    string en_a_o = "【";      string en_a_c = "】"; +    string en_b_o = "〖";      string en_b_c = "〗"; +    string quote_o = "“";      string quote_c = "”"; +    string ff_o = "┨";         string ff_c = "┣"; // fontface +    string lnk_o = "┥";        string lnk_c = "┝"; +    string url_o = "┤";        string url_c = "├"; +    string emph = "*"; +    string bold = "!"; +    string italic = "/"; +    string underscore = "_"; +    string superscript = "^"; +    string subscript = ","; +    string mono = "■"; +    string cite = "‖"; +    string mark_internal_site_lnk = "¤"; +    string nbsp                   = "░"; +    string br_line                = "┘"; +    string br_nl                  = "┙"; +    string br_paragraph           = "┚"; +    string br_obj                 = "break_obj"; +    string br_page_line           = "┼"; +    string br_page                = "┿"; +    string br_page_new            = "╂"; +    string tc_s                   = "┊"; +    string tc_o                   = "┏"; +    string tc_c                   = "┚"; +    string tc_p                   = "┆"; +    string img                    = "☼"; +    string on_o  = "「";       auto on_c  = "」"; +    string mk_bullet               = "● ";      static string indent_by_spaces_provided(int indent, string _indent_spaces ="░░") {        _indent_spaces = replicate(_indent_spaces, indent);        return _indent_spaces; @@ -342,11 +342,11 @@ template DocReformLanguageCodes() {        return _lang_codes;      }      static string[] code_arr_ptr() { -      auto _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",]; +      string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",];        return _lang_codes;      }      static string[] code_arr() { -      auto _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"]; +      string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"];        return _lang_codes;      }      static auto codes_() { diff --git a/org/doc_reform.org b/org/doc_reform.org index 5b1fc23..d805744 100644 --- a/org/doc_reform.org +++ b/org/doc_reform.org @@ -415,13 +415,13 @@ if (helpInfo.helpWanted) {  #+BEGIN_SRC d  enum outTask { pod, source, sqlite, sqlite_multi, epub, html_scroll, html_seg, html_stuff }  struct OptActions { -  auto assertions() { +  bool assertions() {      return opts["assertions"];    } -  auto concordance() { +  bool concordance() {      return opts["concordance"];    } -  auto css_theme_default() { +  bool css_theme_default() {      bool _is_light;      if (opts["light"] || opts["theme-light"]) {        _is_light = true; @@ -432,79 +432,79 @@ struct OptActions {      }      return _is_light;    } -  auto debug_do() { +  bool debug_do() {      return opts["debug"];    } -  auto digest() { +  bool digest() {      return opts["digest"];    } -  auto epub() { +  bool epub() {      return opts["epub"];    } -  auto html() { +  bool html() {      bool _is;      if ( opts["html"] || opts["html-seg"] || opts["html-scroll"])        { _is = true; } else { _is = false; }      return _is;    } -  auto html_seg() { +  bool html_seg() {      bool _is;      if ( opts["html"] || opts["html-seg"])        { _is = true; } else { _is = false; }      return _is;    } -  auto html_scroll() { +  bool html_scroll() {      bool _is;      if ( opts["html"] || opts["html-scroll"])        { _is = true; } else { _is = false; }      return _is;    } -  auto html_stuff() { +  bool html_stuff() {      bool _is;      if (opts["html"] || opts["html-scroll"] || opts["html-seg"])        { _is = true; } else { _is = false; }      return _is;    } -  auto manifest() { +  bool manifest() {      return opts["manifest"];    } -  auto ocn() { +  bool ocn() {      return opts["ocn"];    } -  auto quiet() { +  bool quiet() {      return opts["quiet"];    } -  auto pod() { +  bool pod() {      return opts["pod"];    } -  auto source() { +  bool source() {      return opts["source"];    } -  auto sqlite_discrete() { +  bool sqlite_discrete() {      return opts["sqlite-discrete"];    } -  auto sqlite_db_drop() { +  bool sqlite_db_drop() {      bool _is;      if ( opts["sqlite-db-recreate"] || opts["sqlite-db-drop"])        { _is = true; } else { _is = false; }      return _is;    } -  auto sqlite_db_create() { +  bool sqlite_db_create() {      bool _is;      if ( opts["sqlite-db-recreate"] || opts["sqlite-db-create"])        { _is = true; } else { _is = false; }      return _is;    } -  auto sqlite_delete() { +  bool sqlite_delete() {      return opts["sqlite-delete"];    } -  auto sqlite_update() { +  bool sqlite_update() {      bool _is;      if (opts["sqlite-update"] || opts["sqlite-insert"])        { _is = true; } else { _is = false; }      return _is;    } -  auto sqlite_shared_db_action() { +  bool sqlite_shared_db_action() {      bool _is;      if (opts["sqlite-db-recreate"]        || opts["sqlite-db-create"] @@ -514,49 +514,49 @@ struct OptActions {      ) { _is = true; } else { _is = false; }      return _is;    } -  auto text() { +  bool text() {      return opts["text"];    } -  auto verbose() { +  bool verbose() {      bool _is;      if (opts["verbose"] || opts["very-verbose"])        { _is = true; } else { _is = false; }      return _is;    } -  auto very_verbose() { +  bool very_verbose() {      return opts["very-verbose"];    } -  auto xhtml() { +  bool xhtml() {      return opts["xhtml"];    } -  auto section_toc() { +  bool section_toc() {      return opts["section_toc"];    } -  auto section_body() { +  bool section_body() {      return opts["section_body"];    } -  auto section_endnotes() { +  bool section_endnotes() {      return opts["section_endnotes"];    } -  auto section_glossary() { +  bool section_glossary() {      return opts["section_glossary"];    } -  auto section_biblio() { +  bool section_biblio() {      return opts["section_biblio"];    } -  auto section_bookindex() { +  bool section_bookindex() {      return opts["section_bookindex"];    } -  auto section_blurb() { +  bool section_blurb() {      return opts["section_blurb"];    } -  auto backmatter() { +  bool backmatter() {      return opts["backmatter"];    } -  auto skip_output() { +  bool skip_output() {      return opts["skip-output"];    } -  auto workon() { +  bool workon() {      return opts["workon"];    }    auto languages_set() { @@ -568,7 +568,7 @@ struct OptActions {    auto sqlite_filename() {      return settings["sqlite-filename"];    } -  auto parallelise() { +  bool parallelise() {      bool _is;      if (opts["parallel"] == true) {        _is = true; @@ -589,7 +589,7 @@ struct OptActions {      } else { _is = false; }      return _is;    } -  auto parallelise_subprocesses() { +  bool parallelise_subprocesses() {      return opts["parallel-subprocesses"];    }    auto output_task_scheduler() { @@ -617,7 +617,7 @@ struct OptActions {      }      return schedule.sort().uniq;    } -  auto abstraction() { +  bool abstraction() {      bool _is;      if (opts["abstraction"]        || concordance @@ -646,7 +646,7 @@ auto program_info() {      string name() {        return program_name;      } -    auto ver() { +    string ver() {        string ver_ = format(          "%s.%s.%s",          _ver.major, _ver.minor, _ver.patch, @@ -716,7 +716,7 @@ foreach(arg; args[1..$]) {          contents_location ~ "»"        );        auto contents_location_pth_ = (contents_location).to!string; -      auto lang_rgx_ = regex(r"/(" ~ _opt_action.languages_set.join("|") ~ ")/"); +      Regex!(char) lang_rgx_ = regex(r"/(" ~ _opt_action.languages_set.join("|") ~ ")/");        if (_opt_action.languages_set[0] == "all"          || (contents_location_pth_).match(lang_rgx_)        ) { @@ -1247,9 +1247,9 @@ if ((_opt_action.debug_do)  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_summary.d"  module doc_reform.meta.metadoc_summary;  template DocReformAbstractionSummary() { -  auto DocReformAbstractionSummary(S,T)( -    auto ref const S  doc_abstraction, -    auto ref       T  doc_matters, +  void DocReformAbstractionSummary(S,T)( +    const S  doc_abstraction, +          T  doc_matters,    ) {      <<metadoc_summary_imports>>      mixin InternalMarkup; diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index 8f2b76a..35d443f 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -29,64 +29,61 @@ Process markup document, create document abstraction.  +/  module doc_reform.meta.metadoc_from_src;  template DocReformDocAbstraction() { -  /+ ↓ abstraction imports +/ +                                                                                /+ ↓ abstraction imports +/    <<abs_top_imports>> -  /+ ↓ abstraction mixins +/ +                                                                                /+ ↓ abstraction mixins +/    <<abs_top_mixins>> -  /+ ↓ abstraction struct init +/ +                                                                                /+ ↓ abstraction struct init +/    <<abs_top_init_struct>>    <<abs_inline_para_tag_associations>> -  /+ ↓ abstract marked up document +/ -  auto DocReformDocAbstraction(Src,CMM,Opt,Mfst)( -    Src                  markup_sourcefile_content, -    CMM                  conf_make_meta, -    Opt                  opt_action, -    Mfst                 manifest_matter, -    bool                 _new_doc +                                                                                /+ ↓ abstract marked up document +/ +  auto DocReformDocAbstraction(CMM,Opt,Mf)( +    char[][]           markup_sourcefile_content, +    CMM                conf_make_meta, +    Opt                opt_action, +    Mf                 manifest_matter, +    bool               _new_doc    ) {      static auto rgx = Rgx(); -    debug(asserts) { -      static assert(is(typeof(markup_sourcefile_content) == char[][])); -    } -    /+ ↓ abstraction init +/ +                                                                                /+ ↓ abstraction init +/      <<abs_init_rest>> -    /+ abstraction init ↑ +/ +                                                                                /+ abstraction init ↑ +/      <<make_tests>> -    /+ ↓ ↻ loop markup document/text line by line +/ +                                                                                /+ ↓ ↻ loop markup document/text line by line +/      srcDocLoop: -    foreach (line; markup_sourcefile_content) {                                        /+ ↓ markup document/text line by line +/ -      // "line" variable can be empty but should never be null +    foreach (line; markup_sourcefile_content) {                                 /+ ↓ markup document/text line by line +/ +                                                                                // "line" variable can be empty but should never be null        <<abs_in_loop_body_00>>        if (obj_type_status["code"] == TriState.on) {          <<abs_in_loop_body_00_code_block>> -      } else if (!matchFirst(line, rgx.skip_from_regular_parse)) {                     /+ object other than "code block" object +/ -        /+ (includes regular text paragraph, headings & blocks other than code) +/ -        /+ heading, glossary, blurb, poem, group, block, quote, table +/ +      } else if (!matchFirst(line, rgx.skip_from_regular_parse)) {              /+ object other than "code block" object +/ +                                                                                /+ (includes regular text paragraph, headings & blocks other than code) +/ +                                                                                /+ heading, glossary, blurb, poem, group, block, quote, table +/          <<abs_in_loop_body_non_code_obj>> -        } else {                                                                       /+ not within a block group +/ +        } else {                                                                /+ not within a block group +/            <<abs_in_loop_body_open_block_obj_assert>>            if (line.matchFirst(rgx.block_open)) {              <<abs_in_loop_body_open_block_obj>> -          } else if (!line.empty) {                                                    /+ line not empty +/ -            /+ non blocks (headings, paragraphs) & closed blocks +/ +          } else if (!line.empty) {                                             /+ line not empty +/ +                                                                                /+ non blocks (headings, paragraphs) & closed blocks +/              <<abs_in_loop_body_not_block_obj>> -          } else if (obj_type_status["blocks"] == TriState.closing) {                  /+ line empty, with blocks flag +/ +          } else if (obj_type_status["blocks"] == TriState.closing) {           /+ line empty, with blocks flag +/              <<abs_in_loop_body_not_block_obj_line_empty_blocks_flags>> -          } else {                                                                     /+ line.empty, post contents, empty variables: +/ +          } else {                                                              /+ line.empty, post contents, empty variables: +/              <<abs_in_loop_body_not_block_obj_line_empty>> -          } // close else for line empty -        } // close else for not the above -      } // close after non code, other blocks or regular text +          }                                                                     // close else for line empty +        }                                                                       // close else for not the above +      }                                                                         // close after non code, other blocks or regular text        <<abs_in_loop_body_01>> -    }                                                                                  /+ ← srcDocLoop closed: loop markup document/text line by line +/ -    /+ ↓ post loop markup document/text +/ +    }                                                                           /+ ← srcDocLoop closed: loop markup document/text line by line +/ +                                                                                /+ ↓ post loop markup document/text +/      <<abs_post>>      <<abs_post_doc_reloop_processing>>      <<abs_struct_doc_has>>      <<abs_return_tuple>> -    /+ post loop markup document/text ↑ +/ -  }                                                                                    /+ ← closed: abstract doc source +/ -  /+ ↓ abstraction functions +/ +                                                                                /+ post loop markup document/text ↑ +/ +  }                                                                             /+ ← closed: abstract doc source +/ +                                                                                /+ ↓ abstraction functions +/    <<abs_functions_object_reset>>    <<abs_functions_header_set_common>>    <<abs_functions_ocn_status>> @@ -104,10 +101,10 @@ template DocReformDocAbstraction() {    <<abs_functions_heading>>    <<abs_functions_para>>    <<abs_functions_table>> -  /+ abstraction functions ↑ +/ -  /+ ↓ abstraction function emitters +/ +                                                                                /+ abstraction functions ↑ +/ +                                                                                /+ ↓ abstraction function emitters +/    <<meta_emitters_ocn>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_obj_inline_markup_munge>>    <<meta_emitters_obj_inline_markup>>    <<meta_emitters_obj_inline_markup_and_anchor_tags_and_misc>> @@ -115,28 +112,28 @@ template DocReformDocAbstraction() {    <<meta_emitters_obj_inline_markup_private>>    <<meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>>    <<meta_emitters_obj_inline_markup_close>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_obj_attributes>>    <<meta_emitters_obj_attributes_public>>    <<meta_emitters_obj_attributes_private>>    <<meta_emitters_obj_attributes_private_an_attribute>>    <<meta_emitters_obj_attributes_private_json>>    <<meta_emitters_obj_attributes_private_close>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_book_index_nugget>>    <<meta_emitters_book_index_report_indented>>    <<meta_emitters_book_index_report_section>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_endnotes>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_bibliography>> -  /+ +/ +                                                                                /+ +/    <<meta_emitters_metadata>> -  /+ abstraction functions emitters ↑ +/ -  /+ ↓ abstraction functions assertions +/ +                                                                                /+ abstraction functions emitters ↑ +/ +                                                                                /+ ↓ abstraction functions assertions +/    <<abs_functions_assertions>> -  /+ abstraction functions assertions ↑ +/ -} /+ ← closed: template DocReformDocAbstraction +/ +                                                                                /+ abstraction functions assertions ↑ +/ +}                                                                               /+ ← closed: template DocReformDocAbstraction +/  <<template_doc_sect_keys_seq>>  #+END_SRC @@ -247,9 +244,9 @@ enum DomTags { none, open, close, close_and_open, open_still, }  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure auto obj_heading_ancestors(O)( -  O          obj, -  string[]   lv_ancestors_txt, +pure ObjGenericComposite obj_heading_ancestors()( +  ObjGenericComposite  obj, +  string[]             lv_ancestors_txt,  ) {    switch (obj.metainfo.heading_lev_markup) {    case 0: @@ -306,10 +303,10 @@ pure auto obj_heading_ancestors(O)(  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure auto obj_dom_structure_set_markup_tags(O)( -  O           obj, -  int[]       dom, -  int         lev +pure ObjGenericComposite obj_dom_structure_set_markup_tags()( +  ObjGenericComposite  obj, +  int[]                dom, +  int                  lev  ) {    foreach (i; 0 .. 8) {      if (i < lev) { @@ -356,10 +353,10 @@ pure auto obj_dom_structure_set_markup_tags(O)(  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure auto obj_dom_set_collapsed_tags(O)( -  O           obj, -  int[]       dom, -  int         lev +pure ObjGenericComposite obj_dom_set_collapsed_tags()( +  ObjGenericComposite  obj, +  int[]                dom, +  int                  lev  ) {    foreach (i; 0 .. 8) {      if (i < lev) { @@ -420,7 +417,7 @@ static auto inline_markup_faces(L)(L line) {    }    return line;  } -static auto links_and_images(L)(L obj_txt) { +static string links_and_images()(string obj_txt) {    static auto rgx = Rgx();    static auto mkup = InlineMarkup();    if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -473,10 +470,10 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio  #+name: abs_inline_para_tag_associations  #+BEGIN_SRC d -auto inline_para_link_anchor(O,St,TA)( -  O an_object, -  St tag_in_seg, -  TA tag_assoc +string[string][string] inline_para_link_anchor()( +  string[string]          an_object, +  string[string]          tag_in_seg, +  string[string][string]  tag_assoc  ) {    static auto rgx = Rgx();    if (auto m = an_object["substantive"].match(rgx.inline_link_anchor)) { @@ -577,7 +574,7 @@ string[string] heading_match_str = [    "h_3": "^(none)",    "h_4": "^(none)"  ]; -auto heading_match_rgx = [ +Regex!char[string] heading_match_rgx = [    "h_A": regex(r"^(none)"),    "h_B": regex(r"^(none)"),    "h_C": regex(r"^(none)"), @@ -1711,7 +1708,7 @@ debug(bibliosection) {  ***** bibliography components -auto biblio_entry_tags_jsonstr =  `{ +JSONValue biblio_entry_tags_jsonstr =  `{    "is"                   : "",    "sortby_deemed_author_year_title"  : "",    "deemed_author"                    : "", @@ -2266,7 +2263,7 @@ Build here:  #+name: abs_post  #+BEGIN_SRC d -auto get_decendants(S)(S document_sections) { +auto get_decendants()(ObjGenericComposite[] document_sections) {    int[string] _heading_ocn_decendants;    string[] _ocn_open_key = ["","","","","","","",""];    auto _doc_sect_length = document_sections.length - 1; @@ -2320,7 +2317,7 @@ auto get_decendants(S)(S document_sections) {  #+name: abs_post  #+BEGIN_SRC d  string[] _images; -auto extract_images(S)(S content_block) { +string[] extract_images()(string content_block) {    string[] images_;    if (auto m = content_block.matchAll(rgx.image)) {      images_ ~= m.captures[1]; @@ -2923,7 +2920,7 @@ comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt);  #+name: abs_post  #+BEGIN_SRC d -auto document_the = [ +ObjGenericComposite[][string] document_the = [    "head":             the_document_head_section,    "toc":              the_table_of_contents_section,    /+ substantive/body: +/ @@ -2985,8 +2982,8 @@ if ((opt_action.html)  #+name: abs_post  #+BEGIN_SRC d -auto segnames_4 = segnames["html"].dup; -auto segnames_lv1_to_4 = segnames["epub"].dup; +string[] segnames_4        = segnames["html"].dup; +string[] segnames_lv1_to_4 = segnames["epub"].dup;  debug(segnames) {    writeln("segnames_lv4:      ", segnames_4);    writeln("segnames_lv1_to_4: ", segnames_lv1_to_4); @@ -3096,10 +3093,7 @@ functions used in document abstraction  #+name: abs_functions_object_reset  #+BEGIN_SRC d -static auto object_reset(O)(O an_object) { -  debug(asserts) { -    static assert(is(typeof(an_object) == string[string])); -  } +static string[string] object_reset()(string[string] an_object) {    an_object.remove("body_nugget");    an_object.remove("substantive");    an_object.remove("is"); @@ -3113,16 +3107,11 @@ static auto object_reset(O)(O an_object) {  #+name: abs_functions_header_set_common  #+BEGIN_SRC d -auto flow_common_reset_(L,O,T)( -  return ref L line_occur, -  return ref O an_object, -  return ref T obj_type_status +void flow_common_reset_()( +  return ref int[string]     line_occur, +  return ref string[string]  an_object, +  return ref int[string]     obj_type_status,  ) { -  debug(asserts) { -    static assert(is(typeof(line_occur)      == int[string])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    line_occur["heading"]      = State.off;    line_occur["para"]         = State.off;    obj_type_status["heading"] = State.off; @@ -3135,14 +3124,10 @@ auto flow_common_reset_(L,O,T)(  #+name: abs_functions_ocn_status  #+BEGIN_SRC d -static auto _check_ocn_status_(L,T)( -  L            line, -  T            obj_type_status +static int[string]         _check_ocn_status_()( +  char[]           line, +  int[string]      obj_type_status,  ) { -  debug(asserts) { -    static assert(is(typeof(line) == char[])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (!(line.empty)      && (obj_type_status["ocn_status_off_for_multiple_objects"] == OCN_off_block_status.off) @@ -3205,13 +3190,10 @@ static auto _check_ocn_status_(L,T)(  #+name: abs_functions_substitutions  #+BEGIN_SRC d -auto _doc_header_and_make_substitutions_(L,CMM)( -  L    line, -  CMM  conf_make_meta, +char[] _doc_header_and_make_substitutions_(CMM)( +  char[]  line, +  CMM     conf_make_meta,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -  }    enum Substitute { match, markup, }    if (conf_make_meta.make.substitute) {      foreach(substitution_pair; conf_make_meta.make.substitute) { @@ -3229,13 +3211,10 @@ auto _doc_header_and_make_substitutions_(L,CMM)(  #+name: abs_functions_substitutions  #+BEGIN_SRC d -auto _doc_header_and_make_substitutions_fontface_(L,CMM)( -  L    line, -  CMM  conf_make_meta, +char[] _doc_header_and_make_substitutions_fontface_(CMM)( +  char[]  line, +  CMM     conf_make_meta,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -  }    enum Substitute { match, markup, }    if ( conf_make_meta.make.bold) {      line = line.replaceAll( @@ -3265,17 +3244,12 @@ auto _doc_header_and_make_substitutions_fontface_(L,CMM)(  #+name: abs_functions_block  #+BEGIN_SRC d -void flow_txt_block_start(L,T,N)( -             L              line, -  return ref T              obj_type_status, +void flow_txt_block_start()( +             char[]         line, +  return ref int[string]    obj_type_status,    return ref uint[string]   dochas, -  return ref N              object_number_poem +  return ref string[string] object_number_poem  ) { -  debug(asserts) { -    static assert(is(typeof(line)                 == char[])); -    static assert(is(typeof(obj_type_status)      == int[string])); -    static assert(is(typeof(object_number_poem)   == string[string])); -  }  #+END_SRC  ****** block (various) curly open                                :curly: @@ -3554,16 +3528,11 @@ void flow_txt_block_start(L,T,N)(  #+name: abs_functions_block_code  #+BEGIN_SRC d -void flow_txt_block_code(L,O,T)( -             L line, -  return ref O an_object, -  return ref T obj_type_status +void flow_txt_block_code()( +             char[]          line, +  return ref string[string]  an_object, +  return ref int[string]     obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_code"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_code_close)) { @@ -3608,10 +3577,7 @@ void flow_txt_block_code(L,O,T)(  #+name: abs_functions_block_biblio  #+BEGIN_SRC d -final string biblio_tag_map(A)(A abr) { -  debug(asserts) { -    static assert(is(typeof(abr) == string)); -  } +final string biblio_tag_map()(string abr) {    auto btm = [      "au"                               : "author_raw",      "ed"                               : "editor_raw", @@ -3636,10 +3602,7 @@ final string biblio_tag_map(A)(A abr) {  #+name: none  #+BEGIN_SRC d -final string biblio_tag_map_(A)(A abr) { -  debug(asserts) { -    static assert(is(typeof(abr) == string)); -  } +final string biblio_tag_map_()(string abr) {    string name;    switch (abr) {    case "au":  name="author_raw"; break; @@ -3801,16 +3764,11 @@ void flow_txt_block_biblio(  #+name: abs_functions_block_quote  #+BEGIN_SRC d -auto flow_txt_block_quote(L,O,T)( -             L line, -             O an_object, -  return ref T obj_type_status +string[string] flow_txt_block_quote()( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_quote"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_quote_close)) { @@ -3854,16 +3812,11 @@ auto flow_txt_block_quote(L,O,T)(  #+name: abs_functions_block_group  #+BEGIN_SRC d -auto flow_txt_block_group(L,O,T)( -             L line, -             O an_object, -  return ref T obj_type_status +string[string] flow_txt_block_group()( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_group"] == State.on) {      if (line.matchFirst(rgx.block_curly_group_close)) { @@ -3908,16 +3861,11 @@ auto flow_txt_block_group(L,O,T)(  #+name: abs_functions_block_block  #+BEGIN_SRC d -auto flow_txt_block_block(L,O,T)( -             L line, -             O an_object, -  return ref T obj_type_status +string[string] flow_txt_block_block()( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_block"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_block_close)) { @@ -3960,22 +3908,15 @@ why extra object stuff only in poem/verse?  #+name: abs_functions_block_poem  #+BEGIN_SRC d -auto flow_txt_block_poem(L,O,T,C,N,CMM,Ts)( -             L   line, -             O   an_object, -  return ref T   obj_type_status, -  return ref C   cntr, -             N   object_number_poem, -             CMM conf_make_meta, -             Ts  tag_in_seg, +string[string]  flow_txt_block_poem(CMM)( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     obj_type_status, +  return ref int             cntr, +             string[string]  object_number_poem, +             CMM             conf_make_meta, +             string[string]  tag_in_seg,  ) { -  debug(asserts) { -    static assert(is(typeof(line)                 == char[])); -    static assert(is(typeof(an_object)            == string[string])); -    static assert(is(typeof(obj_type_status)      == int[string])); -    static assert(is(typeof(cntr)                 == int)); -    static assert(is(typeof(object_number_poem)   == string[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_poem"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_poem_close)) { @@ -4231,17 +4172,12 @@ you need:  #+name: abs_functions_block_table  #+BEGIN_SRC d -auto flow_txt_block_table(L,O,T,CMM)( -             L   line, -             O   an_object, -  return ref T   obj_type_status, -  return ref CMM conf_make_meta, +string[string] flow_txt_block_table(CMM)( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     obj_type_status, +  return ref CMM             conf_make_meta,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (obj_type_status["curly_table"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_table_close)) { @@ -4355,7 +4291,7 @@ void flow_table_closed_make_special_notation_table_(N,CMM)(  #+name: abs_functions_block_line_status_empty  #+BEGIN_SRC d -auto flow_block_flag_line_empty_(B,N,CMM,Ts)( +string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)(               char[]                   line,               string[string]           an_object,               B                        bookindex_extract_hash, @@ -4711,19 +4647,13 @@ auto flow_block_flag_line_empty_(B,N,CMM,Ts)(  #+name: abs_functions_book_index  #+BEGIN_SRC d -auto flow_book_index_(L,I,O,T,B)( -             L  line, -             O  an_object, -             I  book_idx_tmp, -  return ref T  obj_type_status, -             B  opt_action, +string[string] flow_book_index_(B)( +             char[]          line, +             string[string]  an_object, +  return ref string          book_idx_tmp, +  return ref int[string]     obj_type_status, +             B               opt_action,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(book_idx_tmp)    == string)); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (auto m = line.match(rgx.book_index)) {                                   /+ match book_index +/      debug(bookindexmatch) { @@ -4774,20 +4704,13 @@ auto flow_book_index_(L,I,O,T,B)(  #+name: abs_functions_heading  #+BEGIN_SRC d -auto flow_heading_found_(L,H,X,R,T)( -             L line, -             H heading_match_str, -             X _make_unmarked_headings, -  return ref R heading_match_rgx, -  return ref T obj_type_status +string[string] flow_heading_found_()( +             char[]                line, +             string[string]        heading_match_str, +             string[]              _make_unmarked_headings, +  return ref Regex!(char)[string]  heading_match_rgx, +  return ref int[string]           obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)                      == char[])); -    static assert(is(typeof(_make_unmarked_headings)   == string[])); -    static assert(is(typeof(heading_match_str)         == string[string])); -    static assert(is(typeof(heading_match_rgx)         == Regex!(char)[string])); -    static assert(is(typeof(obj_type_status)           == int[string])); -  }    static auto rgx = Rgx();    if ((_make_unmarked_headings.length > 2)    && (obj_type_status["make_headings"] == State.off)) {                        /+ headings found +/ @@ -4868,18 +4791,12 @@ auto flow_heading_found_(L,H,X,R,T)(  #+name: abs_functions_heading  #+BEGIN_SRC d -auto flow_heading_make_set_(L,C,R,T)( -             L line, -             C line_occur, -  return ref R heading_match_rgx, -  return ref T obj_type_status +char[] flow_heading_make_set_()( +             char[]                line, +             int[string]           line_occur, +  return ref Regex!(char)[string]  heading_match_rgx, +  return ref int[string]           obj_type_status  ) { -  debug(asserts) { -    static assert(is(typeof(line)              == char[])); -    static assert(is(typeof(line_occur)        == int[string])); -    static assert(is(typeof(heading_match_rgx) == Regex!(char)[string])); -    static assert(is(typeof(obj_type_status)   == int[string])); -  }    if ((obj_type_status["make_headings"] == State.on)    && ((line_occur["para"] == State.off)    && (line_occur["heading"] == State.off)) @@ -4936,25 +4853,16 @@ auto flow_heading_make_set_(L,C,R,T)(  #+name: abs_functions_heading  #+BEGIN_SRC d -auto flow_heading_matched_(L,C,O,K,Lv,Lc,T,CMM)( -             L   line, -             O   an_object, -  return ref C   line_occur, -  return ref K   an_object_key, -  return ref Lv  lv, -  return ref Lc  collapsed_lev, -  return ref T   obj_type_status, -  return ref CMM conf_make_meta, +string[string] flow_heading_matched_(CMM)( +             char[]          line, +             string[string]  an_object, +  return ref int[string]     line_occur, +  return ref string          an_object_key, +  return ref int[string]     lv, +  return ref int[string]     collapsed_lev, +  return ref int[string]     obj_type_status, +  return ref CMM             conf_make_meta,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(line_occur)      == int[string])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(an_object_key)   == string)); -    static assert(is(typeof(lv)              == int[string])); -    static assert(is(typeof(collapsed_lev)   == int[string])); -    static assert(is(typeof(obj_type_status) == int[string])); -  }    static auto rgx = Rgx();    if (auto m = line.match(rgx.heading)) {                                      /+ heading match +/      ++line_occur["heading"]; @@ -5097,24 +5005,15 @@ auto flow_heading_matched_(L,C,O,K,Lv,Lc,T,CMM)(  #+name: abs_functions_para  #+BEGIN_SRC d -auto flow_para_match_(L,O,K,I,B,T,C)( -             L  line, -             O  an_object, -  return ref K  an_object_key, -  return ref I  indent, -  return ref B  bullet, -  return ref T  obj_type_status, -  return ref C  line_occur, +string[string] flow_para_match_()( +             char[]         line, +             string[string]  an_object, +  return ref string          an_object_key, +  return ref int[string]     indent, +  return ref bool            bullet, +  return ref int[string]     obj_type_status, +  return ref int[string]     line_occur,  ) { -  debug(asserts) { -    static assert(is(typeof(line)            == char[])); -    static assert(is(typeof(an_object)       == string[string])); -    static assert(is(typeof(an_object_key)   == string)); -    static assert(is(typeof(indent)          == int[string])); -    static assert(is(typeof(bullet)          == bool)); -    static assert(is(typeof(obj_type_status) == int[string])); -    static assert(is(typeof(line_occur)      == int[string])); -  }    static auto rgx = Rgx();    if (line_occur["para"] == State.off) {      line = font_faces_line(line); @@ -5165,8 +5064,8 @@ auto flow_para_match_(L,O,K,I,B,T,C)(  #+name: abs_functions_para  #+BEGIN_SRC d -auto font_faces_line(T)( -  T  textline, +char[] font_faces_line()( +  char[]  textline,  ) {    static auto rgx = Rgx();    static auto mkup = InlineMarkup(); @@ -5194,9 +5093,9 @@ auto font_faces_line(T)(  #+name: abs_functions_table  #+BEGIN_SRC d -auto flow_table_instructions(O,H)( -  return ref O  table_object, -  return ref H  table_head, +ObjGenericComposite flow_table_instructions(H)( +  return ref ObjGenericComposite  table_object, +             H                    table_head,  ) {    static auto rgx = Rgx();    table_object.metainfo.is_of_part      = "body"; @@ -5225,9 +5124,9 @@ auto flow_table_instructions(O,H)(  #+name: abs_functions_table  #+BEGIN_SRC d -auto flow_table_array_munge(O,T)( -  return ref O  table_object, -  return ref T  table_array, +ObjGenericComposite flow_table_array_munge(T)( +  return ref ObjGenericComposite  table_object, +  return ref T                    table_array,  ) {    static auto rgx = Rgx();    static auto mng = InlineMarkup(); @@ -5355,9 +5254,9 @@ auto flow_table_array_munge(O,T)(  #+name: abs_functions_table  #+BEGIN_SRC d -auto flow_table_substantive_munge(O,T)( -  return ref O  table_object, -  return ref T  table_substantive, +ObjGenericComposite flow_table_substantive_munge(T)( +  return ref ObjGenericComposite  table_object, +  return ref T                    table_substantive,  ) {    static auto rgx = Rgx();    static auto munge = ObjInlineMarkupMunge(); @@ -5377,9 +5276,9 @@ auto flow_table_substantive_munge(O,T)(  #+name: abs_functions_table  #+BEGIN_SRC d -auto flow_table_substantive_munge_special(O,T)( -  return ref O  table_object, -  return ref T  table_substantive, +ObjGenericComposite flow_table_substantive_munge_special(T)( +  return ref ObjGenericComposite  table_object, +  return ref T                    table_substantive,  ) {    static auto rgx = Rgx();    static auto munge = ObjInlineMarkupMunge(); @@ -5475,10 +5374,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  static auto images(Ot)(Ot obj_txt_in) { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    } +  static auto images()(string obj_txt_in) {      static auto mng = InlineMarkup();      /+ url matched +/      obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented @@ -5514,10 +5410,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto footnotes_endnotes_markup_and_number_or_stars(Ot)(Ot obj_txt_in, bool reset_note_numbers) { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    } +  auto footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) {      /+ endnotes (regular) +/      bool flg_notes_reg  = false;      bool flg_notes_star = false; @@ -5587,11 +5480,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  private auto object_notes_and_links_(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) +  private auto object_notes_and_links_()(string obj_txt_in, bool reset_note_numbers=false)    in { -    debug(asserts) { -      assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt_out = ""; @@ -5663,11 +5553,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) +  auto munge_heading()(string obj_txt_in, bool reset_note_numbers=false)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"] = obj_txt_in @@ -5697,11 +5584,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_para(Ot)(Ot obj_txt_in) +  auto munge_para()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=(obj_txt_in) @@ -5722,11 +5606,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_quote(Ot)(Ot obj_txt_in) +  string munge_quote()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=obj_txt_in; @@ -5769,11 +5650,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_block(Ot)(Ot obj_txt_in) +  auto munge_block()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=obj_txt_in; @@ -5795,11 +5673,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_verse(Ot)(Ot obj_txt_in) +  auto munge_verse()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=obj_txt_in; @@ -5820,11 +5695,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_code(Ot)(Ot obj_txt_in) +  string munge_code()(string obj_txt_in)    in { -    debug(asserts) { -      assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp); @@ -5841,11 +5713,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_table(Ot)(Ot obj_txt_in) +  string munge_table()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=obj_txt_in; @@ -5859,11 +5728,8 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_comment(Ot)(Ot obj_txt_in) +  string munge_comment()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      obj_txt["munge"]=obj_txt_in; @@ -5896,17 +5762,13 @@ static struct ObjInlineMarkup {  #+name: meta_emitters_obj_inline_markup_and_anchor_tags_and_misc  #+BEGIN_SRC d -  auto obj_inline_markup_and_anchor_tags_and_misc(O,K,CMM)( -    O   obj_, -    K   obj_key_, -    CMM conf_make_meta, -    Flag!"_new_doc" _new_doc +  auto obj_inline_markup_and_anchor_tags_and_misc(CMM)( +    string[string]   obj_, +    string           obj_key_, +    CMM              conf_make_meta, +    Flag!"_new_doc"  _new_doc    )    in { -    debug(asserts) { -      static assert(is(typeof(obj_)            == string[string])); -      static assert(is(typeof(obj_key_)        == string)); -    }    }    body {      obj_txt["munge"] = obj_[obj_key_].dup; @@ -6002,34 +5864,24 @@ static struct ObjInlineMarkup {  #+name: meta_emitters_obj_inline_markup_table_of_contents  #+BEGIN_SRC d -  auto _clean_heading_toc_(Toc)( -    Toc heading_toc_, +  auto _clean_heading_toc_()( +    char[] heading_toc_,    ) { -   debug(asserts) { -     static assert(is(typeof(heading_toc_) == char[])); -   }     auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading);     heading_toc_ = (m.post).replaceAll(       rgx.inline_notes_curly_gen,       "");     return heading_toc_;    }; -  auto flow_table_of_contents_gather_headings(O,CMM,Ts,Ta,X,Toc)( -    O            obj_, -    CMM          conf_make_meta, -    Ts           tag_in_seg, -    Ta           _anchor_tag, -    return ref X lev4_subtoc, -    Toc          the_table_of_contents_section, +  ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( +               string[string]         obj_, +               CMM                    conf_make_meta, +               string[string]         tag_in_seg, +               string                 _anchor_tag, +    return ref string[][string]       lev4_subtoc, +               ObjGenericComposite[]  the_table_of_contents_section,    )    in { -    debug(asserts) { -      static assert(is(typeof(obj_)                                == string[string])); -      static assert(is(typeof(tag_in_seg)                          == string[string])); -      static assert(is(typeof(_anchor_tag)                         == string)); -      static assert(is(typeof(lev4_subtoc)                         == string[][string])); -      static assert(is(typeof(the_table_of_contents_section)       == ObjGenericComposite[])); -    }    }    body {      ObjGenericComposite comp_obj_toc; @@ -6121,16 +5973,12 @@ private:    static string heading_number_auto_composite = "";    static string heading_number_auto_composite_segname = "";    static bool[] auto_heading_numbering = [ true, true, true, true]; -  static string _configured_auto_heading_numbering_and_segment_anchor_tags(M,O,CMM)( -    M    munge_, -    O    obj_, -    CMM  conf_make_meta, -    bool _new_doc, +  static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( +    string           munge_, +    string[string]   obj_, +    CMM              conf_make_meta, +    bool             _new_doc,    ) { -    debug(asserts) { -      static assert(is(typeof(munge_)          == string)); -      static assert(is(typeof(obj_)            == string[string])); -    }      if (_new_doc) {        heading_num = [ 0, 0, 0, 0 ];        heading_number_auto_composite = ""; @@ -6275,15 +6123,11 @@ private:  #+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags  #+BEGIN_SRC d    static int heading_num_lev1 = 0; -  static string _make_segment_anchor_tags_if_none_provided(M,Lv)( -    M munge_, -    Lv lev_, -    bool _new_doc +  static string _make_segment_anchor_tags_if_none_provided()( +    string munge_, +    string lev_, +    bool   _new_doc    ) { -    debug(asserts) { -      static assert(is(typeof(munge_) == string)); -      static assert(is(typeof(lev_)   == string)); -    }      if (!(munge_.match(rgx.heading_anchor_tag))) {        if (munge_.match(rgx.heading_identify_anchor_tag)) {          if (auto m = munge_.match(rgx.heading_extract_named_anchor_tag)) { @@ -6334,17 +6178,12 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_public  #+BEGIN_SRC d -  string obj_attributes(Oi,OR,OH)( -    Oi obj_is_, -    OR obj_raw, -    OH _comp_obj_heading, +  string obj_attributes()( +    string              obj_is_, +    string              obj_raw, +    ObjGenericComposite _comp_obj_heading,    )    in { -    debug(asserts) { -      static assert(is(typeof(obj_is_)           == string)); -      static assert(is(typeof(obj_raw)           == string)); -      static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); -    }    }    body {      scope(exit) { @@ -6417,11 +6256,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_para_and_blocks(Ot)(Ot obj_txt_in) +  string txt_para_and_blocks()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      if (obj_txt_in.matchFirst(rgx.para_bullet)) { @@ -6453,11 +6289,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_heading(Ot)(Ot obj_txt_in) +  string txt_heading()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6473,11 +6306,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_para(Ot)(Ot obj_txt_in) +  string txt_para()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6493,11 +6323,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_quote(Ot)(Ot obj_txt_in) +  string txt_quote()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6513,11 +6340,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_group(Ot)(Ot obj_txt_in) +  string txt_group()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6533,11 +6357,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_block(Ot)(Ot obj_txt_in) +  string txt_block()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6553,11 +6374,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_verse(Ot)(Ot obj_txt_in) +  string txt_verse()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6573,11 +6391,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_code(Ot)(Ot obj_txt_in) +  string txt_code()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6593,11 +6408,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_table(Ot)(Ot obj_txt_in) +  string txt_table()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"content\"," @@ -6613,11 +6425,8 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_comment(Ot)(Ot obj_txt_in) +  string txt_comment()(string obj_txt_in)    in { -    debug(asserts) { -      static assert(is(typeof(obj_txt_in) == string)); -    }    }    body {      _obj_attributes = " \"use\": \"comment\"," @@ -6633,16 +6442,11 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_json  #+BEGIN_SRC d -  string _set_additional_values_parse_as_json(OA,Oi,OH)( -    OA _obj_attrib, -    Oi obj_is_, -    OH _comp_obj_heading, +  string _set_additional_values_parse_as_json()( +    string              _obj_attrib, +    string              obj_is_, +    ObjGenericComposite _comp_obj_heading,    ) { -    debug(asserts) { -      static assert(is(typeof(_obj_attrib)       == string)); -      static assert(is(typeof(obj_is_)           == string)); -      static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); -    }      JSONValue oa_j = parseJSON(_obj_attrib);      assert(        (oa_j.type == JSON_TYPE.OBJECT) @@ -6682,14 +6486,13 @@ struct BookIndexNuggetHash {    string[][string][string] bi;    string[][string][string] hash_nugget;    string[] bi_main_terms_split_arr; -  string[][string][string] bookindex_nugget_hash(BI,N,S)( -    BI bookindex_section, -    N  obj_cite_digits, -    S  tag_in_seg, +  string[][string][string] bookindex_nugget_hash(N,S)( +    string bookindex_section, +    N      obj_cite_digits, +    S      tag_in_seg,    )    in {      debug(asserts) { -      static assert(is(typeof(bookindex_section)  == string));        static assert(is(typeof(obj_cite_digits.object_number) == int));      }      debug(bookindexraw) { @@ -6763,12 +6566,9 @@ struct BookIndexNuggetHash {  #+BEGIN_SRC d  struct BookIndexReportIndent {    int mkn, skn; -  void bookindex_report_indented(BI)( -    BI bookindex_unordered_hashes +  void bookindex_report_indented()( +    string[][string][string] bookindex_unordered_hashes    ) { -    debug(asserts) { -      static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); -    }      auto mainkeys        = bookindex_unordered_hashes.byKey.array.sort().release;      foreach (mainkey; mainkeys) { @@ -6807,8 +6607,8 @@ struct BookIndexReportSection {  #+name: meta_emitters_book_index_report_section  #+BEGIN_SRC d -  void bookindex_write_section(BI)( -    BI bookindex_unordered_hashes +  void bookindex_write_section()( +    string[][string][string] bookindex_unordered_hashes    ) {      auto mainkeys =        bookindex_unordered_hashes.byKey.array @@ -6842,13 +6642,12 @@ struct BookIndexReportSection {  #+name: meta_emitters_book_index_report_section  #+BEGIN_SRC d -  auto bookindex_build_abstraction_section(BI,N,B)( -    BI bookindex_unordered_hashes, -    N  obj_cite_digits, -    B  opt_action, +  auto bookindex_build_abstraction_section(N,B)( +    string[][string][string] bookindex_unordered_hashes, +    N                        obj_cite_digits, +    B                        opt_action,    ) {      debug(asserts) { -      static assert(is(typeof(bookindex_unordered_hashes)                == string[][string][string]));        static assert(is(typeof(obj_cite_digits.object_number)             == int));      }      mixin DocReformNode; @@ -7228,15 +7027,11 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  public JSONValue[] flow_bibliography_(Bi,BJ)( -    return ref Bi biblio_unsorted_incomplete, -    return ref BJ bib_arr_json +  public JSONValue[] flow_bibliography_()( +    return ref string[]    biblio_unsorted_incomplete, +    return ref JSONValue[] bib_arr_json    )    in { -    debug(asserts) { -      static assert(is(typeof(biblio_unsorted_incomplete) == string[])); -      static assert(is(typeof(bib_arr_json)               == JSONValue[])); -    }   }    body {      JSONValue[] biblio_unsorted @@ -7266,14 +7061,10 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  final private JSONValue[] biblio_make_unsorted_array_of_json_objects(Bi,BJ)( -    Bi            biblio_unordered, -    BJ            bib_arr_json +  final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( +    string[]      biblio_unordered, +    JSONValue[]   bib_arr_json    ) { -    debug(asserts) { -      static assert(is(typeof(biblio_unordered) == string[])); -      static assert(is(typeof(bib_arr_json)     == JSONValue[])); -    }      foreach (bibent; biblio_unordered) {        /+ update bib to include deemed_author, needed for:          sort_bibliography_array_by_deemed_author_year_title @@ -7304,10 +7095,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  final private JSONValue[] biblio_sort(BJ)(BJ biblio_unordered) { -    debug(asserts) { -      static assert(is(typeof(biblio_unordered) == JSONValue[])); -    } +  final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) {      JSONValue[] biblio_sorted_;      biblio_sorted_        = sort!((a, b){ @@ -7328,10 +7116,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  void biblio_debug(BJ)(BJ biblio_sorted) { -    debug(asserts) { -      static assert(is(typeof(biblio_sorted) == JSONValue[])); -    } +  void biblio_debug()(JSONValue[] biblio_sorted) {      debug(biblio0) {        foreach (j; biblio_sorted) {          if (!empty(j["fulltitle"].str)) { @@ -7365,24 +7150,19 @@ struct NodeStructureMetadata {  #+name: meta_emitters_metadata  #+BEGIN_SRC d -  ObjGenericComposite node_location_emitter(Lv,Tg,La,Ta,N,C,P,I)( -    Lv lev_markup_number, -    Tg tag_in_seg, -    La lev_anchor_tag, -    Ta tag_assoc, -    N  obj_cite_digits, -    C  cntr_, -    P  ptr_, -    I  is_ +  ObjGenericComposite node_location_emitter(La,Ta,N)( +    string         lev_markup_number, +    string[string] tag_in_seg, +    La             lev_anchor_tag, +    Ta             tag_assoc, +    N              obj_cite_digits, +    int            cntr_, +    int            ptr_, +    string         is_    )    in {      debug(asserts) { -      static assert(is(typeof(lev_markup_number)             == string)); -      static assert(is(typeof(tag_in_seg)                    == string[string]));        static assert(is(typeof(obj_cite_digits.object_number) == int)); -      static assert(is(typeof(cntr_)                         == int)); -      static assert(is(typeof(ptr_)                          == int)); -      static assert(is(typeof(is_)                           == string));      }      assert(is_ != "heading");      assert(obj_cite_digits.object_number.to!int >= 0); @@ -7433,37 +7213,28 @@ struct NodeStructureMetadata {  #+name: meta_emitters_metadata  #+BEGIN_SRC d -  ObjGenericComposite node_emitter_heading(T,Lm,Lc,Hd,TaB,TaL,TA,N,C,P,LA,I,PSn,fNr,fNs,fL)( -    T   _text, -    Lm  lev_markup_number, -    Lc  lev_collapsed_number, -    Hd  dummy_heading_status, -    TaB tag_in_seg, -    TaL lev_anchor_tag, -    TA  tag_assoc, -    N   obj_cite_digits, -    C   cntr_, -    P   ptr_, -    LA  lv_ancestors_txt, -    I   is_, -    PSn html_segnames_ptr, -    fNr flag_notes_reg, -    fNs flag_notes_star, -    fL  flag_links, +  ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( +    string         _text, +    string         lev_markup_number, +    string         lev_collapsed_number, +    Hd             dummy_heading_status, +    string[string] tag_in_seg, +    TaL            lev_anchor_tag, +    TA             tag_assoc, +    N              obj_cite_digits, +    int            cntr_, +    int            ptr_, +    string[]       lv_ancestors_txt, +    string         is_, +    int            html_segnames_ptr, +    fNr            flag_notes_reg, +    fNs            flag_notes_star, +    fL             flag_links,    )    in {      debug(asserts) { -      static assert(is(typeof(_text)                                     == string));        static assert(is(typeof(lev)                                       == string)); -      static assert(is(typeof(lev_markup_number)                         == string)); -      static assert(is(typeof(lev_collapsed_number)                      == string)); -      static assert(is(typeof(tag_in_seg)                                == string[string]));        static assert(is(typeof(obj_cite_digits.object_number)             == int)); -      static assert(is(typeof(cntr_)                                     == int)); -      static assert(is(typeof(ptr_)                                      == int)); -      static assert(is(typeof(lv_ancestors_txt)                          == string[])); -      static assert(is(typeof(is_)                                       == string)); -      static assert(is(typeof(html_segnames_ptr)                         == int));      }      assert(is_ == "heading");      assert((obj_cite_digits.object_number).to!int >= 0); @@ -7655,14 +7426,10 @@ struct NodeStructureMetadata {  #+name: abs_functions_assertions  #+BEGIN_SRC d -pure void assertions_doc_structure(O,Lv)( -  O  an_object, -  Lv lv +pure void assertions_doc_structure()( +  string[string]  an_object, +  int[string]     lv  ) { -  debug(asserts) { -    static assert(is(typeof(an_object) == string[string])); -    static assert(is(typeof(lv)        == int[string])); -  }    if (lv["h3"] > State.off) {      assert(lv["h0"] > State.off);      assert(lv["h1"] > State.off); @@ -7840,10 +7607,7 @@ pure void assertions_doc_structure(O,Lv)(  #+name: abs_functions_assertions  #+BEGIN_SRC d -pure void assertions_flag_types_block_status_none_or_closed(T)(T obj_type_status) { -  debug(asserts) { -    static assert(is(typeof(obj_type_status) == int[string])); -  } +pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) {    assert(      (obj_type_status["code"] == TriState.off)      || (obj_type_status["code"] == TriState.closing), diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org index a0440e3..a27a18a 100644 --- a/org/meta_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -76,8 +76,8 @@ auto _mkup = InlineMarkup();  #+name: meta_defaults_template_structs  #+BEGIN_SRC d -auto url_markup(string line) { -  auto line_ = line +string url_markup(string line) { +  string line_ = line      .replaceAll(        _rgx.smid_inline_link_markup_regular,        ("$1" @@ -118,30 +118,30 @@ struct ConfCompositeMakeStr {    string texpdf_font;  }  struct confCompositeMakeBuild { -  auto bold(string _mk) { +  string[] bold(string _mk) {      string[] _out;      if (_mk) {        _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "*{$1}*", "<b>$1</b>"];      }      return _out;    } -  auto breaks(string _mk) { +  string breaks(string _mk) {      return _mk;    } -  auto cover_image(string _mk) { +  string cover_image(string _mk) {      return _mk;    } -  auto css(string _mk) { +  string css(string _mk) {      return _mk;    } -  auto emphasis(string _mk) { +  string[] emphasis(string _mk) {      string[] _out;      if (_mk) {        _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "!{$1}!", "<em>$1</em>" ];      }      return _out;    } -  auto footer(string[] _mk) { +  string[] footer(string[] _mk) {      string line_;      string[] _mk2;      foreach (line; _mk) { @@ -149,35 +149,35 @@ struct confCompositeMakeBuild {      }      return _mk2;    } -  auto headings(string[] _mk) { +  string[] headings(string[] _mk) {      return _mk;    } -  auto home_button_image(string[] _mk) { +  string[] home_button_image(string[] _mk) {      return _mk;    } -  auto home_button_text(string _mk) { +  string home_button_text(string _mk) {      return url_markup(_mk);    } -  auto italics(string _mk) { +  string[] italics(string _mk) {      string[] _out;      if (_mk) {        _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "/{$1}/", "<i>$1</i>" ];      }      return _out;    } -  auto auto_num_top_at_level(string _mk) { +  string auto_num_top_at_level(string _mk) {      return _mk;    } -  auto auto_num_top_lv(int _mk) { +  int auto_num_top_lv(int _mk) {      return _mk;    } -  auto auto_num_depth(int _mk) { +  int auto_num_depth(int _mk) {      return _mk;    } -  auto substitute(string[][] _mk) { +  string[][] substitute(string[][] _mk) {      return _mk;    } -  auto texpdf_font(string _mk) { +  string texpdf_font(string _mk) {      return _mk;    }  } @@ -326,7 +326,7 @@ struct ConfCompositePlus {  #+name: meta_defaults_template_structs  #+BEGIN_SRC d -static auto ptr_head_main +static string[] ptr_head_main    = [      "classify",      "creator", @@ -339,7 +339,7 @@ static auto ptr_head_main      "rights",      "title"    ]; -static auto ptr_head_sub_classify +static string[] ptr_head_sub_classify    = [      "dewey",      "keywords", @@ -347,7 +347,7 @@ static auto ptr_head_sub_classify      "subject",      "topic_register"    ]; -static auto ptr_head_sub_creator +static string[] ptr_head_sub_creator    = [      "author",      "author_email", @@ -355,7 +355,7 @@ static auto ptr_head_sub_creator      "illustrator",      "translator"    ]; -static auto ptr_head_sub_date +static string[] ptr_head_sub_date    = [      "added_to_site",      "available", @@ -365,14 +365,14 @@ static auto ptr_head_sub_date      "published",      "valid"    ]; -static auto ptr_head_sub_identifier +static string[] ptr_head_sub_identifier    = [      "isbn",      "oclc",      "pg"    ];  /+ make +/ -static auto ptr_head_sub_make +static string[] ptr_head_sub_make    = [      "cover_image",      "home_button_image", @@ -387,27 +387,27 @@ static auto ptr_head_sub_make      "texpdf_font",      "css"    ]; -static auto ptr_head_sub_notes +static string[] ptr_head_sub_notes    = [      "abstract",      "description"    ]; -static auto ptr_head_sub_original +static string[] ptr_head_sub_original    = [      "language",      "source",      "title"    ]; -static auto ptr_head_sub_publisher +static string[] ptr_head_sub_publisher    = [ "name" ]; -static auto ptr_head_sub_rights +static string[] ptr_head_sub_rights    = [      "copyright",      "cover",      "illustrations",      "license"    ]; -static auto ptr_head_sub_title +static string[] ptr_head_sub_title    = [      "edition",      "full", @@ -416,7 +416,7 @@ static auto ptr_head_sub_title      "note",      "sub"    ]; -auto config_jsonstr = `{ +JSONValue config_jsonstr = `{  }`;  #+END_SRC @@ -980,7 +980,7 @@ if (_struct_composite.meta.creator_author.empty) {      }    }    string[] authors_arr; -  auto authors_raw_arr +  string[] authors_raw_arr      = _struct_composite.meta.creator_author.split(_rgx.arr_delimiter);    foreach (author_raw; authors_raw_arr) {      authors_arr ~= author_raw.replace(_rgx.raw_author_munge, "$2 $1"); @@ -1069,7 +1069,7 @@ static template configParseTOMLreturnJSON() {    ){      TOMLDocument _doc;      _doc = parseTOML(cast(string)(_text.content)); -    auto _doc_json = toJSON(_doc); +    auto _doc_json = _doc.toJSON;      return _doc_json;    }  } @@ -1091,7 +1091,7 @@ static template configParseTOMLreturnDocReformStruct() {      T       _document_struct    ){      TOMLDocument _doc = parseTOML(cast(string)(_document_struct.content)); -    auto _doc_json = toJSON(_doc); +    auto _doc_json = _doc.toJSON;      _make_and_meta_struct        = contentJSONtoDocReformStruct!()(_make_and_meta_struct, _doc_json, _document_struct.filename); // struct from json      return _make_and_meta_struct; @@ -1132,7 +1132,7 @@ static template docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct() {        }        _doc = parseTOML(cast(string)(header_src));      } -    auto _doc_json = toJSON(_doc); +    auto _doc_json = _doc.toJSON;      auto _header_and_make_and_meta_struct        = contentJSONtoDocReformStruct!()(_make_and_meta_struct, _doc_json, "header");      return _header_and_make_and_meta_struct; diff --git a/org/output_hub.org b/org/output_hub.org index 0d709ab..21f5b9d 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -28,7 +28,7 @@ module doc_reform.output.hub;  template outputHub() {    <<output_imports>>    import std.parallelism; -  void outputHub(D,I)(D doc_abstraction, I doc_matters) { +  void outputHub(D,I)(const D doc_abstraction, I doc_matters) {      mixin DocReformOutputRgxInit;      mixin Msg;      auto msg = Msg!()(doc_matters); diff --git a/org/output_sqlite.org b/org/output_sqlite.org index c9123d3..2dc29f7 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -33,17 +33,17 @@ static auto rgx = Rgx();  long _metadata_tid_lastrowid;  template SQLiteHubBuildTablesAndPopulate() {    void SQLiteHubBuildTablesAndPopulate(D,M)( -    D    doc_abstraction, -    M    doc_matters, +    const D  doc_abstraction, +          M  doc_matters,    ) {      auto pth_sqlite = DocReformPathsSQLite!()(doc_matters.sqlite.filename, doc_matters.output_path);      pth_sqlite.base.mkdirRecurse;      auto db = Database(pth_sqlite.sqlite_file);      template SQLiteDbStatementComposite() {        void SQLiteDbStatementComposite(Db,D,M)( -        Db   db, -        D    doc_abstraction, -        M    doc_matters, +              Db   db, +        const D    doc_abstraction, +              M    doc_matters,        ) {          <<sqlite_db_statement_composite_collection>>          if (!(doc_matters.opt.action.quiet)) { @@ -61,17 +61,17 @@ template SQLiteHubBuildTablesAndPopulate() {  #+BEGIN_SRC d :tangle "../src/doc_reform/output/sqlite.d"  template SQLiteHubDiscreteBuildTablesAndPopulate() {    void SQLiteHubDiscreteBuildTablesAndPopulate(D,M)( -    D    doc_abstraction, -    M    doc_matters, +    const D    doc_abstraction, +          M    doc_matters,    ) {      auto pth_sqlite = DocReformPathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language);      pth_sqlite.base.mkdirRecurse;      auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));      template SQLiteDiscreteDbStatementComposite() {        void SQLiteDiscreteDbStatementComposite(Db,D,M)( -        Db   db, -        D    doc_abstraction, -        M    doc_matters, +              Db   db, +        const D    doc_abstraction, +              M    doc_matters,        ) {          <<sqlite_db_statement_composite_discrete>>          if (!(doc_matters.opt.action.quiet)) { @@ -202,8 +202,8 @@ template SQLiteInsertMetadata() {  #+BEGIN_SRC d :tangle "../src/doc_reform/output/sqlite.d"  template SQLiteInsertDocObjectsLoop() {    string SQLiteInsertDocObjectsLoop(D,M)( -    D    doc_abstraction, -    M    doc_matters, +    const D    doc_abstraction, +          M    doc_matters,    ) {      string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);      auto site_url = DocReformPathsUrl!()(doc_matters); @@ -343,7 +343,7 @@ import  #+name: sanitize_text_for_search  #+BEGIN_SRC d -auto generic_munge_sanitize_text_for_search( +string generic_munge_sanitize_text_for_search(    string _txt,  ) {    string _notes; @@ -392,9 +392,9 @@ light html objects  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d -auto munge_html(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string munge_html(M,O)( +        M    doc_matters, +  const O    obj,  ) {    string _html_special_characters(string _txt){      _txt = _txt @@ -498,7 +498,7 @@ string html_font_face(string _txt){  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d -auto inline_images(M,O)( +string inline_images(M,O)(                 M  doc_matters,    const        O  obj,    string          _txt, @@ -529,7 +529,7 @@ auto inline_images(M,O)(  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d -auto inline_links(M,O)( +string inline_links(M,O)(                 M doc_matters,    const        O obj,    string         _txt, @@ -637,7 +637,7 @@ auto inline_links(M,O)(  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d -auto inline_notes_scroll(M,O)( +string inline_notes_scroll(M,O)(                 M   doc_matters,    const        O   obj,    string           _txt, @@ -713,7 +713,7 @@ auto inline_notes_seg(M,O)(  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string xml_type="seg"; /+ set html document type to be linked to here (seg|scroll) +/ -auto inline_markup(M,O)( +string inline_markup(M,O)(                 M  doc_matters,    const        O  obj,    string          _txt, @@ -730,9 +730,9 @@ auto inline_markup(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_heading(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_heading(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -754,9 +754,9 @@ auto html_heading(M,O)(  ##+name: prepare_objects_html  #+BEGIN_SRC d -auto html_heading(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_heading(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string o;    string _txt = munge_html(doc_matters, obj); @@ -776,9 +776,9 @@ auto html_heading(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_para(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_para(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -803,9 +803,9 @@ auto html_para(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_quote(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_quote(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -826,9 +826,9 @@ auto html_quote(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_group(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_group(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -849,9 +849,9 @@ auto html_group(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_block(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_block(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -871,9 +871,9 @@ auto html_block(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_verse(M,O)( -                 M    doc_matters, -  auto ref const O    obj, +string html_verse(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -892,8 +892,8 @@ auto html_verse(M,O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_code(O)( -  auto ref const O    obj, +string html_code(O)( +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body"); @@ -912,17 +912,17 @@ auto html_code(O)(  #+name: html_objects  #+BEGIN_SRC d -auto html_table(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string html_table(M,O)( +        M   doc_matters, +  const O   obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "table");    auto _tablarize(O)( -    auto ref const O    obj, -    string                     _txt, +    const O         obj, +          string    _txt,    ) {      string[] _table_rows = _txt.split(rgx.table_delimiter_row);      string[] _table_cols; @@ -984,9 +984,9 @@ auto html_table(M,O)(  #+name: sqlite_load_object  #+BEGIN_SRC d -auto sqlite_load_string(M,O)( -  auto ref       M     doc_matters, -  auto ref const O     obj, +string sqlite_load_string(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string o;    return o; @@ -995,9 +995,9 @@ auto sqlite_load_string(M,O)(  #+name: sqlite_load_object  #+BEGIN_SRC d -auto postgresql_load_string(M,O)( -  auto ref       M     doc_matters, -  auto ref const O     obj, +string postgresql_load_string(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string o;    return o; @@ -1007,9 +1007,9 @@ auto postgresql_load_string(M,O)(  #+name: sqlite_load_object  #+BEGIN_SRC d  string sqlite_statement(O)( -  auto ref const O    obj, -  string                     _txt, -  string                     _html, +  const O          obj, +        string     _txt, +        string     _html,  ) {    void _sql_exe(O)(      string                   _sql, @@ -1026,9 +1026,9 @@ string sqlite_statement(O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto heading(M,O)( -                 M    doc_matters, -  auto ref const O      obj, +string[string] heading(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1055,9 +1055,9 @@ auto heading(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto para(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] para(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1084,9 +1084,9 @@ auto para(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto quote(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] quote(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1112,9 +1112,9 @@ auto quote(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto group(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] group(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1141,9 +1141,9 @@ auto group(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto block(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] block(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1170,9 +1170,9 @@ auto block(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto verse(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] verse(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1199,9 +1199,9 @@ auto verse(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto code(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] code(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), @@ -1228,9 +1228,9 @@ auto code(M,O)(  #+name: hub_format_and_sqlite_load_objects  #+BEGIN_SRC d -auto table(M,O)( -                 M    doc_matters, -  auto ref const O     obj, +string[string] table(M,O)( +        M   doc_matters, +  const O   obj,  ) {    string[string] obj_txt = [      "text": generic_munge_sanitize_text_for_search(obj.text), diff --git a/org/output_xmls.org b/org/output_xmls.org index 14d4f24..2eb0e48 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -58,8 +58,8 @@ import  #+name: xhtml_format_objects  #+BEGIN_SRC d  string div_delimit( -  string                     part, -  return ref string          previous_part +             string  part, +  return ref string  previous_part  ){    string delimit = "";    string delimit_ = ""; @@ -163,7 +163,7 @@ string _xhtml_anchor_tags(O)(O obj) {  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto header_metadata(M)( +string header_metadata(M)(    M  doc_matters,  ) {    string _publisher="Publisher"; // TODO @@ -206,7 +206,7 @@ auto header_metadata(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto site_info_button(M)( +string site_info_button(M)(    M  doc_matters,  ) {    string _locations; @@ -236,7 +236,7 @@ auto site_info_button(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_search_form(M)( +string inline_search_form(M)(    M  doc_matters,  ) {    string _action="http://www.sisudoc.org/cgi-bin/search.cgi"; @@ -277,7 +277,7 @@ auto inline_search_form(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto html_head(M)( +string html_head(M)(    M  doc_matters,    string type,  ) { @@ -338,7 +338,7 @@ if (doc_matters.opt.action.workon) {  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto epub3_seg_head(M)( +string epub3_seg_head(M)(    M  doc_matters,  ) {    string html_base = format(q"┃<!DOCTYPE html> @@ -412,7 +412,7 @@ auto epub3_seg_head(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto tail() { +string tail() {    string o;    o = format(q"┃    <a name="bottom" id="bottom"></a> @@ -428,7 +428,7 @@ auto tail() {  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_images(O,M)( +string inline_images(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -462,7 +462,7 @@ auto inline_images(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_links(O,M)( +string inline_links(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -560,7 +560,7 @@ auto inline_links(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_notes_scroll(O,M)( +string inline_notes_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -637,7 +637,7 @@ auto inline_notes_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_markup_scroll(O,M)( +string inline_markup_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -804,7 +804,7 @@ auto nav_pre_next_svg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading(O)( +string heading(O)(    string            _txt,    const        O    obj,    string            _xml_type = "html", @@ -813,7 +813,7 @@ auto heading(O)(    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para");    assert(obj.metainfo.is_a          == "heading"); -  auto tags = _xhtml_anchor_tags(obj); +  string tags = _xhtml_anchor_tags(obj);    string heading_lev_anchor_tag;    string _horizontal_rule = "<hr />";    if ((_xml_type != "html") @@ -874,13 +874,12 @@ auto heading(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading_scroll(O,M)( +string heading_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = heading(_txt, obj);    return o; @@ -915,7 +914,7 @@ auto heading_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para(O)( +string para(O)(    string            _txt,    const        O    obj,  ) { @@ -923,7 +922,7 @@ auto para(O)(    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para");    assert(obj.metainfo.is_a          == "para" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); -  auto tags = _xhtml_anchor_tags(obj); +  string tags = _xhtml_anchor_tags(obj);    _txt = font_face(_txt);    string o;    _txt = (obj.attrib.bullet) ? ("●  " ~ _txt) : _txt; @@ -966,13 +965,12 @@ auto para(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para_scroll(O,M)( +string para_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = para(_txt, obj);    return o; @@ -1007,7 +1005,7 @@ auto para_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote(O)( +string quote(O)(    string          _txt,    const        O  obj,  ) { @@ -1048,13 +1046,12 @@ auto quote(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote_scroll(O,M)( +string quote_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = quote(_txt, obj);    return o; @@ -1089,7 +1086,7 @@ auto quote_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group(O)( +string group(O)(    string            _txt,    const        O    obj,  ) { @@ -1130,14 +1127,13 @@ auto group(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group_scroll(O,M)( +string group_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = group(_txt, obj);    return o; @@ -1172,7 +1168,7 @@ auto group_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block(O)( +string block(O)(    string            _txt,    const        O    obj,  ) { @@ -1209,14 +1205,13 @@ auto block(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block_scroll(O,M)( +string block_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = block(_txt, obj);    return o; @@ -1251,7 +1246,7 @@ auto block_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse(O)( +string verse(O)(    string            _txt,    const        O    obj,  ) { @@ -1288,14 +1283,13 @@ auto verse(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse_scroll(O,M)( +string verse_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html",  ) { -  auto tags = _xhtml_anchor_tags(obj);    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = verse(_txt, obj);    return o; @@ -1329,7 +1323,7 @@ auto verse_seg(O,M)(  #+name: xhtml_format_objects_code  #+BEGIN_SRC d -auto code(O)( +string code(O)(    string            _txt,    const        O    obj,  ) { @@ -1413,7 +1407,7 @@ auto tablarize(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto table(O)( +string table(O)(    string            _txt,    const        O    obj,  ) { @@ -1421,7 +1415,7 @@ auto table(O)(    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "table"); -  auto tags = _xhtml_anchor_tags(obj); +  string tags = _xhtml_anchor_tags(obj);    _txt = font_face(_txt);    auto t = tablarize(_txt, obj);    _txt = t[0]; @@ -2046,7 +2040,7 @@ void seg_write_output(M,D,E)(  #+name: output_html_css  #+BEGIN_SRC d  void css(M)( -  auto ref              M    doc_matters, +  M    doc_matters,  ) {    auto css = DocReformCss();    auto pth_html = DocReformPathsHTML!()(doc_matters.output_path, doc_matters.src.language); @@ -2073,7 +2067,7 @@ void css(M)(  #+name: copy_html_images  #+BEGIN_SRC d  void images_cp(M)( -  auto ref              M    doc_matters, +  M    doc_matters,  ) {    { /+ (copy html images) +/ diff --git a/org/source_files_read.org b/org/source_files_read.org index a7e5b1c..4a02baa 100644 --- a/org/source_files_read.org +++ b/org/source_files_read.org @@ -52,10 +52,10 @@ static template readConfigSite() {      string config_file_str;      string conf_filename = "NONE";      auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); -    auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site; +    string[] possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site;      foreach(conf_fn; [_conf_file_details.config_filename_site_toml]) {        foreach(pth; possible_config_path_locations) { -        auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array; +        char[] conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;          conf_filename = conf_fn;          if (config_file_str.length > 0) {            // conf_filename = conf_fn; @@ -82,7 +82,7 @@ static template readConfigSite() {        string filetype() {          return conf_filename.extension.chompPrefix(".");        } -      auto content() { +      string content() {          return config_file_str;        }      } @@ -101,7 +101,7 @@ static template readConfigDoc() {      string config_file_str;      string conf_filename = "NONE";      auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); -    auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make; +    string[] possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make;      foreach(conf_fn; [_conf_file_details.config_filename_document_toml]) {        foreach(pth; possible_config_path_locations) {          auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array; @@ -151,7 +151,7 @@ static template configReadInSiteTOML() {    final string configReadInSiteTOML(M,E)(M manifest, E env) {      auto conf_file_details = ConfigFilePaths!()(manifest, env);      string conf_toml = conf_file_details.config_filename_site_toml; -    auto possible_config_path_locations = conf_file_details.possible_config_path_locations.config_local_site; +    string[] possible_config_path_locations = conf_file_details.possible_config_path_locations.config_local_site;      string config_file_str;      debug(io) {        writeln("WARNING (io debug) in config filename: ", conf_toml); @@ -188,7 +188,7 @@ static template configReadInDocTOML() {    final string configReadInDocTOML(M,E)(M manifest, E env) {      auto conf_file_details = ConfigFilePaths!()(manifest, env);      string conf_toml = conf_file_details.config_filename_document_toml; -    auto possible_config_path_locations = conf_file_details.possible_config_path_locations.sisu_document_make; +    string[] possible_config_path_locations = conf_file_details.possible_config_path_locations.sisu_document_make;      string config_file_str;      debug(io) {        writeln("WARNING (io debug) in config filename: ", conf_toml); @@ -223,7 +223,7 @@ static template configReadInDocTOML() {  static template configTOML() {    import toml; //    <<imports_std>> -  auto configTOML(string configuration, string conf_toml_filename) { +  TOMLDocument configTOML(string configuration, string conf_toml_filename) {      TOMLDocument _toml_conf;      try {        _toml_conf = parseTOML(configuration); // parseTOML(cast(string)(configuration)); @@ -243,22 +243,22 @@ static template configTOML() {  static template configReadSiteTOML() {    <<imports_std>>    import toml; -  final auto configReadSiteTOML(M,E)(M _manifest, E _env) { -    auto _configuration = configReadInSiteTOML!()(_manifest, _env); +  final TOMLDocument configReadSiteTOML(M,E)(M _manifest, E _env) { +    string _configuration = configReadInSiteTOML!()(_manifest, _env);      auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);      string _conf_toml = _conf_file_details.config_filename_site_toml; -    auto _toml_conf = configTOML!()(_configuration, _conf_toml); +    TOMLDocument _toml_conf = configTOML!()(_configuration, _conf_toml);      return _toml_conf;    }  }  static template configReadDocTOML() {    <<imports_std>>    import toml; -  final auto configReadDocTOML(M,E)(M _manifest, E _env) { -    auto _configuration = configReadInDocTOML!()(_manifest, _env); +  final TOMLDocument configReadDocTOML(M,E)(M _manifest, E _env) { +    string _configuration = configReadInDocTOML!()(_manifest, _env);      auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);      string _conf_toml = _conf_file_details.config_filename_document_toml; -    auto _toml_conf = configTOML!()(_configuration, _conf_toml); +    TOMLDocument _toml_conf = configTOML!()(_configuration, _conf_toml);      return _toml_conf;    }  } @@ -283,7 +283,7 @@ static template DocReformRawMarkupContent() {    string[] _images=[];    auto _extract_images(S)(S content_block) {      string[] images_; -    auto _content_block = content_block.to!string; +    string _content_block = content_block.to!string;      if (auto m = _content_block.matchAll(rgx.image)) {        images_ ~= m.captures[1].to!string;      } @@ -511,7 +511,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray(  #+name: meta_inserts_scan  #+BEGIN_SRC d  char[][] contents_insert; -auto type1 = flags_type_init; +int[string] type1 = flags_type_init;  auto fn_pth_full = fn_src.match(rgx.src_pth_sst_or_ssm);  auto markup_src_file_path = fn_pth_full.captures[1];  #+END_SRC @@ -606,7 +606,7 @@ return t;  #+name: meta_master_doc_scan_for_insert_filenames  #+BEGIN_SRC d  char[][] contents; -auto type = flags_type_init; +int[string] type = flags_type_init;  auto fn_pth_full = fn_src.match(rgx.src_pth_sst_or_ssm);  auto markup_src_file_path = fn_pth_full.captures[1];  char[][] contents_insert;  | 
