diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2024-03-12 22:39:09 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2024-03-12 22:56:34 -0400 | 
| commit | e9e17be24eba558c30fcdc41ea5bb9a1da7fd4e7 (patch) | |
| tree | 1ed3c4b528b0a8e54d0eb9babc391e562578c7b4 /org/ocda_functions.org | |
| parent | nix flake & env upkeep (diff) | |
mark modules as @safe: (& identify what is not)
Diffstat (limited to 'org/ocda_functions.org')
| -rw-r--r-- | org/ocda_functions.org | 149 | 
1 files changed, 75 insertions, 74 deletions
| diff --git a/org/ocda_functions.org b/org/ocda_functions.org index b6240e0..00e391d 100644 --- a/org/ocda_functions.org +++ b/org/ocda_functions.org @@ -30,6 +30,7 @@ Process markup document, create document abstraction.  // abstraction of sisu markup for downstream processing  // metadoc_from_src.d  module doc_reform.meta.metadoc_from_src_functions; +@safe:  template docAbstractionFunctions() {    <<docInitialize>>    <<docAbstractionRelatedFunctions>> @@ -145,11 +146,11 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - emitters -@safe pure struct OCNemitter { +pure struct OCNemitter {    int ocn_digit, ocn_object_number, ocn_on_, ocn_off_, ocn_bkidx, ocn_bkidx_;    string object_identifier;    bool ocn_is_off; -  @safe auto ocn_emitter(int ocn_status_flag) { +  auto ocn_emitter(int ocn_status_flag) {      OCNset ocn;      assert(ocn_status_flag <= eN.ocn.reset);      ocn_object_number              = ocn_bkidx = 0; @@ -193,7 +194,7 @@ auto node_construct = NodeStructureMetadata();    invariant() {    }  } -@safe pure ObjGenericComposite obj_heading_ancestors()( +pure ObjGenericComposite obj_heading_ancestors()(    ObjGenericComposite  obj,    string[]             lv_ancestors_txt,  ) { @@ -234,10 +235,10 @@ auto node_construct = NodeStructureMetadata();    }    return obj;  } -@safe static  OCNset ocn_emit(int ocn_status_flag) { +static  OCNset ocn_emit(int ocn_status_flag) {    return object_citation_number.ocn_emitter(ocn_status_flag);  } -@safe static uint[string] _check_ocn_status_()( +static uint[string] _check_ocn_status_()(    char[]       line,    uint[string] pith,  ) { @@ -312,7 +313,7 @@ auto node_construct = NodeStructureMetadata();    return ret;  }  // ↓ - reset object -@safe static string[string] object_reset()(string[string] an_object) { +static string[string] object_reset()(string[string] an_object) {    an_object.remove("body_nugget");    an_object.remove("substantive");    an_object.remove("is"); @@ -330,7 +331,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - markup text by line -@safe char[] font_faces_line()(char[] textline) { +char[] font_faces_line()(char[] textline) {    static auto rgx = RgxI();    static auto mkup = InlineMarkup();    if (textline.match(rgx.inline_faces_line)) { @@ -350,7 +351,7 @@ auto node_construct = NodeStructureMetadata();    }    return textline;  } -@safe auto inline_markup_faces(L)(L line) { +auto inline_markup_faces(L)(L line) {    static auto rgx = RgxI();    static auto mkup = InlineMarkup();    line = replaceAll!(m => mkup.quote_o ~ m[1] ~ mkup.quote_c)(line, rgx.within_quotes); @@ -361,7 +362,7 @@ auto node_construct = NodeStructureMetadata();    }    return line;  } -@safe static string links_and_images()(string obj_txt) { +static string links_and_images()(string obj_txt) {    static auto rgx = RgxI();    static auto mkup = InlineMarkup();    if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -401,7 +402,7 @@ auto node_construct = NodeStructureMetadata();    }    return obj_txt;  } -@safe char[] _doc_header_and_make_substitutions_(CMM)( +char[] _doc_header_and_make_substitutions_(CMM)(    char[]  line,    CMM     conf_make_meta,  ) { @@ -416,7 +417,7 @@ auto node_construct = NodeStructureMetadata();    }    return line;  } -@safe char[] _doc_header_and_make_substitutions_fontface_(CMM)( +char[] _doc_header_and_make_substitutions_fontface_(CMM)(    char[]  line,    CMM     conf_make_meta,  ) { @@ -450,7 +451,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - para -@safe string[string][string] inline_para_link_anchor()( +string[string][string] inline_para_link_anchor()(    string[string]          an_object,    string[string]          tag_in_seg,    string[string][string]  tag_assoc @@ -466,7 +467,7 @@ auto node_construct = NodeStructureMetadata();    }    return tag_assoc;  } -@safe ST_flow_para_match flow_para_match_()( +ST_flow_para_match flow_para_match_()(    char[]         line,    string[string]  an_object,    string          an_object_key, @@ -529,7 +530,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - heading -@safe ST_flow_heading_found flow_heading_found_()( +ST_flow_heading_found flow_heading_found_()(    char[]                line,    string[string]        heading_match_str,    string[]              _make_unmarked_headings, @@ -614,7 +615,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_flow_heading_make_set flow_heading_make_set_()( +ST_flow_heading_make_set flow_heading_make_set_()(               char[]                line,               int[string]           line_occur,    return ref Regex!(char)[string]  heading_match_rgx, @@ -662,7 +663,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe auto flow_heading_matched_(CMM)( +auto flow_heading_matched_(CMM)(    char[]          line,    string[string]  an_object,    int[string]     line_occur, @@ -860,7 +861,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - table -@safe ObjGenericComposite flow_table_instructions(H)( +ObjGenericComposite flow_table_instructions(H)(    ObjGenericComposite  table_object,    H                    table_head,  ) { @@ -885,7 +886,7 @@ auto node_construct = NodeStructureMetadata();    }    return table_object;  } -@safe ST_flow_table_array_munge flow_table_array_munge()( +ST_flow_table_array_munge flow_table_array_munge()(    ObjGenericComposite  table_object,    string[][]           table_array,  ) { @@ -1428,7 +1429,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - images -@safe string[] extract_images()(string content_block) { +string[] extract_images()(string content_block) {    static auto rgx = RgxI();    string[] images_;    if (auto m = content_block.matchAll(rgx.image)) { @@ -1483,7 +1484,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - links -@safe auto _links(O)(O obj) { +auto _links(O)(O obj) {    static auto rgx = RgxI();    if (auto m = obj.text.match(rgx.inline_link_stow_uri)) {      debug(links) { @@ -1512,7 +1513,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - text by line (blocks etc.) -@safe ST_txt_by_line_block_start txt_by_line_block_start()( +ST_txt_by_line_block_start txt_by_line_block_start()(    char[]         line,    uint[string]   pith,    uint[string]   dochas, @@ -1646,7 +1647,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_txt_by_line_block_generic txt_by_line_block_group()( +ST_txt_by_line_block_generic txt_by_line_block_group()(    char[]          line,    string[string]  an_object,    uint[string]    pith, @@ -1684,7 +1685,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_txt_by_line_block_generic txt_by_line_block_block()( +ST_txt_by_line_block_generic txt_by_line_block_block()(    char[]          line,    string[string]  an_object,    uint[string]    pith, @@ -1722,7 +1723,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_txt_by_line_block_poem txt_by_line_block_poem(CMM)( +ST_txt_by_line_block_poem txt_by_line_block_poem(CMM)(    char[]          line,    string[string]  an_object,    uint[string]    pith, @@ -1924,7 +1925,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_txt_by_line_block_generic txt_by_line_block_code()( +ST_txt_by_line_block_generic txt_by_line_block_code()(    char[]          line,    string[string]  an_object,    uint[string]    pith, @@ -2037,7 +2038,7 @@ auto node_construct = NodeStructureMetadata();    }    return ret;  } -@safe ST_txt_by_line_block_generic txt_by_line_block_quote()( +ST_txt_by_line_block_generic txt_by_line_block_quote()(    char[]          line,    string[string]  an_object,    uint[string]    pith, @@ -2220,7 +2221,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - object set -@safe ObjGenericComposite set_object_heading()( +ObjGenericComposite set_object_heading()(    string level,    string part,    string section, @@ -2251,7 +2252,7 @@ auto node_construct = NodeStructureMetadata();    }    return comp_obj;  } -@safe ObjGenericComposite set_object_generic()( +ObjGenericComposite set_object_generic()(    string part,    string section,    string type, @@ -2280,7 +2281,7 @@ auto node_construct = NodeStructureMetadata();  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - object inline munge -@safe static struct ObjInlineMarkupMunge { +static struct ObjInlineMarkupMunge {    string[string] obj_txt;    int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus;    string asterisks_, plus_; @@ -2294,7 +2295,7 @@ auto node_construct = NodeStructureMetadata();      n_foot_sp_asterisk              = 0;      n_foot_sp_plus                  = 0;    } -  @safe static auto images()(string obj_txt_in) { +  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 @@ -2318,7 +2319,7 @@ auto node_construct = NodeStructureMetadata();      }      return obj_txt_in;    } -  @safe ST_txtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { +  ST_txtPlusHasFootnotes 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; @@ -2390,7 +2391,7 @@ auto node_construct = NodeStructureMetadata();      }      return ret;    } -  @safe private ST_txtPlusHasFootnotesUrlsImages object_notes_and_links_()( +  private ST_txtPlusHasFootnotesUrlsImages object_notes_and_links_()(      string obj_txt_in,      bool reset_note_numbers = false    ) { @@ -2445,7 +2446,7 @@ auto node_construct = NodeStructureMetadata();      }      return ret;    } -  @safe private ST_txtPlusHasFootnotesUrlsImages object_only_()( +  private ST_txtPlusHasFootnotesUrlsImages object_only_()(      string obj_txt_in,      bool reset_note_numbers = false    ) { @@ -2466,7 +2467,7 @@ auto node_construct = NodeStructureMetadata();    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_heading()( +  ST_txtPlusHasFootnotesUrlsImages munge_heading()(      string obj_txt_in,      bool reset_note_numbers = false    ) { @@ -2481,7 +2482,7 @@ auto node_construct = NodeStructureMetadata();    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_para()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_para()(string obj_txt_in) {      obj_txt["munge"] = (obj_txt_in)        .replaceFirst(rgx.para_attribs, "")        .replaceFirst(rgx.object_number_off_all, "") @@ -2493,44 +2494,44 @@ auto node_construct = NodeStructureMetadata();      }      return ret;    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_quote()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_quote()(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in.split("\n\n").join(" \\\\\n \\\\\n"));      return ret;    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_group(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_group(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in.split("\n\n").join("\n" ~ mkup.br_line_spaced ~ "\n"));      return ret;    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_block()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_block()(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in);      return ret;    }    invariant() {    } -  @safe auto munge_verse()(string obj_txt_in) { +  auto munge_verse()(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in);      return ret;    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_code()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_code()(string obj_txt_in) {      obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp);      ST_txtPlusHasFootnotesUrlsImages ret = object_only_(obj_txt_in);      return ret;    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_table()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_table()(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in);      return ret;    }    invariant() {    } -  @safe ST_txtPlusHasFootnotesUrlsImages munge_comment()(string obj_txt_in) { +  ST_txtPlusHasFootnotesUrlsImages munge_comment()(string obj_txt_in) {      ST_txtPlusHasFootnotesUrlsImages ret = object_only_(obj_txt_in);      return ret;    } @@ -2551,7 +2552,7 @@ static struct ObjInlineMarkup {    static auto munge = ObjInlineMarkupMunge();    string[string] obj_txt;    string anchor_tag = ""; -  @safe ST_txtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( +  ST_txtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)(      string[string]   obj_,      string           obj_key_,      CMM              conf_make_meta, @@ -2640,14 +2641,14 @@ static struct ObjInlineMarkup {    }    invariant() {    } -  @safe auto _clean_heading_toc_()( +  auto _clean_heading_toc_()(      char[] heading_toc_,    ) {     auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading);     heading_toc_ = (m.post).replaceAll(rgx.inline_notes_curly_gen, "");     return heading_toc_;    }; -  @safe ST_flow_table_of_contents_gather_headings flow_table_of_contents_gather_headings(CMM)( // +  ST_flow_table_of_contents_gather_headings flow_table_of_contents_gather_headings(CMM)( //      string[string]         obj_,      CMM                    conf_make_meta,      string[string]         tag_in_seg, @@ -2738,7 +2739,7 @@ private:    static string heading_number_auto_composite = "";    static string heading_number_auto_composite_segname = "";    static bool[] auto_heading_numbering = [ true, true, true, true]; -  @safe static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( +  static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)(      string           munge_,      string[string]   obj_,      CMM              conf_make_meta, @@ -2880,7 +2881,7 @@ private:      return munge_;    }    static int heading_num_lev1 = 0; -  @safe static string _make_segment_anchor_tags_if_none_provided()( +  static string _make_segment_anchor_tags_if_none_provided()(      string munge_,      string lev_,      bool   _new_doc @@ -2925,7 +2926,7 @@ private:  // ↓ - object attributes  struct ObjAttributes {    string[string] _obj_attrib; -  @safe string obj_attributes()( +  string obj_attributes()(      string              obj_is_,      string              obj_raw,      ObjGenericComposite comp_obj_, @@ -2988,7 +2989,7 @@ struct ObjAttributes {    }    private:    string _obj_attributes; -  @safe string txt_para_and_blocks()(string obj_txt_in) { +  string txt_para_and_blocks()(string obj_txt_in) {      if (obj_txt_in.matchFirst(rgx.para_bullet)) {        _obj_attributes =" \"bullet\": \"true\","        ~ " \"indent_hang\": 0," @@ -3012,7 +3013,7 @@ struct ObjAttributes {      }      return _obj_attributes;    } -  @safe string txt_heading()(string obj_txt_in) { +  string txt_heading()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"para\","      ~ " \"is\": \"heading\""; @@ -3020,7 +3021,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_para()(string obj_txt_in) { +  string txt_para()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"para\","      ~ " \"is\": \"para\""; @@ -3028,7 +3029,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_quote()(string obj_txt_in) { +  string txt_quote()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"quote\""; @@ -3036,7 +3037,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_group()(string obj_txt_in) { +  string txt_group()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"group\""; @@ -3044,7 +3045,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_block()(string obj_txt_in) { +  string txt_block()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"block\""; @@ -3052,7 +3053,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_verse()(string obj_txt_in) { +  string txt_verse()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"verse\""; @@ -3060,7 +3061,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_code()(string obj_txt_in) { +  string txt_code()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"code\""; @@ -3068,7 +3069,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_table()(string obj_txt_in) { +  string txt_table()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"table\""; @@ -3076,7 +3077,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string txt_comment()(string obj_txt_in) { +  string txt_comment()(string obj_txt_in) {      _obj_attributes = " \"use\": \"comment\","      ~ " \"of\": \"comment\","      ~ " \"is\": \"comment\""; @@ -3084,7 +3085,7 @@ struct ObjAttributes {    }    invariant() {    } -  @safe string _set_additional_values_parse_as_json()( +  string _set_additional_values_parse_as_json()(      string              _obj_attrib,      string              obj_is_,      ObjGenericComposite comp_obj_, @@ -3115,7 +3116,7 @@ struct ObjAttributes {  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - object tags -@safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()( +pure ObjGenericComposite obj_dom_structure_set_markup_tags()(    ObjGenericComposite  obj,    int[]                dom,    int                  lev @@ -3157,7 +3158,7 @@ struct ObjAttributes {    obj.metainfo.dom_structure_markedup_tags_status = dom.dup;    return obj;  } -@safe pure ObjGenericComposite obj_dom_set_collapsed_tags()( +pure ObjGenericComposite obj_dom_set_collapsed_tags()(    ObjGenericComposite  obj,    int[]                dom,    int                  lev @@ -3323,7 +3324,7 @@ struct NotesSection {    int previous_count;    int mkn;    static auto rgx = RgxI(); -  @safe private auto gather_notes_for_endnote_section( +  private auto gather_notes_for_endnote_section(      ObjGenericComposite[] contents_am,      string[string]        tag_in_seg,      int                   cntr, @@ -3401,7 +3402,7 @@ struct NotesSection {      }      return object_notes;    } -  @safe private auto gathered_notes() { +  private auto gathered_notes() {      string[][string] endnotes_;      if (object_notes.length > 1) {        endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; @@ -3412,7 +3413,7 @@ struct NotesSection {      }      return endnotes_;    } -  @safe private ST_endnotes backmatter_endnote_objects(O)( +  private ST_endnotes backmatter_endnote_objects(O)(      OCNset         obj_cite_digits,      O              opt_action,    ) { @@ -3552,7 +3553,7 @@ struct BookIndexNuggetHash {    string[] object_numbers;    string[][string][string] bi_hash_nugget;    string[] bi_main_terms_split_arr; -  @safe string[][string][string] bookindex_nugget_hash(S)( +  string[][string][string] bookindex_nugget_hash(S)(      string bookindex_section,      OCNset obj_cite_digits,      S      tag_in_seg, @@ -3620,7 +3621,7 @@ struct BookIndexNuggetHash {  }  struct BookIndexReportIndent {    int mkn, skn; -  @safe void bookindex_report_indented()( +  void bookindex_report_indented()(      string[][string][string] bookindex_unordered_hashes    ) {      auto mainkeys @@ -3646,7 +3647,7 @@ struct BookIndexReportSection {    int  mkn, skn;    static auto rgx = RgxI();    static auto munge = ObjInlineMarkupMunge(); -  @safe void bookindex_write_section()( +  void bookindex_write_section()(      string[][string][string] bookindex_unordered_hashes    ) {      auto mainkeys = @@ -4317,7 +4318,7 @@ struct NodeStructureMetadata {    int obj_cite_digit;    int[string] p_; // p_ parent_    static auto rgx = RgxI(); -  @safe ObjGenericComposite node_location_emitter(La,Ta)( +  ObjGenericComposite node_location_emitter(La,Ta)(      string         lev_markup_number,      string[string] tag_in_seg,      La             lev_anchor_tag, @@ -4366,7 +4367,7 @@ struct NodeStructureMetadata {    }    invariant() {    } -  @safe ObjGenericComposite node_emitter_heading(O,TaL,TA,SOAT)( +  ObjGenericComposite node_emitter_heading(O,TaL,TA,SOAT)(      O              an_object,      string[string] tag_in_seg,      TaL            lev_anchor_tag, @@ -4565,7 +4566,7 @@ struct NodeStructureMetadata {    ObjGenericComposite[] the_document_bookindex_section,    ObjGenericComposite[] the_document_blurb_section,  ) { -  @safe int[] _get_ancestors_markup(ObjGenericComposite obj, int[] _ancestors_markup) { +  int[] _get_ancestors_markup(ObjGenericComposite obj, int[] _ancestors_markup) {      if (obj.metainfo.is_a == "heading") {        debug(dom) { writeln(obj.text); }        if (obj.metainfo.heading_lev_markup == 1) { @@ -4648,7 +4649,7 @@ struct NodeStructureMetadata {      debug(ancestor_markup) { writeln("marked up: ", _ancestors_markup); }      return _ancestors_markup;    } -  @safe int[] _get_ancestors_collapsed(ObjGenericComposite obj, int[] _ancestors_collapsed) { +  int[] _get_ancestors_collapsed(ObjGenericComposite obj, int[] _ancestors_collapsed) {      if (obj.metainfo.is_a == "heading") {        if (obj.metainfo.heading_lev_collapsed == 1) {          _ancestors_collapsed = [ @@ -4771,7 +4772,7 @@ struct NodeStructureMetadata {  #+BEGIN_SRC d  // ↓ - descendants  // descendants -@safe auto after_doc_get_descendants()(ObjGenericComposite[] document_sections) { +auto after_doc_get_descendants()(ObjGenericComposite[] document_sections) {    int[string] _heading_ocn_descendants;    string[] _ocn_open_key = ["","","","","","","",""];    auto _doc_sect_length = document_sections.length - 1; @@ -4827,7 +4828,7 @@ struct NodeStructureMetadata {  #+HEADER: :noweb yes  #+BEGIN_SRC d  // ↓ - assertions -@safe pure void assertions_doc_structure()( +pure void assertions_doc_structure()(    string[string]  an_object,    string          an_object_key,    int[string]     lv @@ -5405,7 +5406,7 @@ struct NodeStructureMetadata {  #+NAME: docSectKeysSeq  #+HEADER: :noweb yes  #+BEGIN_SRC d -@safe auto docSectKeysSeq(string[][string] document_section_keys_sequenced) { +auto docSectKeysSeq(string[][string] document_section_keys_sequenced) {    struct doc_sect_keys_seq {      string[] scroll() {        return document_section_keys_sequenced["scroll"]; | 
