diff options
| author | Ralph Amissah <ralph@amissah.com> | 2017-03-07 09:11:09 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 | 
| commit | 5a4df097b2976c24c449c56cf035995edfb1261e (patch) | |
| tree | 9112c6f32f1b9a8d7cdc7849754d6b8f602de0c5 /org | |
| parent | org files minor touches (diff) | |
0.13.6 dlang function calls, syntax (ufcs related), logic should be retained
Diffstat (limited to 'org')
| -rw-r--r-- | org/ao_conf_make_meta.org | 54 | ||||
| -rw-r--r-- | org/ao_debugs.org | 20 | ||||
| -rw-r--r-- | org/ao_doc_abstraction.org | 576 | ||||
| -rw-r--r-- | org/ao_read_source_files.org | 49 | ||||
| -rw-r--r-- | org/output.org | 51 | ||||
| -rw-r--r-- | org/sdp.org | 10 | 
6 files changed, 374 insertions, 386 deletions
diff --git a/org/ao_conf_make_meta.org b/org/ao_conf_make_meta.org index 398b369..30e16a0 100644 --- a/org/ao_conf_make_meta.org +++ b/org/ao_conf_make_meta.org @@ -54,7 +54,7 @@ template SiSUheaderExtractHub() {      }      auto head_native = HeaderDocMetadataAndMakeNativeToAA();      auto head_sdlang = HeaderExtractSDL(); -    auto header_make_and_meta_tuple = (match(header_src, rgx.native_header_meta_title)) +    auto header_make_and_meta_tuple = (header_src.match(rgx.native_header_meta_title))      ? (head_native.headerNativeToAA(header_src))      : (head_sdlang.headerSDLangToAA(header_src, conf_doc_make_aa));      static assert(!isTypeTuple!(header_make_and_meta_tuple)); @@ -320,7 +320,7 @@ private auto headerSDLangGet(Hs)(Hs src_header) {      static assert(is(typeof(src_header) == char[]));    }    char[][] source_header_arr = -    split(cast(char[]) src_header, rgx.newline_eol_delimiter); +    (cast(char[]) src_header).split(rgx.newline_eol_delimiter);    char[] header_clean;    // TODO    foreach(header_line; source_header_arr) { @@ -373,9 +373,9 @@ private auto headerSDLangToAAmake(Tag,Ma)(Tag header_sdlang, Ma dochead_make) {    }    dochead_meta["creator"]["author_raw"] = dochead_meta["creator"]["author"];    string[] authors_arr; -  auto authors_raw_arr = split(dochead_meta["creator"]["author"], rgx.arr_delimiter); +  auto authors_raw_arr = dochead_meta["creator"]["author"].split(rgx.arr_delimiter);    foreach (author_raw; authors_raw_arr) { -    authors_arr ~= (author_raw).replace(rgx.raw_author_munge, "$2 $1"); +    authors_arr ~= author_raw.replace(rgx.raw_author_munge, "$2 $1");    }    dochead_meta["creator"]["author"] = join(authors_arr, ", ").chomp.chomp;    auto t = tuple(dochead_make, dochead_meta); @@ -454,15 +454,13 @@ body {      destroy(dochead_meta);      destroy(dochead_make);    } -  if (auto t = match(header, rgx.native_header_main)) { -    char[][] header_obj_spl = split( -      cast(char[]) header, -      rgx.line_delimiter_ws_strip -    ); +  if (auto t = header.match(rgx.native_header_main)) { +    char[][] header_obj_spl = +      (cast(char[]) header).split(rgx.line_delimiter_ws_strip);      auto hm = to!string(t.captures[1]); -    if (match(hm, rgx.main_headers)) { +    if (hm.match(rgx.main_headers)) {        foreach (line; header_obj_spl) { -        if (auto m = match(line, rgx.native_header_main)) { +        if (auto m = line.match(rgx.native_header_main)) {            if (!empty(m.captures[2])) {              if (hm == "creator") {                dochead_meta[hm]["author"] = @@ -482,7 +480,7 @@ body {              && (dochead_make[hm])) {                switch (hm) {                case "make": -                if (match(hs, rgx.native_subhead_make)) { +                if (hs.match(rgx.native_subhead_make)) {                    if (dochead_make[hm][hs]) {                      dochead_make[hm][hs] = to!string(s.captures[2]);                    } @@ -498,7 +496,7 @@ body {              } else if (dochead_meta[hm]) {                switch (hm) {                case "creator": -                if (match(hs, rgx.native_subhead_creator)) { +                if (hs.match(rgx.native_subhead_creator)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -510,7 +508,7 @@ body {                  }                  break;                case "title": -                if (match(hs, rgx.native_subhead_title)) { +                if (hs.match(rgx.native_subhead_title)) {                    if ((hs == "subtitle")                    && (dochead_meta[hm]["sub"])) {                      dochead_meta[hm]["sub"] = @@ -526,7 +524,7 @@ body {                  }                  break;                case "rights": -                if (match(hs, rgx.native_subhead_rights)) { +                if (hs.match(rgx.native_subhead_rights)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -538,7 +536,7 @@ body {                  }                  break;                case "date": -                if (match(hs, rgx.native_subhead_date)) { +                if (hs.match(rgx.native_subhead_date)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -550,7 +548,7 @@ body {                  }                  break;                case "original": -                if (match(hs, rgx.native_subhead_original)) { +                if (hs.match(rgx.native_subhead_original)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -562,7 +560,7 @@ body {                  }                  break;                case "classify": -                if (match(hs, rgx.native_subhead_classify)) { +                if (hs.match(rgx.native_subhead_classify)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -574,7 +572,7 @@ body {                  }                  break;                case "identifier": -                if (match(hs, rgx.native_subhead_identifier)) { +                if (hs.match(rgx.native_subhead_identifier)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -586,7 +584,7 @@ body {                  }                  break;                case "notes": -                if (match(hs, rgx.native_subhead_notes)) { +                if (hs.match(rgx.native_subhead_notes)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -598,7 +596,7 @@ body {                  }                  break;                case "publisher": -                if (match(hs, rgx.native_subhead_publisher)) { +                if (hs.match(rgx.native_subhead_publisher)) {                    if (dochead_meta[hm][hs]) {                      dochead_meta[hm][hs] =                        to!string(s.captures[2]); @@ -646,14 +644,14 @@ private auto native_header_extract(L,Lo,O,T)(      static assert(is(typeof(an_object)  == string[string]));      static assert(is(typeof(type)       == int[string]));    } -  if (matchFirst(line, rgx.native_header_make)) {   /+ matched header_make +/ +  if (line.matchFirst(rgx.native_header_make)) {   /+ matched header_make +/      debug(header1) { /+ writeln(line); +/ }      type["header"]      = State.on;      type["header_make"] = State.on;      type["header_meta"] = State.off;      ++line_occur["header_make"];      an_object["body_nugget"] ~= line ~= "\n"; -  } else if (matchFirst(line, rgx.native_header)) { /+ matched header_metadata +/ +  } else if (line.matchFirst(rgx.native_header)) { /+ matched header_metadata +/      /+ (generic header match and not previously caught by header_make) +/      debug(header1) { /+ writeln(line); +/ }      type["header"]      = State.on; @@ -663,14 +661,14 @@ private auto native_header_extract(L,Lo,O,T)(      an_object["body_nugget"] ~= line ~= "\n";    } else if (type["header_make"] == State.on    && (line_occur["header_make"] > State.off)) {     /+ header_make flag set +/ -    if (matchFirst(line, rgx.native_header_sub)) {  /+ sub-header +/ +    if (line.matchFirst(rgx.native_header_sub)) {  /+ sub-header +/        debug(header1) { /+ writeln(line); +/ }        ++line_occur["header_make"];        an_object["body_nugget"] ~= line ~= "\n";      }    } else if (type["header_meta"] == State.on    && (line_occur["header_meta"] > State.off)) {     /+ header_metadata flag set +/ -    if (matchFirst(line, rgx.native_header_sub)) {  /+ sub-header +/ +    if (line.matchFirst(rgx.native_header_sub)) {  /+ sub-header +/        debug(header1) { /+ writeln(line); +/ }        ++line_occur["header_meta"];        an_object["body_nugget"] ~= line ~= "\n"; @@ -723,14 +721,14 @@ private auto headerNativeToAA(Hn)(Hn src_header) {    auto dochead_meta = meta_aa;    auto set_header = HeaderDocMetadataAndMakeNativeToAA();    char[][] source_header_arr = -    split(cast(char[]) src_header, rgx.newline_eol_delimiter); +    (cast(char[]) src_header).split(rgx.newline_eol_delimiter);    foreach(header_line; source_header_arr) { -    if (auto m = matchFirst(header_line, rgx.comment)) { +    if (auto m = header_line.matchFirst(rgx.comment)) {        /+ matched comment +/        debug(comment) {        }        header_reset_states_common(line_occur, an_object, type); -    } else if ((matchFirst(header_line, rgx.native_header)) +    } else if ((header_line.matchFirst(rgx.native_header))      || (type["header_make"] == State.on      && (line_occur["header_make"] > State.off))      || (type["header_meta"] == State.on diff --git a/org/ao_debugs.org b/org/ao_debugs.org index 16efa26..c35ff2e 100644 --- a/org/ao_debugs.org +++ b/org/ao_debugs.org @@ -499,7 +499,7 @@ debug(headermakejson) {      switch (main_header) {      case "make":        foreach (sub_header; ptr_head_sub_make) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -531,7 +531,7 @@ debug(headermetadatajson) {      switch (main_header) {      case "creator":        foreach (sub_header; ptr_head_sub_creator) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -543,7 +543,7 @@ debug(headermetadatajson) {        break;      case "title":        foreach (sub_header; ptr_head_sub_title) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -555,7 +555,7 @@ debug(headermetadatajson) {        break;      case "rights":        foreach (sub_header; ptr_head_sub_rights) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -567,7 +567,7 @@ debug(headermetadatajson) {        break;      case "date":        foreach (sub_header; ptr_head_sub_date) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -579,7 +579,7 @@ debug(headermetadatajson) {        break;      case "original":        foreach (sub_header; ptr_head_sub_original) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -591,7 +591,7 @@ debug(headermetadatajson) {        break;      case "classify":        foreach (sub_header; ptr_head_sub_classify) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -603,7 +603,7 @@ debug(headermetadatajson) {        break;      case "identifier":        foreach (sub_header; ptr_head_sub_identifier) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -615,7 +615,7 @@ debug(headermetadatajson) {        break;      case "notes":        foreach (sub_header; ptr_head_sub_notes) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, @@ -627,7 +627,7 @@ debug(headermetadatajson) {        break;      case "publisher":        foreach (sub_header; ptr_head_sub_publisher) { -        if (to!string(doc_matters.dochead_meta[main_header][sub_header]).length > 2) { +        if (doc_matters.dochead_meta[main_header][sub_header].to!string.length > 2) {            writefln(              "%s:%s: %s",              main_header, diff --git a/org/ao_doc_abstraction.org b/org/ao_doc_abstraction.org index 2188e94..aac99f7 100644 --- a/org/ao_doc_abstraction.org +++ b/org/ao_doc_abstraction.org @@ -136,7 +136,7 @@ template SiSUdocAbstraction() {          } else {            /+ not within a block group +/            <<abs_in_loop_body_open_block_obj_assert>> -          if (matchFirst(line, rgx.block_open)) { +          if (line.matchFirst(rgx.block_open)) {              <<abs_in_loop_body_open_block_obj>>            } else if (!line.empty) {              /+ line not empty +/ @@ -319,47 +319,47 @@ void heading_ancestors(O)(  ) {    switch (obj.heading_lev_markup) {    case 0: -    lv_ancestors[0] = to!string(obj.text); +    lv_ancestors[0] = obj.text.to!string;      foreach(k; 1..8) {        lv_ancestors[k] = "";      }      goto default;    case 1: -    lv_ancestors[1] = to!string(obj.text); +    lv_ancestors[1] = obj.text.to!string;      foreach(k; 2..8) {        lv_ancestors[k] = "";      }      goto default;    case 2: -    lv_ancestors[2] = to!string(obj.text); +    lv_ancestors[2] = obj.text.to!string;      foreach(k; 3..8) {        lv_ancestors[k] = "";      }      goto default;    case 3: -    lv_ancestors[3] = to!string(obj.text); +    lv_ancestors[3] = obj.text.to!string;      foreach(k; 4..8) {        lv_ancestors[k] = "";      }      goto default;    case 4: -    lv_ancestors[4] = to!string(obj.text); +    lv_ancestors[4] = obj.text.to!string;      foreach(k; 5..8) {        lv_ancestors[k] = "";      }      goto default;    case 5: -    lv_ancestors[5] = to!string(obj.text); +    lv_ancestors[5] = obj.text.to!string;      foreach(k; 6..8) {        lv_ancestors[k] = "";      }      goto default;    case 6: -    lv_ancestors[6] = to!string(obj.text); +    lv_ancestors[6] = obj.text.to!string;      lv_ancestors[7] = "";      goto default;    case 7: -    lv_ancestors[7] = to!string(obj.text); +    lv_ancestors[7] = obj.text.to!string;      goto default;    default:      obj.heading_ancestors_text = lv_ancestors.dup; @@ -647,11 +647,11 @@ continue;  #+name: abs_in_loop_body_non_code_obj  #+BEGIN_SRC d -if ((matchFirst(line, rgx.heading_biblio) +if (line.matchFirst(rgx.heading_biblio)  || (type["biblio_section"] == State.on -&& (!matchFirst(line, rgx.heading_blurb_glossary)))) -&& (!matchFirst(line, rgx.heading)) -&& (!matchFirst(line, rgx.comment))) { +&& (!(line.matchFirst(rgx.heading_blurb_glossary))) +&& (!(line.matchFirst(rgx.heading))) +&& (!(line.matchFirst(rgx.comment))))) {    /+ within section (block object): biblio +/    type["glossary_section"] = State.off;    type["biblio_section"] = State.on; @@ -677,11 +677,11 @@ if there is a glossary section you need to:  #+name: abs_in_loop_body_non_code_obj  #+BEGIN_SRC d -} else if ((matchFirst(line, rgx.heading_glossary) +} else if (line.matchFirst(rgx.heading_glossary)  || (type["glossary_section"] == State.on -&& (!matchFirst(line, rgx.heading_biblio_blurb)))) -&& (!matchFirst(line, rgx.heading)) -&& (!matchFirst(line, rgx.comment))) { +&& (!(line.matchFirst(rgx.heading_biblio_blurb))) +&& (!(line.matchFirst(rgx.heading))) +&& (!(line.matchFirst(rgx.comment))))) {    /+ within section (block object): glossary +/    debug(glossary) {      writeln(__LINE__); @@ -700,7 +700,7 @@ if there is a glossary section you need to:      type["para"] = State.on;      line_occur["para"] = State.off;      an_object_key="glossary_nugget"; // -    if (matchFirst(line, rgx.heading_glossary)) { +    if (line.matchFirst(rgx.heading_glossary)) {        comp_obj_heading_                       = comp_obj_heading_.init;        comp_obj_heading_.use                   = "backmatter";        comp_obj_heading_.is_of                 = "para"; @@ -735,7 +735,7 @@ if there is a glossary section you need to:        comp_obj_para.use                   = "backmatter";        comp_obj_para.is_of                 = "para";        comp_obj_para.is_a                  = "glossary"; -      comp_obj_para.text                  = to!string(line).strip; +      comp_obj_para.text                  = line.to!string.strip;        comp_obj_para.ocn                   = 0;        comp_obj_para.obj_cite_number       = "";        comp_obj_para.indent_hang           = indent["hang_position"]; @@ -759,11 +759,11 @@ if there is a blurb section you need to:  #+name: abs_in_loop_body_non_code_obj  #+BEGIN_SRC d -} else if ((matchFirst(line, rgx.heading_blurb) +} else if (line.matchFirst(rgx.heading_blurb)  || (type["blurb_section"] == State.on -&& (!matchFirst(line, rgx.heading_biblio_glossary)))) -&& (!matchFirst(line, rgx.heading)) -&& (!matchFirst(line, rgx.comment))) { +&& (!(line.matchFirst(rgx.heading_biblio_glossary))) +&& (!(line.matchFirst(rgx.heading))) +&& (!(line.matchFirst(rgx.comment))))) {    /+ within section (block object): blurb +/    debug(blurb) {      writeln(__LINE__); @@ -781,7 +781,7 @@ if there is a blurb section you need to:      type["para"] = State.on;      line_occur["para"] = State.off;      an_object_key="blurb_nugget"; -    if (matchFirst(line, rgx.heading_blurb)) { +    if (line.matchFirst(rgx.heading_blurb)) {        comp_obj_heading_                       = comp_obj_heading_.init;        comp_obj_heading_.use                   = "backmatter";        comp_obj_heading_.is_of                 = "para"; @@ -810,19 +810,19 @@ if there is a blurb section you need to:        comp_obj_heading_.parent_lev_markup     = 0;        comp_obj_heading_.anchor_tags           = ["blurb"];        the_blurb_section                       ~= comp_obj_heading_; -    } else if ((matchFirst(line, rgx.heading)) +    } else if (line.matchFirst(rgx.heading)      && (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) {        comp_obj_heading_                       = comp_obj_heading_.init;        comp_obj_heading_.use                   = "backmatter";        comp_obj_heading_.is_of                 = "para";        comp_obj_heading_.is_a                  = "heading"; -      comp_obj_heading_.text                  = to!string(line); +      comp_obj_heading_.text                  = line.to!string;        comp_obj_heading_.ocn                   = 0;        comp_obj_heading_.obj_cite_number       = "";        comp_obj_heading_.segment_anchor_tag    = "blurb"; -      comp_obj_heading_.marked_up_level       = to!string(an_object["lev"]); -      comp_obj_heading_.heading_lev_markup    = to!int(an_object["lev_markup_number"]);    // make int, remove need to conv -      comp_obj_heading_.heading_lev_collapsed = to!int(an_object["lev_collapsed_number"]); // make int, remove need to conv +      comp_obj_heading_.marked_up_level       = an_object["lev"].to!string; +      comp_obj_heading_.heading_lev_markup    = an_object["lev_markup_number"].to!int;    // make int, remove need to conv +      comp_obj_heading_.heading_lev_collapsed = an_object["lev_collapsed_number"].to!int; // make int, remove need to conv        comp_obj_heading_.parent_ocn            = 1;        comp_obj_heading_.parent_lev_markup     = 0;        the_blurb_section                   ~= comp_obj_heading_; @@ -832,7 +832,7 @@ if there is a blurb section you need to:        comp_obj_para.use                   = "backmatter";        comp_obj_para.is_of                 = "para";        comp_obj_para.is_a                  = "blurb"; -      comp_obj_para.text                  = to!string(line).strip; +      comp_obj_para.text                  = line.to!string.strip;        comp_obj_para.ocn                   = 0;        comp_obj_para.obj_cite_number       = "";        comp_obj_para.indent_hang           = indent["hang_position"]; @@ -914,11 +914,11 @@ assertions_flag_types_block_status_none_or_closed(type);  #+name: abs_in_loop_body_open_block_obj  #+BEGIN_SRC d -if (matchFirst(line, (rgx.block_poem_open))) { +if (line.matchFirst(rgx.block_poem_open)) {    /+ poem to verse exceptions! +/    object_reset(an_object);    processing.remove("verse"); -  obj_cite_number_poem["start"] = to!string(obj_cite_number); +  obj_cite_number_poem["start"] = obj_cite_number.to!string;  }  _start_block_(line, type, obj_cite_number_poem);  continue; @@ -945,8 +945,8 @@ if (type["blocks"] == TriState.closing) {      writeln(line);    }    assert( -    matchFirst(line, rgx.book_index) -    || matchFirst(line, rgx.book_index_open) +    line.matchFirst(rgx.book_index) +    || line.matchFirst(rgx.book_index_open)      || type["book_index"] == State.on    );  } @@ -956,9 +956,9 @@ if (type["blocks"] == TriState.closing) {  #+name: abs_in_loop_body_not_block_obj  #+BEGIN_SRC d -if ((matchFirst(line, rgx.book_index)) -|| (matchFirst(line, rgx.book_index_open)) -|| (type["book_index"] == State.on ))  { +if (line.matchFirst(rgx.book_index) +|| line.matchFirst(rgx.book_index_open) +|| type["book_index"] == State.on )  {    /+ book_index +/    _book_index_(line, book_idx_tmp, an_object, type, opt_action_bool);  #+END_SRC @@ -1022,7 +1022,7 @@ if ((matchFirst(line, rgx.book_index))         - should happen before endnote links set (they need to be moved down?)        // node_construct.node_emitter_heading segment anchor tag      +/ -    if (matchFirst(line, rgx.heading)) { +    if (line.matchFirst(rgx.heading)) {        /+ heading match +/        _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa);      } else if (line_occur["para"] == State.off) { @@ -1101,7 +1101,7 @@ assert(  if ((type["heading"] == State.on)  && (line_occur["heading"] > State.off)) {    /+ heading object (current line empty) +/ -  obj_cite_number = (to!int(an_object["lev_markup_number"]) == 0) +  obj_cite_number = (an_object["lev_markup_number"].to!int == 0)    ? (ocn_emit(3))    : (obj_cite_number = ocn_emit(type["ocn_status"]));    an_object["is"] = "heading"; @@ -1110,14 +1110,14 @@ if ((type["heading"] == State.on)      obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa);    an_object["substantive"] = substantive_object_and_anchor_tags_tuple[sObj.content];    anchor_tags = substantive_object_and_anchor_tags_tuple[sObj.anchor_tags]; -  if (to!int(an_object["lev_markup_number"]) == 4) { +  if (an_object["lev_markup_number"].to!int == 4) {      segment_anchor_tag_that_object_belongs_to = anchor_tags[0];      segment_anchor_tag_that_object_belongs_to_uri = anchor_tags[0] ~ ".fnSuffix";      anchor_tag_ = anchor_tags[0]; -  } else if (to!int(an_object["lev_markup_number"]) > 4) { +  } else if (an_object["lev_markup_number"].to!int > 4) {      segment_anchor_tag_that_object_belongs_to = anchor_tag_; -    segment_anchor_tag_that_object_belongs_to_uri = anchor_tag_ ~ ".fnSuffix#" ~ to!string(obj_cite_number); -  } else if (to!int(an_object["lev_markup_number"]) < 4) { +    segment_anchor_tag_that_object_belongs_to_uri = anchor_tag_ ~ ".fnSuffix#" ~ obj_cite_number.to!string; +  } else if (an_object["lev_markup_number"].to!int < 4) {      segment_anchor_tag_that_object_belongs_to = "";      segment_anchor_tag_that_object_belongs_to_uri = "";    } @@ -1204,9 +1204,9 @@ if ((type["heading"] == State.on)    comp_obj_para.use                   = "body";    comp_obj_para.is_of                 = "para";    comp_obj_para.is_a                  = "para"; -  comp_obj_para.text                  = to!string(an_object["substantive"]).strip; +  comp_obj_para.text                  = an_object["substantive"].to!string.strip;    comp_obj_para.ocn                   = obj_cite_number; -  comp_obj_para.obj_cite_number       = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +  comp_obj_para.obj_cite_number       = (obj_cite_number==0) ? "" : obj_cite_number.to!string;    comp_obj_para.indent_hang           = indent["hang_position"];    comp_obj_para.indent_base           = indent["base_position"];    comp_obj_para.bullet                = bullet; @@ -1248,12 +1248,11 @@ if (the_document_body_section.length > 0) {        type["glossary_section"] = State.off;        type["blurb_section"] = State.off;      } -    previous_length = to!int(the_document_body_section.length); -    if (match( -      the_document_body_section[$-1].text, +    previous_length = the_document_body_section.length.to!int; +    if ((the_document_body_section[$-1].text).match(        rgx.inline_notes_delimiter_al_regular_number_note      )) { -      previous_count=to!int(the_document_body_section.length -1); +      previous_count=(the_document_body_section.length -1).to!int;        note_section.gather_notes_for_endnote_section(          the_document_body_section,          segment_anchor_tag_that_object_belongs_to, @@ -1409,7 +1408,7 @@ foreach (entry; biblio_ordered) {    comp_obj_para.use                   = "backmatter";    comp_obj_para.is_of                 = "para";    comp_obj_para.is_a                  = "bibliography"; -  comp_obj_para.text                  = to!string(out_).strip; +  comp_obj_para.text                  = out_.to!string.strip;    comp_obj_para.ocn                   = 0;    comp_obj_para.obj_cite_number       = "";    comp_obj_para.indent_hang           = 0; @@ -1536,7 +1535,7 @@ if (the_endnotes_section.length > 1) {      ".fnSuffix",    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["seg"]    ~= comp_obj_toc;  } @@ -1549,7 +1548,7 @@ if (the_glossary_section.length > 1) {      ".fnSuffix",    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["seg"]    ~= comp_obj_toc;    toc_txt_ = format( @@ -1558,7 +1557,7 @@ if (the_glossary_section.length > 1) {      "glossary",               // _anchor_tag    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["scroll"] ~= comp_obj_toc;  } @@ -1571,7 +1570,7 @@ if (the_bibliography_section.length > 1){      ".fnSuffix",    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["seg"]    ~= comp_obj_toc; @@ -1581,7 +1580,7 @@ if (the_bibliography_section.length > 1){      "bibliography",           // _anchor_tag    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["scroll"] ~= comp_obj_toc;  } @@ -1594,7 +1593,7 @@ if (the_bookindex_section["seg"].length > 1) {      ".fnSuffix",    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["seg"]    ~= comp_obj_toc;  } @@ -1605,7 +1604,7 @@ if (the_bookindex_section["scroll"].length > 1) {      "bookindex",              // _anchor_tag    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["scroll"] ~= comp_obj_toc;  } @@ -1618,7 +1617,7 @@ if (the_blurb_section.length > 1) {      ".fnSuffix",    );    toc_txt_= munge.url_links(toc_txt_); -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    comp_obj_toc.inline_links               = true;    the_table_of_contents_section["seg"]    ~= comp_obj_toc;    toc_txt_ = format( @@ -1628,7 +1627,7 @@ if (the_blurb_section.length > 1) {    );    toc_txt_= munge.url_links(toc_txt_);    comp_obj_toc.inline_links               = true; -  comp_obj_toc.text                       = to!string(toc_txt_).strip; +  comp_obj_toc.text                       = toc_txt_.to!string.strip;    the_table_of_contents_section["scroll"] ~= comp_obj_toc;  }  debug(toc) { @@ -1763,7 +1762,7 @@ next are not yet known for backmatter during the second pass  string[] _images;  auto extract_images(S)(S content_block) {    string[] images_; -  if (auto m = matchAll(content_block, rgx.image)) { +  if (auto m = content_block.matchAll(rgx.image)) {      images_ ~= m.captures[1];    }    return images_; @@ -2221,15 +2220,15 @@ void _check_ocn_status_(L,T)(    auto rgx = Rgx();    if ((!line.empty) && (type["ocn_status_multi_obj"] == TriState.off)) {      /+ not multi-line object, check whether obj_cite_number is on or turned off +/ -    if (matchFirst(line, rgx.obj_cite_number_block_marks)) { +    if (line.matchFirst(rgx.obj_cite_number_block_marks)) {        /+ switch off obj_cite_number +/ -      if (matchFirst(line, rgx.obj_cite_number_off_block)) { +      if (line.matchFirst(rgx.obj_cite_number_off_block)) {          type["ocn_status_multi_obj"] = TriState.on;          debug(ocnoff) {            writeln(line);          }        } -      if (matchFirst(line, rgx.obj_cite_number_off_block_dh)) { +      if (line.matchFirst(rgx.obj_cite_number_off_block_dh)) {          type["ocn_status_multi_obj"] = TriState.closing;          debug(ocnoff) {            writeln(line); @@ -2237,9 +2236,9 @@ void _check_ocn_status_(L,T)(        }      } else {        if (type["ocn_status_multi_obj"] == TriState.off) { -        if (matchFirst(line, rgx.obj_cite_number_off)) { +        if (line.matchFirst(rgx.obj_cite_number_off)) {            type["ocn_status"] = TriState.on; -        } else if (matchFirst(line, rgx.obj_cite_number_off_dh)) { +        } else if (line.matchFirst(rgx.obj_cite_number_off_dh)) {            type["ocn_status"] = TriState.closing;          } else {            type["ocn_status"] = TriState.off; @@ -2250,7 +2249,7 @@ void _check_ocn_status_(L,T)(        }      }    } else if ((!line.empty) && (type["ocn_status_multi_obj"] > TriState.off)) { -    if (matchFirst(line, rgx.obj_cite_number_off_block_close)) { +    if (line.matchFirst(rgx.obj_cite_number_off_block_close)) {        type["ocn_status_multi_obj"] = TriState.off;        type["ocn_status"] = TriState.off;        debug(ocnoff) { @@ -2284,7 +2283,7 @@ void _start_block_(L,T,N)(  #+name: abs_functions_block  #+BEGIN_SRC d    auto rgx = Rgx(); -  if (matchFirst(line, rgx.block_curly_code_open)) { +  if (line.matchFirst(rgx.block_curly_code_open)) {      /+ curly code open +/      debug(code) {                              // code (curly) open        writefln( @@ -2295,7 +2294,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["code"] = TriState.on;      type["curly_code"] = TriState.on; -  } else if (matchFirst(line, rgx.block_curly_poem_open)) { +  } else if (line.matchFirst(rgx.block_curly_poem_open)) {      /+ curly poem open +/      debug(poem) {                              // poem (curly) open        writefln( @@ -2304,12 +2303,12 @@ void _start_block_(L,T,N)(        );      }      obj_cite_number_poem["start"] = -      to!string(obj_cite_number); +      obj_cite_number.to!string;      type["blocks"] = TriState.on;      type["verse_new"] = State.on;      type["poem"] = TriState.on;      type["curly_poem"] = TriState.on; -  } else if (matchFirst(line, rgx.block_curly_group_open)) { +  } else if (line.matchFirst(rgx.block_curly_group_open)) {      /+ curly group open +/      debug(group) {                             // group (curly) open        writefln( @@ -2320,7 +2319,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["group"] = TriState.on;      type["curly_group"] = TriState.on; -  } else if (matchFirst(line, rgx.block_curly_block_open)) { +  } else if (line.matchFirst(rgx.block_curly_block_open)) {      /+ curly block open +/      debug(block) {                             // block (curly) open        writefln( @@ -2331,7 +2330,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["block"] = TriState.on;      type["curly_block"] = TriState.on; -  } else if (matchFirst(line, rgx.block_curly_quote_open)) { +  } else if (line.matchFirst(rgx.block_curly_quote_open)) {      /+ curly quote open +/      debug(quote) {                             // quote (curly) open        writefln( @@ -2342,7 +2341,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["quote"] = TriState.on;      type["curly_quote"] = TriState.on; -  } else if (matchFirst(line, rgx.block_curly_table_open)) { +  } else if (line.matchFirst(rgx.block_curly_table_open)) {      /+ curly table open +/      debug(table) {                             // table (curly) open        writefln( @@ -2359,7 +2358,7 @@ void _start_block_(L,T,N)(  #+name: abs_functions_block  #+BEGIN_SRC d -  } else if (matchFirst(line, rgx.block_tic_code_open)) { +  } else if (line.matchFirst(rgx.block_tic_code_open)) {      /+ tic code open +/      debug(code) {                              // code (tic) open        writefln( @@ -2370,7 +2369,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["code"] = TriState.on;      type["tic_code"] = TriState.on; -  } else if (matchFirst(line, rgx.block_tic_poem_open)) { +  } else if (line.matchFirst(rgx.block_tic_poem_open)) {      /+ tic poem open +/      debug(poem) {                              // poem (tic) open        writefln( @@ -2378,12 +2377,12 @@ void _start_block_(L,T,N)(          line        );      } -    obj_cite_number_poem["start"] = to!string(obj_cite_number); +    obj_cite_number_poem["start"] = obj_cite_number.to!string;      type["blocks"] = TriState.on;      type["verse_new"] = State.on;      type["poem"] = TriState.on;      type["tic_poem"] = TriState.on; -  } else if (matchFirst(line, rgx.block_tic_group_open)) { +  } else if (line.matchFirst(rgx.block_tic_group_open)) {      /+ tic group open +/      debug(group) {                             // group (tic) open        writefln( @@ -2394,7 +2393,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["group"] = TriState.on;      type["tic_group"] = TriState.on; -  } else if (matchFirst(line, rgx.block_tic_block_open)) { +  } else if (line.matchFirst(rgx.block_tic_block_open)) {      /+ tic block open +/      debug(block) {                             // block (tic) open        writefln( @@ -2405,7 +2404,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["block"] = TriState.on;      type["tic_block"] = TriState.on; -  } else if (matchFirst(line, rgx.block_tic_quote_open)) { +  } else if (line.matchFirst(rgx.block_tic_quote_open)) {      /+ tic quote open +/      debug(quote) {                             // quote (tic) open        writefln( @@ -2416,7 +2415,7 @@ void _start_block_(L,T,N)(      type["blocks"] = TriState.on;      type["quote"] = TriState.on;      type["tic_quote"] = TriState.on; -  } else if (matchFirst(line, rgx.block_tic_table_open)) { +  } else if (line.matchFirst(rgx.block_tic_table_open)) {      /+ tic table open +/      debug(table) {                             // table (tic) open        writefln( @@ -2454,7 +2453,7 @@ void _code_block_(L,O,T)(    }    auto rgx = Rgx();    if (type["curly_code"] == TriState.on) { -    if (matchFirst(line, rgx.block_curly_code_close)) { +    if (line.matchFirst(rgx.block_curly_code_close)) {        debug(code) {                                    // code (curly) close          writeln(line);        } @@ -2468,7 +2467,7 @@ void _code_block_(L,O,T)(        an_object[an_object_key] ~= line ~= "\n";        // code (curly) line      }    } else if (type["tic_code"] == TriState.on) { -    if (matchFirst(line, rgx.block_tic_close)) { +    if (line.matchFirst(rgx.block_tic_close)) {        debug(code) {                                    // code (tic) close          writeln(line);        } @@ -2588,7 +2587,7 @@ void _biblio_block_(    mixin SiSUbiblio;    auto jsn = BibJsnStr();    auto rgx = Rgx(); -  if (matchFirst(line, rgx.heading_biblio)) { +  if (line.matchFirst(rgx.heading_biblio)) {      type["biblio_section"] = TriState.on;      type["blurb_section"] = State.off;      type["glossary_section"] = State.off; @@ -2623,16 +2622,16 @@ void _biblio_block_(        writeln("?? 2. ERROR ", biblio_entry_str_json, "??");        biblio_entry_str_json = "";      } -  } else if (matchFirst(line, rgx.biblio_tags)) { +  } else if (line.matchFirst(rgx.biblio_tags)) {      debug(biblioblock) {        writeln(line);      } -    auto bt = match(line, rgx.biblio_tags); +    auto bt = line.match(rgx.biblio_tags);      bib_entry = State.off; -    st=to!string(bt.captures[1]); -    auto header_tag_value=to!string(bt.captures[2]); +    st = bt.captures[1].to!string; +    auto header_tag_value=(bt.captures[2]).to!string;      JSONValue j = parseJSON(biblio_entry_str_json); -    biblio_tag_name = (match(st, rgx.biblio_abbreviations)) +    biblio_tag_name = (st.match(rgx.biblio_abbreviations))        ? (biblio_tag_map(st))        : st;      j.object[biblio_tag_name] = header_tag_value; @@ -2643,11 +2642,11 @@ void _biblio_block_(      switch (biblio_tag_name) {      case "author_raw": // author_arr author (fn sn)        j["author_arr"] = -        split(header_tag_value, rgx.arr_delimiter); +       header_tag_value.split(rgx.arr_delimiter);        string tmp;        biblioAuthorLoop:        foreach (au; j["author_arr"].array) { -        if (auto x = match(au.str, rgx.name_delimiter)) { +        if (auto x = au.str.match(rgx.name_delimiter)) {            tmp ~= x.captures[2] ~ " " ~ x.captures[1] ~ ", ";          } else {            tmp ~= au.str; @@ -2658,11 +2657,11 @@ void _biblio_block_(        goto default;      case "editor_raw": // editor_arr editor (fn sn)        j["editor_arr"] = -        split(header_tag_value, rgx.arr_delimiter); +        header_tag_value.split(rgx.arr_delimiter);        string tmp;        biblioEditorLoop:        foreach (ed; j["editor_arr"].array) { -        if (auto x = match(ed.str, rgx.name_delimiter)) { +        if (auto x = ed.str.match(rgx.name_delimiter)) {            tmp ~= x.captures[2] ~ " " ~ x.captures[1] ~ ", ";          } else {            tmp ~= ed.str; @@ -2685,7 +2684,7 @@ void _biblio_block_(          j[biblio_tag_name]        );      } -    if ((match(line, rgx.comment))) { +    if (line.match(rgx.comment)) {        writeln("ERROR", line, "COMMENT");        writeln("ERROR", s, "%%");      } @@ -2718,7 +2717,7 @@ void _group_block_(L,O,T)(    }    auto rgx = Rgx();    if (type["curly_group"] == State.on) { -    if (matchFirst(line, rgx.block_curly_group_close)) { +    if (line.matchFirst(rgx.block_curly_group_close)) {        debug(group) {          writeln(line);        } @@ -2732,7 +2731,7 @@ void _group_block_(L,O,T)(        an_object[an_object_key] ~= line ~= "\n";   // build group array (or string)      }    } else if (type["tic_group"] == TriState.on) { -    if (matchFirst(line, rgx.block_tic_close)) { +    if (line.matchFirst(rgx.block_tic_close)) {        debug(group) {          writeln(line);        } @@ -2765,7 +2764,7 @@ void _block_block_(L,O,T)(    }    auto rgx = Rgx();    if (type["curly_block"] == TriState.on) { -    if (matchFirst(line, rgx.block_curly_block_close)) { +    if (line.matchFirst(rgx.block_curly_block_close)) {        debug(block) {                             // block (curly) close          writeln(line);        } @@ -2779,7 +2778,7 @@ void _block_block_(L,O,T)(        an_object[an_object_key] ~= line ~= "\n";   // build block array (or string)      }    } else if (type["tic_block"] == TriState.on) { -    if (matchFirst(line, rgx.block_tic_close)) { +    if (line.matchFirst(rgx.block_tic_close)) {        debug(block) {          writeln(line);        } @@ -2820,7 +2819,7 @@ void _poem_block_(L,O,T,C,N,Ma)(    }    auto rgx = Rgx();    if (type["curly_poem"] == TriState.on) { -    if (matchFirst(line, rgx.block_curly_poem_close)) { +    if (line.matchFirst(rgx.block_curly_poem_close)) {        an_object[an_object_key]="verse";        debug(poem) {                               // poem (curly) close          writefln( @@ -2856,7 +2855,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          comp_obj_block.is_of                      = "block";          comp_obj_block.is_a                       = "verse";          comp_obj_block.ocn                        = obj_cite_number; -        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;          comp_obj_block.text                       = an_object["substantive"];          comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];          comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -2867,7 +2866,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          ++cntr;        }        obj_cite_number_poem["end"] = -        to!string(obj_cite_number); +        obj_cite_number.to!string;        type["blocks"] = TriState.closing;        type["poem"] = TriState.closing;        type["curly_poem"] = TriState.off; @@ -2877,7 +2876,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          obj_cite_number =            ocn_emit(type["ocn_status"]);          type["verse_new"] = State.off; -      } else if (matchFirst(line, rgx.newline_eol_delimiter_only)) { +      } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) {          verse_line = TriState.off;          type["verse_new"] = State.on;        } @@ -2910,7 +2909,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          comp_obj_block.is_of                      = "block";          comp_obj_block.is_a                       = "verse";          comp_obj_block.ocn                        = obj_cite_number; -        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;          comp_obj_block.text                       = an_object["substantive"];          comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];          comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -2922,7 +2921,7 @@ void _poem_block_(L,O,T,C,N,Ma)(        }      }    } else if (type["tic_poem"] == TriState.on) { -    if (auto m = matchFirst(line, rgx.block_tic_close)) { // tic_poem_close +    if (auto m = line.matchFirst(rgx.block_tic_close)) { // tic_poem_close        an_object[an_object_key]="verse";        debug(poem) {                                       // poem (curly) close          writefln( @@ -2949,13 +2948,13 @@ void _poem_block_(L,O,T,C,N,Ma)(          comp_obj_block.is_of                      = "block";          comp_obj_block.is_a                       = "verse";          comp_obj_block.ocn                        = obj_cite_number; -        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;          comp_obj_block.text                       = an_object["substantive"];          comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];          comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star];          comp_obj_block.inline_links               = substantive_obj_misc_tuple[sObj.links];          the_document_body_section                 ~= comp_obj_block; -        obj_cite_number_poem["end"]               = to!string(obj_cite_number); +        obj_cite_number_poem["end"]               = obj_cite_number.to!string;          object_reset(an_object);          processing.remove("verse");          ++cntr; @@ -2969,7 +2968,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          obj_cite_number =            ocn_emit(type["ocn_status"]);          type["verse_new"] = State.off; -      } else if (matchFirst(line, rgx.newline_eol_delimiter_only)) { +      } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) {          type["verse_new"] = State.on;          verse_line = TriState.off;        } @@ -3003,7 +3002,7 @@ void _poem_block_(L,O,T,C,N,Ma)(          comp_obj_block.is_of                      = "block";          comp_obj_block.is_a                       = "verse";          comp_obj_block.ocn                        = obj_cite_number; -        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +        comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;          comp_obj_block.text                       = an_object["substantive"];          comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];          comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3034,7 +3033,7 @@ void _quote_block_(L,O,T)(    }    auto rgx = Rgx();    if (type["curly_quote"] == TriState.on) { -    if (matchFirst(line, rgx.block_curly_quote_close)) { +    if (line.matchFirst(rgx.block_curly_quote_close)) {        debug(quote) {                              // quote (curly) close          writeln(line);        } @@ -3048,7 +3047,7 @@ void _quote_block_(L,O,T)(        an_object[an_object_key] ~= line ~= "\n";   // build quote array (or string)      }    } else if (type["tic_quote"] == TriState.on) { -    if (matchFirst(line, rgx.block_tic_close)) { +    if (line.matchFirst(rgx.block_tic_close)) {        debug(quote) {                              // quote (tic) close          writeln(line);        } @@ -3081,7 +3080,7 @@ void _table_block_(L,O,T)(    }    auto rgx = Rgx();    if (type["curly_table"] == TriState.on) { -    if (matchFirst(line, rgx.block_curly_table_close)) { +    if (line.matchFirst(rgx.block_curly_table_close)) {        debug(table) {                           // table (curly) close          writeln(line);        } @@ -3095,7 +3094,7 @@ void _table_block_(L,O,T)(        an_object[an_object_key] ~= line ~= "\n";           // build table array (or string)      }    } else if (type["tic_table"] == TriState.on) { -    if (matchFirst(line, rgx.block_tic_close)) { +    if (line.matchFirst(rgx.block_tic_close)) {        debug(table) {                           // table (tic) close          writeln(line);        } @@ -3177,7 +3176,7 @@ void _block_flag_line_empty_(B)(      comp_obj_block.is_of                      = "block";      comp_obj_block.is_a                       = "group";      comp_obj_block.ocn                        = obj_cite_number; -    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;      comp_obj_block.text                       = an_object["substantive"];      comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];      comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3223,7 +3222,7 @@ void _block_flag_line_empty_(B)(      comp_obj_block.is_of                      = "block";      comp_obj_block.is_a                       = "block";      comp_obj_block.ocn                        = obj_cite_number; -    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;      comp_obj_block.text                       = an_object["substantive"];      comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];      comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3270,7 +3269,7 @@ void _block_flag_line_empty_(B)(      comp_obj_code.is_of                       = "block";      comp_obj_code.is_a                        = "code";      comp_obj_code.ocn                         = obj_cite_number; -    comp_obj_code.obj_cite_number             = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +    comp_obj_code.obj_cite_number             = (obj_cite_number==0) ? "" : obj_cite_number.to!string;      comp_obj_code.text                        = an_object["substantive"];      comp_obj_code.inline_notes_reg            = substantive_obj_misc_tuple[sObj.notes_reg];      comp_obj_code.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3354,7 +3353,7 @@ void _block_flag_line_empty_(B)(      comp_obj_block.is_of                      = "block";      comp_obj_block.is_a                       = "quote";      comp_obj_block.ocn                        = obj_cite_number; -    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;      comp_obj_block.text                       = an_object["substantive"];      comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];      comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3401,7 +3400,7 @@ void _block_flag_line_empty_(B)(      comp_obj_block.is_of                      = "block";      comp_obj_block.is_a                       = "table";      comp_obj_block.ocn                        = obj_cite_number; -    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : to!string(obj_cite_number); +    comp_obj_block.obj_cite_number            = (obj_cite_number==0) ? "" : obj_cite_number.to!string;      comp_obj_block.text                       = an_object["substantive"];      comp_obj_block.inline_notes_reg           = substantive_obj_misc_tuple[sObj.notes_reg];      comp_obj_block.inline_notes_star          = substantive_obj_misc_tuple[sObj.notes_star]; @@ -3441,20 +3440,20 @@ auto _book_index_(L,I,O,T,B)(      static assert(is(typeof(opt_action_bool) == bool[string]));    }    auto rgx = Rgx(); -  if (auto m = match(line, rgx.book_index)) { +  if (auto m = line.match(rgx.book_index)) {      /+ match book_index +/      debug(bookindexmatch) {                       // book index        writefln(          "* [bookindex] %s\n", -        to!string(m.captures[1]), +        m.captures[1].to!string,        );      } -    an_object["bookindex_nugget"] = to!string(m.captures[1]); -  } else if (auto m = match(line, rgx.book_index_open))  { +    an_object["bookindex_nugget"] = m.captures[1].to!string; +  } else if (auto m = line.match(rgx.book_index_open))  {      /+ match open book_index +/      type["book_index"] = State.on;      if (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"]) { -      book_idx_tmp = to!string(m.captures[1]); +      book_idx_tmp = m.captures[1].to!string;        debug(bookindexmatch) {                       // book index          writefln(            "* [bookindex] %s\n", @@ -3464,11 +3463,11 @@ auto _book_index_(L,I,O,T,B)(      }    } else if (type["book_index"] == State.on )  {      /+ book_index flag set +/ -    if (auto m = match(line, rgx.book_index_close))  { +    if (auto m = line.match(rgx.book_index_close))  {        type["book_index"] = State.off;        if (opt_action_bool["backmatter"]        && opt_action_bool["section_bookindex"]) { -        an_object["bookindex_nugget"] = book_idx_tmp ~ to!string(m.captures[1]); +        an_object["bookindex_nugget"] = book_idx_tmp ~ m.captures[1].to!string;          debug(bookindexmatch) {                     // book index            writefln(              "* [bookindex] %s\n", @@ -3514,9 +3513,8 @@ auto _heading_found_(L,X,H,R,T)(        writeln(dochead_make_identify_unmarked_headings);      }      char[][] make_headings_spl = -      split( -        cast(char[]) dochead_make_identify_unmarked_headings, -        rgx.make_heading_delimiter); +      (cast(char[]) dochead_make_identify_unmarked_headings) +        .split(rgx.make_heading_delimiter);      debug(headingsfound) {        writeln(make_headings_spl.length);        writeln(make_headings_spl); @@ -3525,7 +3523,7 @@ auto _heading_found_(L,X,H,R,T)(      case 7 :        if (!empty(make_headings_spl[6])) {          heading_match_str["h_4"] = -          "^(" ~ to!string(make_headings_spl[6]) ~ ")"; +          "^(" ~ make_headings_spl[6].to!string ~ ")";          heading_match_rgx["h_4"] =            regex(heading_match_str["h_4"]);        } @@ -3533,7 +3531,7 @@ auto _heading_found_(L,X,H,R,T)(      case 6 :        if (!empty(make_headings_spl[5])) {          heading_match_str["h_3"] = -          "^(" ~ to!string(make_headings_spl[5]) ~ ")"; +          "^(" ~ make_headings_spl[5].to!string ~ ")";          heading_match_rgx["h_3"] =            regex(heading_match_str["h_3"]);        } @@ -3541,7 +3539,7 @@ auto _heading_found_(L,X,H,R,T)(      case 5 :        if (!empty(make_headings_spl[4])) {          heading_match_str["h_2"] = -          "^(" ~ to!string(make_headings_spl[4]) ~ ")"; +          "^(" ~ make_headings_spl[4].to!string ~ ")";          heading_match_rgx["h_2"] =            regex(heading_match_str["h_2"]);        } @@ -3549,7 +3547,7 @@ auto _heading_found_(L,X,H,R,T)(      case 4 :        if (!empty(make_headings_spl[3])) {          heading_match_str["h_1"] = -          "^(" ~ to!string(make_headings_spl[3]) ~ ")"; +          "^(" ~ make_headings_spl[3].to!string ~ ")";          heading_match_rgx["h_1"] =            regex(heading_match_str["h_1"]);        } @@ -3557,7 +3555,7 @@ auto _heading_found_(L,X,H,R,T)(      case 3 :        if (!empty(make_headings_spl[2])) {          heading_match_str["h_D"] = -          "^(" ~ to!string(make_headings_spl[2]) ~ ")"; +          "^(" ~ make_headings_spl[2].to!string ~ ")";          heading_match_rgx["h_D"] =            regex(heading_match_str["h_D"]);        } @@ -3565,7 +3563,7 @@ auto _heading_found_(L,X,H,R,T)(      case 2 :        if (!empty(make_headings_spl[1])) {          heading_match_str["h_C"] = -          "^(" ~ to!string(make_headings_spl[1]) ~ ")"; +          "^(" ~ make_headings_spl[1].to!string ~ ")";          heading_match_rgx["h_C"] =            regex(heading_match_str["h_C"]);        } @@ -3573,7 +3571,7 @@ auto _heading_found_(L,X,H,R,T)(      case 1 :        if (!empty(make_headings_spl[0])) {          heading_match_str["h_B"] = -          "^(" ~ to!string(make_headings_spl[0]) ~ ")"; +          "^(" ~ make_headings_spl[0].to!string ~ ")";          heading_match_rgx["h_B"] =            regex(heading_match_str["h_B"]);        } @@ -3608,43 +3606,43 @@ auto _heading_make_set_(L,C,R,T)(    && ((type["para"] == State.off)    && (type["heading"] == State.off))) {      /+ heading make set +/ -    if (matchFirst(line, heading_match_rgx["h_B"])) { +    if (line.matchFirst(heading_match_rgx["h_B"])) {        line = "B~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_C"])) { +    if (line.matchFirst(heading_match_rgx["h_C"])) {        line = "C~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_D"])) { +    if (line.matchFirst(heading_match_rgx["h_D"])) {        line = "D~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_1"])) { +    if (line.matchFirst(heading_match_rgx["h_1"])) {        line = "1~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_2"])) { +    if (line.matchFirst(heading_match_rgx["h_2"])) {        line = "2~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_3"])) { +    if (line.matchFirst(heading_match_rgx["h_3"])) {        line = "3~ " ~ line;        debug(headingsfound) {          writeln(line);        }      } -    if (matchFirst(line, heading_match_rgx["h_4"])) { +    if (line.matchFirst(heading_match_rgx["h_4"])) {        line = "4~ " ~ line;        debug(headingsfound) {          writeln(line); @@ -3679,10 +3677,10 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      static assert(is(typeof(dochead_meta_aa) == string[string][string]));    }    auto rgx = Rgx(); -  if (auto m = match(line, rgx.heading)) { +  if (auto m = line.match(rgx.heading)) {      /+ heading match +/      type["heading"] = State.on; -    if (match(line, rgx.heading_seg_and_above)) { +    if (line.match(rgx.heading_seg_and_above)) {        type["biblio_section"] = State.off;        type["glossary_section"] = State.off;        type["blurb_section"] = State.off; @@ -3701,7 +3699,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(            dochead_meta_aa["creator"]["author"]);        collapsed_lev["h0"] = 0;        an_object["lev_collapsed_number"] = -        to!string(collapsed_lev["h0"]); +        collapsed_lev["h0"].to!string;        lv["lv"] = DocStructMarkupHeading.h_sect_A;        ++lv["h0"];        lv["h1"] = State.off; @@ -3715,7 +3713,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "B":        collapsed_lev["h1"] = collapsed_lev["h0"] + 1;        an_object["lev_collapsed_number"] = -        to!string(collapsed_lev["h1"]); +        collapsed_lev["h1"].to!string;        lv["lv"] = DocStructMarkupHeading.h_sect_B;        ++lv["h1"];        lv["h2"] = State.off; @@ -3728,7 +3726,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "C":        collapsed_lev["h2"] = collapsed_lev["h1"] + 1;        an_object["lev_collapsed_number"] = -        to!string(collapsed_lev["h2"]); +        collapsed_lev["h2"].to!string;        lv["lv"] = DocStructMarkupHeading.h_sect_C;        ++lv["h2"];        lv["h3"] = State.off; @@ -3740,7 +3738,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "D":        collapsed_lev["h3"] = collapsed_lev["h2"] + 1;        an_object["lev_collapsed_number"] = -        to!string(collapsed_lev["h3"]); +        collapsed_lev["h3"].to!string;        lv["lv"] = DocStructMarkupHeading.h_sect_D;        ++lv["h3"];        lv["h4"] = State.off; @@ -3759,7 +3757,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(          collapsed_lev["h4"] = collapsed_lev["h0"] + 1;        }        an_object["lev_collapsed_number"] = -        to!string(collapsed_lev["h4"]); +        collapsed_lev["h4"].to!string;        lv["lv"] = DocStructMarkupHeading.h_text_1;        ++lv["h4"];        lv["h5"] = State.off; @@ -3769,11 +3767,11 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "2":        if (lv["h5"] > State.off) {          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h5"]); +          collapsed_lev["h5"].to!string;        } else if (lv["h4"] > State.off) {          collapsed_lev["h5"] = collapsed_lev["h4"] + 1;          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h5"]); +          collapsed_lev["h5"].to!string;        }        lv["lv"] = DocStructMarkupHeading.h_text_2;        ++lv["h5"]; @@ -3783,11 +3781,11 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "3":        if (lv["h6"] > State.off) {          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h6"]); +          collapsed_lev["h6"].to!string;        } else if (lv["h5"] > State.off) {          collapsed_lev["h6"] = collapsed_lev["h5"] + 1;          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h6"]); +          collapsed_lev["h6"].to!string;        }        lv["lv"] = DocStructMarkupHeading.h_text_3;        ++lv["h6"]; @@ -3796,20 +3794,20 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)(      case "4":        if (lv["h7"] > State.off) {          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h7"]); +          collapsed_lev["h7"].to!string;        } else if (lv["h6"] > State.off) {          collapsed_lev["h7"] = collapsed_lev["h6"] + 1;          an_object["lev_collapsed_number"] = -          to!string(collapsed_lev["h7"]); +          collapsed_lev["h7"].to!string;        }        lv["lv"] = DocStructMarkupHeading.h_text_4;        ++lv["h7"];        goto default;      default: -      an_object["lev_markup_number"] = to!string(lv["lv"]); +      an_object["lev_markup_number"] = lv["lv"].to!string;      }      debug(heading) {                         // heading -      writeln(strip(line)); +      writeln(line.strip);      }    }  } @@ -3848,31 +3846,31 @@ void _para_match_(L,O,K,I,B,T,C)(        "base_position" : 0,      ];      bullet = false; -    if (auto m = matchFirst(line, rgx.para_indent)) { +    if (auto m = line.matchFirst(rgx.para_indent)) {        debug(paraindent) {                    // para indent          writeln(line);        } -      indent["hang_position"] = to!int(m.captures[1]); +      indent["hang_position"] = (m.captures[1]).to!int;        indent["base_position"] = 0; -    } else if (matchFirst(line, rgx.para_bullet)) { +    } else if (line.matchFirst(rgx.para_bullet)) {        debug(parabullet) {                    // para bullet          writeln(line);        }        bullet = true; -    } else if (auto m = matchFirst(line, rgx.para_indent_hang)) { +    } else if (auto m = line.matchFirst(rgx.para_indent_hang)) {        debug(paraindenthang) {                // para indent hang          writeln(line);        }        indent=[ -        "hang_position" : to!int(m.captures[1]), -        "base_position" : to!int(m.captures[2]), +        "hang_position" : (m.captures[1]).to!int, +        "base_position" : (m.captures[2]).to!int,        ]; -    } else if (auto m = matchFirst(line, rgx.para_bullet_indent)) { +    } else if (auto m = line.matchFirst(rgx.para_bullet_indent)) {        debug(parabulletindent) {              // para bullet indent          writeln(line);        }        indent=[ -        "hang_position" : to!int(m.captures[1]), +        "hang_position" : (m.captures[1]).to!int,          "base_position" : 0,        ];        bullet = true; @@ -3890,7 +3888,7 @@ auto font_faces_line(T)(    return ref T  textline,  ) {    auto rgx = Rgx(); -  if (match(textline, rgx.inline_faces_line)) { +  if (textline.match(rgx.inline_faces_line)) {      textline = (textline)        .replaceFirst(rgx.inline_emphasis_line,   ("*{$1}*$2"))        .replaceFirst(rgx.inline_bold_line,       ("!{$1}!$2")) @@ -3958,9 +3956,9 @@ struct ObjInlineMarkupMunge {        static assert(is(typeof(obj_txt_in) == string));      }      /+ url matched +/ -    if (match(obj_txt_in, rgx.inline_url_generic)) { +    if (obj_txt_in.match(rgx.inline_url_generic)) {        /+ link: naked url: http://url +/ -      if (match(obj_txt_in, rgx.inline_link_naked_url)) { +      if (obj_txt_in.match(rgx.inline_link_naked_url)) {          obj_txt_in = (obj_txt_in).replaceAll(              rgx.inline_link_naked_url,              ("$1" @@ -3974,7 +3972,7 @@ struct ObjInlineMarkupMunge {           maps to:             { link which includes url as footnote }http://url~{ { http://url }http://url }~        +/ -      if (match(obj_txt_in, rgx.inline_link_endnote_url_helper)) { +      if (obj_txt_in.match(rgx.inline_link_endnote_url_helper)) {          obj_txt_in = (obj_txt_in).replaceAll(            rgx.inline_link_endnote_url_helper_punctuated,            (mkup.lnk_o ~ "$1" ~ mkup.lnk_c @@ -3995,7 +3993,7 @@ struct ObjInlineMarkupMunge {        /+ link with regular markup:           { linked text or image }http://url        +/ -      if (match(obj_txt_in, rgx.inline_link_markup_regular)) { +      if (obj_txt_in.match(rgx.inline_link_markup_regular)) {          obj_txt_in = (obj_txt_in).replaceAll(            rgx.inline_link_markup_regular,            ("$1" @@ -4027,8 +4025,8 @@ struct ObjInlineMarkupMunge {      if (!(stage_reset_note_numbers) && reset_note_numbers) {        stage_reset_note_numbers = true;      } -    if (match(obj_txt_in, rgx.inline_notes_al_gen)) { -      if (auto m = matchAll(obj_txt_in, rgx.inline_text_and_note_al_)) { +    if (obj_txt_in.match(rgx.inline_notes_al_gen)) { +      if (auto m = obj_txt_in.matchAll(rgx.inline_text_and_note_al_)) {          if (stage_reset_note_numbers) {            n_foot = 0;            n_foot_reg = 0; @@ -4037,25 +4035,25 @@ struct ObjInlineMarkupMunge {          }          stage_reset_note_numbers = false;          foreach(n; m) { -          if (match(to!string(n.hit), rgx.inline_al_delimiter_open_symbol_star)) { +          if (n.hit.to!string.match(rgx.inline_al_delimiter_open_symbol_star)) {              flg_notes_star =  true;              ++n_foot_sp_asterisk;              asterisks_ = "*";              n_foot=n_foot_sp_asterisk; -            obj_txt_out ~= (to!string(n.hit)).replaceFirst( +            obj_txt_out ~= n.hit.to!string.replaceFirst(                rgx.inline_al_delimiter_open_symbol_star,                (mkup.en_a_o ~ replicate(asterisks_, n_foot_sp_asterisk) ~ " ")              ) ~ "\n"; -          } else if (match(to!string(n.hit), rgx.inline_al_delimiter_open_regular)) { +          } else if (n.hit.to!string.match(rgx.inline_al_delimiter_open_regular)) {              flg_notes_reg =  true;              ++n_foot_reg;              n_foot=n_foot_reg; -            obj_txt_out ~= (to!string(n.hit)).replaceFirst( +            obj_txt_out ~= n.hit.to!string.replaceFirst(                rgx.inline_al_delimiter_open_regular,                (mkup.en_a_o ~ to!string(n_foot) ~ " ")              ) ~ "\n";            } else { -            obj_txt_out ~= to!string(n.hit) ~ "\n"; +            obj_txt_out ~= n.hit.to!string ~ "\n";            }          }        } @@ -4086,19 +4084,16 @@ struct ObjInlineMarkupMunge {      bool urls = false;      tail = "";      /+ special endnotes +/ -    obj_txt_in = replaceAll( -      obj_txt_in, +    obj_txt_in = obj_txt_in.replaceAll(        rgx.inline_notes_curly_sp_asterisk,        (mkup.en_a_o ~ "*" ~ " $1" ~ mkup.en_a_c)      ); -    obj_txt_in = -      replaceAll( -        obj_txt_in, -        rgx.inline_notes_curly_sp_plus, -        (mkup.en_a_o ~ "+" ~ " $1" ~ mkup.en_a_c) -      ); +    obj_txt_in = obj_txt_in.replaceAll( +      rgx.inline_notes_curly_sp_plus, +      (mkup.en_a_o ~ "+" ~ " $1" ~ mkup.en_a_c) +    );      /+ url matched +/ -    if (match(obj_txt_in, rgx.inline_url)) { +    if (obj_txt_in.match(rgx.inline_url)) {        urls = true;        obj_txt_in = url_links(obj_txt_in);      } @@ -4116,7 +4111,7 @@ struct ObjInlineMarkupMunge {        }      }      auto t = tuple( -      to!string(obj_txt_out), +      obj_txt_out,        ftn[1],        ftn[2],        urls, @@ -4155,7 +4150,7 @@ struct ObjInlineMarkupMunge {        writeln(__LINE__);        writeln(obj_txt_in);        writeln(__LINE__); -      writeln(to!string(obj_txt["munge"])); +      writeln(obj_txt["munge"].to!string);      }      return t;    } @@ -4188,7 +4183,7 @@ struct ObjInlineMarkupMunge {        writeln(__LINE__);        writeln(obj_txt_in);        writeln(__LINE__); -      writeln(to!string(obj_txt["munge"])); +      writeln(obj_txt["munge"].to!string);      }      return t;    } @@ -4385,7 +4380,7 @@ struct ObjInlineMarkup {    }    body {      obj_txt["munge"] = obj_[obj_key_].dup; -    obj_txt["munge"] = (match(obj_["is"], ctRegex!(`verse|code`))) +    obj_txt["munge"] = (obj_["is"].match(ctRegex!(`verse|code`)))      ? obj_txt["munge"]      : strip(obj_txt["munge"]);      static __gshared string[] anchor_tags_ = []; @@ -4400,7 +4395,7 @@ struct ObjInlineMarkup {        // TODO WORK ON, you still need to ensure that level 1 anchor_tags are unique        obj_txt["munge"]=_configured_auto_heading_numbering_and_segment_anchor_tags(obj_txt["munge"], obj_, dochead_make_aa);        obj_txt["munge"]=_make_segment_anchor_tags_if_none_provided(obj_txt["munge"], obj_["lev"]); -      if (auto m = match(obj_txt["munge"], rgx.heading_anchor_tag)) { +      if (auto m = obj_txt["munge"].match(rgx.heading_anchor_tag)) {          anchor_tag = m.captures[1];          anchor_tags_ ~= anchor_tag;        } else if (obj_["lev"] == "1") { @@ -4468,7 +4463,7 @@ struct ObjInlineMarkup {     debug(asserts) {       static assert(is(typeof(heading_toc_) == char[]));     } -   auto m = matchFirst(cast(char[]) heading_toc_, rgx.heading); +   auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading);     heading_toc_ = (m.post).replaceAll(       rgx.inline_notes_curly_gen,       ""); @@ -4501,10 +4496,10 @@ struct ObjInlineMarkup {      auto attrib="";      string toc_txt_, subtoc_txt_;      int[string] indent; -    if (to!int(obj_["lev_markup_number"]) > 0) { +    if (obj_["lev_markup_number"].to!int > 0) {        indent=[ -        "hang_position" : to!int(obj_["lev_markup_number"]), -        "base_position" : to!int(obj_["lev_markup_number"]), +        "hang_position" : obj_["lev_markup_number"].to!int, +        "base_position" : obj_["lev_markup_number"].to!int,        ];        toc_txt_ = format(          "{ %s }#%s", @@ -4521,7 +4516,7 @@ struct ObjInlineMarkup {        comp_obj_toc.indent_hang           = indent["hang_position"];        comp_obj_toc.indent_base           = indent["base_position"];        comp_obj_toc.bullet                = false; -      comp_obj_toc.text                  = to!string(toc_txt_).strip; +      comp_obj_toc.text                  = toc_txt_.to!string.strip;        comp_obj_toc.inline_links          = true;        the_table_of_contents_section["scroll"] ~= comp_obj_toc;      } else { @@ -4550,7 +4545,7 @@ struct ObjInlineMarkup {      comp_obj_toc.obj_cite_number       = "";      comp_obj_toc.bullet                = false;      comp_obj_toc.inline_links          = true; -    switch (to!int(obj_["lev_markup_number"])) { +    switch (obj_["lev_markup_number"].to!int) {      case 0:        indent=[          "hang_position" : 0, @@ -4560,14 +4555,14 @@ struct ObjInlineMarkup {        toc_txt_= munge.url_links(toc_txt_);        comp_obj_toc.indent_hang             = indent["hang_position"];        comp_obj_toc.indent_base             = indent["base_position"]; -      comp_obj_toc.text                    = to!string(toc_txt_).strip; +      comp_obj_toc.text                    = toc_txt_.to!string.strip;        comp_obj_toc.inline_links            = true;        the_table_of_contents_section["seg"] ~= comp_obj_toc;        break;      case 1: .. case 3:        indent=[ -        "hang_position" : to!int(obj_["lev_markup_number"]), -        "base_position" : to!int(obj_["lev_markup_number"]), +        "hang_position" : obj_["lev_markup_number"].to!int, +        "base_position" : obj_["lev_markup_number"].to!int,        ];        toc_txt_ = format(          "%s", @@ -4576,7 +4571,7 @@ struct ObjInlineMarkup {        toc_txt_= munge.url_links(toc_txt_);        comp_obj_toc.indent_hang             = indent["hang_position"];        comp_obj_toc.indent_base             = indent["base_position"]; -      comp_obj_toc.text                    = to!string(toc_txt_).strip; +      comp_obj_toc.text                    = toc_txt_.to!string.strip;        comp_obj_toc.inline_links            = true;        the_table_of_contents_section["seg"] ~= comp_obj_toc;        break; @@ -4591,12 +4586,12 @@ struct ObjInlineMarkup {        lev4_subtoc[segment_anchor_tag_that_object_belongs_to] = [];        toc_txt_= munge.url_links(toc_txt_);        indent=[ -        "hang_position" : to!int(obj_["lev_markup_number"]), -        "base_position" : to!int(obj_["lev_markup_number"]), +        "hang_position" : obj_["lev_markup_number"].to!int, +        "base_position" : obj_["lev_markup_number"].to!int,        ];        comp_obj_toc.indent_hang             = indent["hang_position"];        comp_obj_toc.indent_base             = indent["base_position"]; -      comp_obj_toc.text                    = to!string(toc_txt_).strip; +      comp_obj_toc.text                    = toc_txt_.to!string.strip;        comp_obj_toc.inline_links            = true;        the_table_of_contents_section["seg"] ~= comp_obj_toc;        break; @@ -4615,15 +4610,15 @@ struct ObjInlineMarkup {          _anchor_tag,        );        lev4_subtoc[segment_anchor_tag_that_object_belongs_to] -      ~= obj_["lev_markup_number"] ~ "~ " ~ to!string(subtoc_txt_).strip; +      ~= obj_["lev_markup_number"] ~ "~ " ~ subtoc_txt_.to!string.strip;        toc_txt_= munge.url_links(toc_txt_);        indent=[ -        "hang_position" : to!int(obj_["lev_markup_number"]), -        "base_position" : to!int(obj_["lev_markup_number"]), +        "hang_position" : obj_["lev_markup_number"].to!int, +        "base_position" : obj_["lev_markup_number"].to!int,        ];        comp_obj_toc.indent_hang             = indent["hang_position"];        comp_obj_toc.indent_base             = indent["base_position"]; -      comp_obj_toc.text                    = to!string(toc_txt_).strip; +      comp_obj_toc.text                    = toc_txt_.to!string.strip;        comp_obj_toc.inline_links            = true;        the_table_of_contents_section["seg"] ~= comp_obj_toc;        break; @@ -4667,7 +4662,7 @@ private:        static __gshared string heading_number_auto_composite = "";        if (heading_num_top_level==9) {          if (dochead_make_aa["make"]["num_depth"].length > 0) { -          heading_num_depth = to!uint(dochead_make_aa["make"]["num_depth"]); +          heading_num_depth = dochead_make_aa["make"]["num_depth"].to!uint;          }          switch (dochead_make_aa["make"]["num_top"]) {          case "A": @@ -4700,7 +4695,7 @@ private:        /+ num_depth minimum 0 (1.) default 2 (1.1.1) max 3 (1.1.1.1) implement +/        if (          heading_num_top_level -        > to!uint(obj_["lev_markup_number"]) +        > obj_["lev_markup_number"].to!uint        ) {          heading_num_0 = 0;          heading_num_1 = 0; @@ -4708,7 +4703,7 @@ private:          heading_num_3 = 0;        } else if (          heading_num_top_level -        == to!uint(obj_["lev_markup_number"]) +        == obj_["lev_markup_number"].to!uint        ) {          heading_num_0 ++;          heading_num_1 = 0; @@ -4716,54 +4711,54 @@ private:          heading_num_3 = 0;        } else if (          heading_num_top_level -        == (to!uint(obj_["lev_markup_number"]) - 1) +        == (obj_["lev_markup_number"].to!uint - 1)        ) {          heading_num_1 ++;          heading_num_2 = 0;          heading_num_3 = 0;        } else if (          heading_num_top_level -        == (to!uint(obj_["lev_markup_number"]) - 2) +        == (obj_["lev_markup_number"].to!uint - 2)        ) {          heading_num_2 ++;          heading_num_3 = 0;        } else if (          heading_num_top_level -        == (to!uint(obj_["lev_markup_number"]) - 3) +        == (obj_["lev_markup_number"].to!uint - 3)        ) {          heading_num_3 ++;        }        if (heading_num_3 > 0) {          heading_number_auto_composite =            (heading_num_depth == 3) -          ? ( to!string(heading_num_0) ~ "." -              ~ to!string(heading_num_1) ~ "." -              ~ to!string(heading_num_2) ~ "." -              ~ to!string(heading_num_3) +          ? ( heading_num_0.to!string ~ "." +              ~ heading_num_1.to!string ~ "." +              ~ heading_num_2.to!string ~ "." +              ~ heading_num_3.to!string              )            : "";        } else if (heading_num_2 > 0) {          heading_number_auto_composite =            ((heading_num_depth >= 2)            && (heading_num_depth <= 3)) -          ?  ( to!string(heading_num_0) ~ "." -               ~ to!string(heading_num_1) ~ "." -               ~ to!string(heading_num_2) +          ?  ( heading_num_0.to!string ~ "." +               ~ heading_num_1.to!string ~ "." +               ~ heading_num_2.to!string               )            : "";        } else if (heading_num_1 > 0) {          heading_number_auto_composite =            ((heading_num_depth >= 1)            && (heading_num_depth <= 3)) -          ? ( to!string(heading_num_0) ~ "." -               ~ to!string(heading_num_1) +          ? ( heading_num_0.to!string ~ "." +               ~ heading_num_1.to!string               )            : "";        } else if (heading_num_0 > 0) {          heading_number_auto_composite =            ((heading_num_depth >= 0)            && (heading_num_depth <= 3)) -          ?  (to!string(heading_num_0)) +          ?  (heading_num_0.to!string)            : "";        } else {          heading_number_auto_composite = ""; @@ -4771,7 +4766,7 @@ private:        debug(heading_number_auto) {          writeln(heading_number_auto_composite);        } -      if (!(match(munge_, rgx.heading_anchor_tag)) +      if (!(munge_.match(rgx.heading_anchor_tag))        && !empty(heading_number_auto_composite)) {          munge_=(munge_)          .replaceFirst(rgx.heading, @@ -4800,13 +4795,13 @@ private:        static assert(is(typeof(munge_) == string));        static assert(is(typeof(lev_)   == string));      } -    if (!(match(munge_, rgx.heading_anchor_tag))) { // if (anchor_tags_.length == 0) { -      if (match(munge_, rgx.heading_identify_anchor_tag)) { -        if (auto m = match(munge_, rgx.heading_extract_named_anchor_tag)) { +    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)) {            munge_=(munge_).replaceFirst(              rgx.heading_marker_missing_tag, -            "$1~" ~ toLower(m.captures[1]) ~ "_"  ~ m.captures[2] ~ " "); -        } else if (auto m = match(munge_, rgx.heading_extract_unnamed_anchor_tag)) { +            "$1~" ~ m.captures[1].toLower ~ "_"  ~ m.captures[2] ~ " "); +        } else if (auto m = munge_.match(rgx.heading_extract_unnamed_anchor_tag)) {            munge_=(munge_).replaceFirst(              rgx.heading_marker_missing_tag,              "$1~" ~ "s" ~ m.captures[1] ~ " "); @@ -4816,7 +4811,7 @@ private:          heading_num_lev1 ++;          munge_=(munge_).replaceFirst(            rgx.heading_marker_missing_tag, -          "$1~" ~ "x" ~ to!string(heading_num_lev1) ~ " "); +          "$1~" ~ "x" ~ heading_num_lev1.to!string ~ " ");        }      }      return munge_; @@ -4984,22 +4979,22 @@ struct ObjAttributes {      }    }    body { -    if (matchFirst(obj_txt_in, rgx.para_bullet)) { +    if (obj_txt_in.matchFirst(rgx.para_bullet)) {        _obj_attributes =" \"bullet\": \"true\","        ~ " \"indent_hang\": 0,"        ~ " \"indent_base\": 0,"; -    } else if (auto m = matchFirst(obj_txt_in, rgx.para_bullet_indent)) { +    } else if (auto m = obj_txt_in.matchFirst(rgx.para_bullet_indent)) {        _obj_attributes =" \"bullet\": \"true\"," -      ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," -      ~ " \"indent_base\": " ~ to!string(m.captures[1]) ~ ","; -    } else if (auto m = matchFirst(obj_txt_in, rgx.para_indent_hang)) { +      ~ " \"indent_hang\": " ~ m.captures[1].to!string ~ "," +      ~ " \"indent_base\": " ~ m.captures[1].to!string ~ ","; +    } else if (auto m = obj_txt_in.matchFirst(rgx.para_indent_hang)) {        _obj_attributes =" \"bullet\": \"false\"," -      ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," -      ~ " \"indent_base\": " ~  to!string(m.captures[2]) ~ ","; -    } else if (auto m = matchFirst(obj_txt_in, rgx.para_indent)) { +      ~ " \"indent_hang\": " ~ m.captures[1].to!string ~ "," +      ~ " \"indent_base\": " ~  m.captures[2].to!string ~ ","; +    } else if (auto m = obj_txt_in.matchFirst(rgx.para_indent)) {        _obj_attributes =" \"bullet\": \"false\"," -      ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," -      ~ " \"indent_base\": " ~ to!string(m.captures[1]) ~ ","; +      ~ " \"indent_hang\": " ~ m.captures[1].to!string ~ "," +      ~ " \"indent_base\": " ~ m.captures[1].to!string ~ ",";      } else {        _obj_attributes =" \"bullet\": \"false\","        ~ " \"indent_hang\": 0," @@ -5256,7 +5251,7 @@ struct BookIndexNuggetHash {        if (!bookindex_section.empty) {          writeln(            "* [bookindex] ", -          "[", to!string(obj_cite_number), ": ", segment_anchor_tag, "] ", bookindex_section +          "[", obj_cite_number.to!string, ": ", segment_anchor_tag, "] ", bookindex_section          );        }      } @@ -5265,41 +5260,39 @@ struct BookIndexNuggetHash {      auto rgx = Rgx();      if (!bookindex_section.empty) {        auto bi_main_terms_split_arr = -        split(bookindex_section, rgx.bi_main_terms_split); +        bookindex_section.split(rgx.bi_main_terms_split);        foreach (bi_main_terms_content; bi_main_terms_split_arr) {          auto bi_main_term_and_rest = -          split(bi_main_terms_content, rgx.bi_main_term_plus_rest_split); -        if (auto m = match( -          bi_main_term_and_rest[0], +          bi_main_terms_content.split(rgx.bi_main_term_plus_rest_split); +        if (auto m = bi_main_term_and_rest[0].match(            rgx.bi_term_and_obj_cite_numbers_match)          ) { -          main_term = strip(m.captures[1]); -          obj_cite_number_offset = to!int(m.captures[2]); +          main_term = m.captures[1].strip; +          obj_cite_number_offset = m.captures[2].to!int;            obj_cite_number_endpoint=(obj_cite_number + obj_cite_number_offset); -          obj_cite_numbers ~= (to!string(obj_cite_number) ~ "-" ~ to!string(obj_cite_number_endpoint) +          obj_cite_numbers ~= (obj_cite_number.to!string ~ "-" ~ to!string(obj_cite_number_endpoint)            ~ ":" ~ segment_anchor_tag);          } else { -          main_term = strip(bi_main_term_and_rest[0]); -          obj_cite_numbers ~= to!string(obj_cite_number) +          main_term = bi_main_term_and_rest[0].strip; +          obj_cite_numbers ~= obj_cite_number.to!string            ~ ":" ~ segment_anchor_tag;          }          bi[main_term]["_a"] ~= obj_cite_numbers;          obj_cite_numbers=null;          if (bi_main_term_and_rest.length > 1) {            auto bi_sub_terms_split_arr = -            split( -              bi_main_term_and_rest[1], +            bi_main_term_and_rest[1].split(                rgx.bi_sub_terms_plus_obj_cite_number_offset_split              );            foreach (sub_terms_bits; bi_sub_terms_split_arr) { -            if (auto m = match(sub_terms_bits, rgx.bi_term_and_obj_cite_numbers_match)) { -              sub_term = strip(m.captures[1]); -              obj_cite_number_offset = to!int(m.captures[2]); +            if (auto m = sub_terms_bits.match(rgx.bi_term_and_obj_cite_numbers_match)) { +              sub_term = m.captures[1].strip; +              obj_cite_number_offset = m.captures[2].to!int;                obj_cite_number_endpoint=(obj_cite_number + obj_cite_number_offset); -              obj_cite_numbers ~= (to!string(obj_cite_number) ~ " - " ~ to!string(obj_cite_number_endpoint) +              obj_cite_numbers ~= (obj_cite_number.to!string ~ " - " ~ to!string(obj_cite_number_endpoint)                ~ ":" ~ segment_anchor_tag);              } else { -              sub_term = strip(sub_terms_bits); +              sub_term = sub_terms_bits.strip;                obj_cite_numbers ~= to!string(obj_cite_number)                ~ ":" ~ segment_anchor_tag;              } @@ -5480,7 +5473,7 @@ struct BookIndexReportSection {          bi_tmp_seg = "!{" ~ mainkey ~ "}! ";          auto bkidx_lnk_seg(string locs) {            string markup = ""; -          if (auto m = matchFirst(locs, rgx.book_index_go_seg)) { +          if (auto m = locs.matchFirst(rgx.book_index_go_seg)) {              markup =                munge.url_links("{ " ~ m["link"] ~ " }"                ~ mkup.mark_internal_site_lnk ~ m["seg"] ~ ".fnSuffix" @@ -5492,7 +5485,7 @@ struct BookIndexReportSection {          }          auto bkidx_lnk_scroll(string locs) {            string markup = ""; -          if (auto m = matchFirst(locs, rgx.book_index_go)) { +          if (auto m = locs.matchFirst(rgx.book_index_go)) {              markup =                munge.url_links("{ " ~ m["link"] ~ " }"                ~ mkup.mark_internal_site_lnk @@ -5530,7 +5523,7 @@ struct BookIndexReportSection {          comp_obj_para.use                   = "backmatter";          comp_obj_para.is_of                 = "para";          comp_obj_para.is_a                  = "bookindex"; -        comp_obj_para.text                  = to!string(bi_tmp_scroll).strip; +        comp_obj_para.text                  = bi_tmp_scroll.to!string.strip;          comp_obj_para.ocn                   = obj_cite_number;          comp_obj_para.obj_cite_number       = (obj_cite_number==0) ? "" : to!string(obj_cite_number);          comp_obj_para.anchor_tags           = bi_tmp_tags; @@ -5539,7 +5532,7 @@ struct BookIndexReportSection {          comp_obj_para.bullet                = false;          comp_obj_para.inline_links          = true;          bookindex_section["scroll"]         ~= comp_obj_para; -        comp_obj_para.text                  = to!string(bi_tmp_seg).strip; +        comp_obj_para.text                  = bi_tmp_seg.to!string.strip;          bookindex_section["seg"]            ~= comp_obj_para;          ++obj_cite_number;          ++mkn; @@ -5596,7 +5589,7 @@ struct NotesSection {      assert(cntr >= previous_count);      previous_count=cntr;      assert( -      match(contents_am[cntr].text, +      (contents_am[cntr].text).match(        rgx.inline_notes_delimiter_al_regular_number_note)      );    } @@ -5606,8 +5599,7 @@ struct NotesSection {      auto munge = ObjInlineMarkupMunge();      foreach(        m; -      matchAll( -        contents_am[cntr].text, +      (contents_am[cntr].text).matchAll(          rgx.inline_notes_delimiter_al_regular_number_note        )      ) { @@ -5650,8 +5642,8 @@ struct NotesSection {    body {      string[][string] endnotes_;      if (object_notes.length > 1) { -      endnotes_["notes"] = (split(object_notes["notes"], rgx.break_string))[0..$-1]; -      endnotes_["anchor"] = (split(object_notes["anchor"], rgx.break_string))[0..$-1]; +      endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; +      endnotes_["anchor"] = (object_notes["anchor"].split(rgx.break_string))[0..$-1];      } else {        endnotes_["notes"] = [];        endnotes_["anchor"] = []; @@ -5740,8 +5732,8 @@ struct NotesSection {        comp_obj_endnote_.indent_base           = 0;        comp_obj_endnote_.bullet                = false;        foreach (i, endnote; endnotes_["notes"]) { -        auto     m                            = (matchFirst(endnote, rgx.note_ref)); -        string   notenumber                   = to!string(m.captures[1]); +        auto     m                            = endnote.matchFirst(rgx.note_ref); +        string   notenumber                   = m.captures[1].to!string;          string   anchor_tag                   = "note_" ~ notenumber;          comp_obj_endnote_.anchor_tags         = [ endnotes_["anchor"][i] ];          comp_obj_endnote_.inline_links        = true; @@ -5930,12 +5922,12 @@ struct NodeStructureMetadata {        static assert(is(typeof(is_)                == string));      }      assert(is_ != "heading"); -    assert(to!int(obj_cite_number_) >= 0); +    assert(obj_cite_number_.to!int >= 0);    }    body {      assert(is_ != "heading"); // should not be necessary -    assert(to!int(obj_cite_number_) >= 0); // should not be necessary -    int obj_cite_number=to!int(obj_cite_number_); +    assert(obj_cite_number_.to!int >= 0); // should not be necessary +    int obj_cite_number = obj_cite_number_.to!int;      if (lv7 > State.off) {        p_["lev_markup_number"] = DocStructMarkupHeading.h_text_4;        p_["obj_cite_number"] = lv7; @@ -5953,14 +5945,14 @@ struct NodeStructureMetadata {      comp_obj_location                       = comp_obj_location.init;      comp_obj_location.is_a                  = is_;      comp_obj_location.ocn                   = obj_cite_number_; -    comp_obj_location.segment_anchor_tag    = to!string(segment_anchor_tag); +    comp_obj_location.segment_anchor_tag    = segment_anchor_tag.to!string;      comp_obj_location.parent_ocn            = p_["obj_cite_number"];      comp_obj_location.parent_lev_markup     = p_["lev_markup_number"];      debug(node) { -      if (match(lev_markup_number, rgx.levels_numbered_headings)) { -        writeln("x ", to!string(_node)); +      if (lev_markup_number.match(rgx.levels_numbered_headings)) { +        writeln("x ", _node.to!string);        } else { -        writeln("- ", to!string(_node)); +        writeln("- ", _node.to!string);        }      }      assert(comp_obj_location.parent_lev_markup >= 4); @@ -6009,18 +6001,18 @@ struct NodeStructureMetadata {      assert(is_ == "heading");      assert(to!int(obj_cite_number_) >= 0);      assert( -      match(lev_markup_number, rgx.levels_numbered), -      ("not a valid heading level: " ~ lev_markup_number ~ " at " ~ to!string(obj_cite_number_)) +      lev_markup_number.match(rgx.levels_numbered), +      ("not a valid heading level: " ~ lev_markup_number ~ " at " ~ obj_cite_number_.to!string)      ); -    if (match(lev_markup_number, rgx.levels_numbered)) { -      if (to!int(lev_markup_number) == 0) { -        assert(to!int(obj_cite_number_) == 1); +    if (lev_markup_number.match(rgx.levels_numbered)) { +      if (lev_markup_number.to!int == 0) { +        assert(obj_cite_number_.to!int == 1);        }      }    }    body { -    int obj_cite_number = to!int(obj_cite_number_); -    switch (to!int(lev_markup_number)) { +    int obj_cite_number = obj_cite_number_.to!int; +    switch (lev_markup_number.to!int) {      case 0:        lv = DocStructMarkupHeading.h_sect_A;        lv0 = obj_cite_number; @@ -6105,13 +6097,13 @@ struct NodeStructureMetadata {      _comp_obj_heading_.use                       = "body";      _comp_obj_heading_.is_of                     = "para";      _comp_obj_heading_.is_a                      = "heading"; -    _comp_obj_heading_.text                      = to!string(_text).strip; +    _comp_obj_heading_.text                      = _text.to!string.strip;      _comp_obj_heading_.ocn                       = obj_cite_number_; -    _comp_obj_heading_.obj_cite_number           = (obj_cite_number==0) ? "" : to!string(obj_cite_number); -    _comp_obj_heading_.segment_anchor_tag        = to!string(segment_anchor_tag); +    _comp_obj_heading_.obj_cite_number           = (obj_cite_number==0) ? "" : obj_cite_number.to!string; +    _comp_obj_heading_.segment_anchor_tag        = segment_anchor_tag.to!string;      _comp_obj_heading_.marked_up_level           = lev; -    _comp_obj_heading_.heading_lev_markup        = (!(lev_markup_number.empty) ? to!int(lev_markup_number) : 0); -    _comp_obj_heading_.heading_lev_collapsed     = (!(lev_collapsed_number.empty) ? to!int(lev_collapsed_number) : 0); +    _comp_obj_heading_.heading_lev_markup        = (!(lev_markup_number.empty) ? lev_markup_number.to!int : 0); +    _comp_obj_heading_.heading_lev_collapsed     = (!(lev_collapsed_number.empty) ? lev_collapsed_number.to!int : 0);      _comp_obj_heading_.parent_ocn                = p_["obj_cite_number"];      _comp_obj_heading_.parent_lev_markup         = p_["lev_markup_number"];      _comp_obj_heading_.heading_ancestors_text    = lv_ancestors; @@ -6122,18 +6114,18 @@ struct NodeStructureMetadata {      _comp_obj_heading_.inline_notes_star         = flag_notes_star;      _comp_obj_heading_.inline_links              = flag_links;      debug(node) { -      if (match(lev_markup_number, rgx.levels_numbered_headings)) { -        writeln("* ", to!string(_node)); +      if (lev_markup_number.match(rgx.levels_numbered_headings)) { +        writeln("* ", _node.to!string);        }      }      debug(nodeheading) { -      if (match(lev_markup_number, rgx.levels_numbered_headings)) { -        writeln("* ", to!string(_node)); +      if (lev_markup_number.match(rgx.levels_numbered_headings)) { +        writeln("* ", _node.to!string);        }      }      assert(_comp_obj_heading_.parent_lev_markup <= 7);      assert(_comp_obj_heading_.parent_ocn >= 0); -    if (match(lev_markup_number, rgx.levels_numbered_headings)) { +    if (lev_markup_number.match(rgx.levels_numbered_headings)) {        assert(_comp_obj_heading_.heading_lev_markup <= 7);        assert(_comp_obj_heading_.ocn >= 0);        if (_comp_obj_heading_.parent_lev_markup > 0) { @@ -6263,7 +6255,7 @@ auto assertions_doc_structure(O,Lv)(    }    if (lv["h7"] == State.off) {    } -  switch (to!string(an_object["lev"])) { +  switch ((an_object["lev"]).to!string) {    case "A":      if (lv["h0"] == State.off) {        assert(lv["h1"] == State.off); diff --git a/org/ao_read_source_files.org b/org/ao_read_source_files.org index a870a57..fa3da1a 100644 --- a/org/ao_read_source_files.org +++ b/org/ao_read_source_files.org @@ -55,7 +55,7 @@ final string ConfigIn(C,E)(C conf_sdl, E env) {          debug(configfile) {            writeln(conf_file);          } -        config_file_str = readText(conf_file); +        config_file_str = conf_file.readText;          break;        }      } @@ -193,7 +193,7 @@ template SiSUrawMarkupContent() {          raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);        auto header_raw = t[0];        auto sourcefile_body_content = t[1]; -      if (match(fn_src, rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise +      if (fn_src.match(rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise          auto ins = Inserts();          auto tu =            ins.scan_master_src_for_insert_files_and_import_content(sourcefile_body_content, fn_src); @@ -260,7 +260,7 @@ final private string readInMarkupSource(in char[] fn_src) {    string source_txt_str;    try {      if (exists(fn_src)) { -      source_txt_str = readText(fn_src); +      source_txt_str = fn_src.readText;      }    }    catch (ErrnoException ex) { @@ -292,12 +292,13 @@ split is on first match of level A~ (which is required)  final private char[][] header0Content1(in string src_text) {    /+ split string on _first_ match of "^:?A~\s" into [header, content] array/tuple +/    char[][] header_and_content; -  auto m = matchFirst(cast(char[]) src_text, rgx.heading_a); +  auto m = (cast(char[]) src_text).matchFirst(rgx.heading_a);    header_and_content ~= m.pre;    header_and_content ~= m.hit ~ m.post;    assert(header_and_content.length == 2, -    "document markup is broken, header body split == " ~ to!string(header_and_content.length) ~ -    "; (header / body array split should == 2 (split is on level A~))" +    "document markup is broken, header body split == " +    ~ header_and_content.length.to!string +    ~ "; (header / body array split should == 2 (split is on level A~))"    );    return header_and_content;  } @@ -309,7 +310,7 @@ final private char[][] header0Content1(in string src_text) {  #+BEGIN_SRC d  final private char[][] markupSourceLineArray(in char[] src_text) {    char[][] source_line_arr = -    split(cast(char[]) src_text, rgx.newline_eol_strip_preceding); +    (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding);    return source_line_arr;  }  #+END_SRC @@ -325,7 +326,7 @@ final private char[][] markupSourceLineArray(in char[] src_text) {  auto markupSourceReadIn(in string fn_src) {    auto rgx = Rgx();    enforce( -    match(fn_src, rgx.src_pth), +    fn_src.match(rgx.src_pth),      "not a sisu markup filename"    );    auto source_txt_str = readInMarkupSource(fn_src); @@ -361,7 +362,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray(    Regex!(char) rgx_file  ) {    enforce( -    match(fn_src, rgx_file), +    fn_src.match(rgx_file),      "not a sisu markup filename"    );    auto source_txt_str = readInMarkupSource(fn_src); @@ -380,7 +381,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray(  #+BEGIN_SRC d  char[][] contents_insert;  auto type1 = flags_type_init; -auto fn_pth_full = match(fn_src, rgx.src_pth); +auto fn_pth_full = fn_src.match(rgx.src_pth);  auto markup_src_file_path = fn_pth_full.captures[1];  #+END_SRC @@ -391,11 +392,11 @@ auto markup_src_file_path = fn_pth_full.captures[1];  if (type1["curly_code"] == 1) {    type1["header_make"] = 0;    type1["header_meta"] = 0; -  if (matchFirst(line, rgx.block_curly_code_close)) { +  if (line.matchFirst(rgx.block_curly_code_close)) {      type1["curly_code"] = 0;    }    contents_insert ~= line; -} else if (matchFirst(line, rgx.block_curly_code_open)) { +} else if (line.matchFirst(rgx.block_curly_code_open)) {    type1["curly_code"] = 1;    type1["header_make"] = 0;    type1["header_meta"] = 0; @@ -403,28 +404,28 @@ if (type1["curly_code"] == 1) {  } else if (type1["tic_code"] == 1) {    type1["header_make"] = 0;    type1["header_meta"] = 0; -  if (matchFirst(line, rgx.block_tic_close)) { +  if (line.matchFirst(rgx.block_tic_close)) {      type1["tic_code"] = 0;    }    contents_insert ~= line; -} else if (matchFirst(line, rgx.block_tic_code_open)) { +} else if (line.matchFirst(rgx.block_tic_code_open)) {    type1["tic_code"] = 1;    type1["header_make"] = 0;    type1["header_meta"] = 0;    contents_insert ~= line;  } else if (    (type1["header_make"] == 1) -  && matchFirst(line, rgx.native_header_sub) +  && line.matchFirst(rgx.native_header_sub)  ) {      type1["header_make"] = 1;      type1["header_meta"] = 0;  } else if (    (type1["header_meta"] == 1) -  && matchFirst(line, rgx.native_header_sub) +  && line.matchFirst(rgx.native_header_sub)  ) {      type1["header_meta"] = 1;      type1["header_make"] = 0; -} else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) { +} else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) {    type1["header_make"] = 0;    type1["header_meta"] = 0;    auto insert_fn = m.captures[2]; @@ -474,7 +475,7 @@ return contents_insert;  #+BEGIN_SRC d  char[][] contents;  auto type = flags_type_init; -auto fn_pth_full = match(fn_src, rgx.src_pth); +auto fn_pth_full = fn_src.match(rgx.src_pth);  auto markup_src_file_path = fn_pth_full.captures[1];  string[] insert_file_list =[];  #+END_SRC @@ -484,22 +485,22 @@ string[] insert_file_list =[];  #+name: ao_master_doc_scan_for_insert_filenames_loop  #+BEGIN_SRC d  if (type["curly_code"] == 1) { -  if (matchFirst(line, rgx.block_curly_code_close)) { +  if (line.matchFirst(rgx.block_curly_code_close)) {      type["curly_code"] = 0;    }    contents ~= line; -} else if (matchFirst(line, rgx.block_curly_code_open)) { +} else if (line.matchFirst(rgx.block_curly_code_open)) {    type["curly_code"] = 1;    contents ~= line;  } else if (type["tic_code"] == 1) { -  if (matchFirst(line, rgx.block_tic_close)) { +  if (line.matchFirst(rgx.block_tic_close)) {      type["tic_code"] = 0;    }    contents ~= line; -} else if (matchFirst(line, rgx.block_tic_code_open)) { +} else if (line.matchFirst(rgx.block_tic_code_open)) {    type["tic_code"] = 1;    contents ~= line; -} else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) { +} else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) {    auto insert_fn = m.captures[2];    auto insert_sub_pth = m.captures[1];    auto fn_src_insert = @@ -507,7 +508,7 @@ if (type["curly_code"] == 1) {      insert_file_list ~= to!string(fn_src_insert);    auto raw = MarkupRawUnit();    /+ TODO +/ -  if (auto ma = match(line, rgx.src_fn_text)) { +  if (auto ma = line.match(rgx.src_fn_text)) {      /+ .sst when inserted, not used: headers and heading level ^:?A~ so remove +/      writeln(__LINE__); writeln(ma);    } diff --git a/org/output.org b/org/output.org index e8ed16e..657b32f 100644 --- a/org/output.org +++ b/org/output.org @@ -171,26 +171,26 @@ auto pth_sisupod = SiSUpodPaths();  mixin SiSUlanguageCodes;  auto lang = Lang();  auto rgx = Rgx(); -assert (match(doc_matters.source_filename, rgx.src_fn)); +assert (doc_matters.source_filename.match(rgx.src_fn));  #+END_SRC  #+name: source_sisupod_mkdirs  #+BEGIN_SRC d  /+ create directory structure +/  if (!exists(pth_sisupod.doc(doc_matters.source_filename))) { -  mkdirRecurse(pth_sisupod.doc(doc_matters.source_filename)); +  pth_sisupod.doc(doc_matters.source_filename).mkdirRecurse;  }  if (!exists(pth_sisupod.conf(doc_matters.source_filename))) { -  mkdirRecurse(pth_sisupod.conf(doc_matters.source_filename)); +  pth_sisupod.conf(doc_matters.source_filename).mkdirRecurse;  }  if (!exists(pth_sisupod.css(doc_matters.source_filename))) { -  mkdirRecurse(pth_sisupod.css(doc_matters.source_filename)); +  pth_sisupod.css(doc_matters.source_filename).mkdirRecurse;  }  if (!exists(pth_sisupod.image(doc_matters.source_filename))) { -  mkdirRecurse(pth_sisupod.image(doc_matters.source_filename)); +  pth_sisupod.image(doc_matters.source_filename).mkdirRecurse;  }  if (!exists(pth_sisupod.doc_lng(doc_matters.source_filename, doc_matters.language))) { -  mkdirRecurse(pth_sisupod.doc_lng(doc_matters.source_filename, doc_matters.language)); +  pth_sisupod.doc_lng(doc_matters.source_filename, doc_matters.language).mkdirRecurse;  }  #+END_SRC @@ -228,8 +228,7 @@ if (doc_matters.file_insert_list.length > 0) {        ));      }      if (exists(insert_file)) { -      copy( -        insert_file, +      insert_file.copy(          pth_sisupod.fn_doc_insert(            doc_matters.source_filename,            insert_file, @@ -246,8 +245,7 @@ foreach (image; doc_matters.image_list) {      );    }    if (exists("_sisu/image/"~ image)) { -    copy( -      ("_sisu/image/"~ image), +    ("_sisu/image/"~ image).copy(        (pth_sisupod.image(doc_matters.source_filename) ~ "/" ~ image)      );    } @@ -442,7 +440,7 @@ auto inline_links(O)(  ) {    if (obj.inline_links) {      if ((seg_scroll == "scroll") -    && match(_txt, rgx.mark_internal_site_lnk)) { +    && _txt.match(rgx.mark_internal_site_lnk)) {        _txt = (_txt).replaceAll(          rgx.inline_seg_link,          "$1"); @@ -459,7 +457,7 @@ auto inline_links(O)(      );    }    debug(markup_links) { -    if ( match(_txt, rgx.inline_link)) { +    if (_txt.match(rgx.inline_link)) {        writeln(__LINE__,          " (missed) markup link identified (",          obj.inline_links, @@ -469,7 +467,7 @@ auto inline_links(O)(      }    }    debug(markup) { -    if ( match(_txt, rgx.inline_link)) { +    if (_txt.match(rgx.inline_link)) {        writeln(__LINE__,          " (missed) markup link identified (",          obj.inline_links, @@ -497,12 +495,12 @@ auto inline_notes_scroll(O)(      );    }    debug(markup_endnotes) { -    if (match(_txt, rgx.inline_notes_delimiter_al_regular_number_note)) { +    if (_txt.match(rgx.inline_notes_delimiter_al_regular_number_note)) {        writeln(__LINE__, " (missed) markup endnote: ", obj.is_a, ": ", obj.text);      }    }    debug(markup) { -    if (match(_txt, rgx.inline_notes_delimiter_al_regular_number_note)) { +    if (_txt.match(rgx.inline_notes_delimiter_al_regular_number_note)) {        writeln(__LINE__, " (missed) markup endnote: ", obj.is_a, ": ", obj.text);      }    } @@ -528,7 +526,7 @@ auto inline_notes_seg(O)(    string[] _endnotes;    if (obj.inline_notes_reg) {      /+ need markup for text, and separated footnote +/ -    foreach(m; matchAll(_txt, rgx.inline_notes_delimiter_al_regular_number_note)) { +    foreach(m; _txt.matchAll(rgx.inline_notes_delimiter_al_regular_number_note)) {        _endnotes ~= format(          "%s%s%s%s\n  %s%s%s%s%s\n  %s\n%s",          "<p class=\"endnote\">", @@ -548,7 +546,7 @@ auto inline_notes_seg(O)(        rgx.inline_notes_delimiter_al_regular_number_note,        ("<a href=\"#note_$1\"><note id=\"noteref_$1\"> <sup>$1</sup> </note></a>")      ); -  } else if (match(_txt, rgx.inline_notes_delimiter_al_regular_number_note)) { +  } else if (_txt.match(rgx.inline_notes_delimiter_al_regular_number_note)) {      debug(markup) {        writeln(__LINE__, " endnote: ", obj.is_a, ": ", obj.text);      } @@ -1050,7 +1048,7 @@ void scroll_write_output(Fn,C)(    auto pth_html = HtmlPaths();    try {      if (!exists(pth_html.base)) { -      mkdirRecurse(pth_html.base); +      pth_html.base.mkdirRecurse;      }      auto f = File(pth_html.fn_scroll(fn_src), "w");      foreach (o; doc) { @@ -1291,10 +1289,10 @@ void seg_write_output(M,D,E)(    mixin SiSUpaths;    auto pth_html = HtmlPaths();    auto xhtml_format = outputXHTMLs(); -  auto m = matchFirst(doc_matters.source_filename, rgx.src_fn); +  auto m = doc_matters.source_filename.matchFirst(rgx.src_fn);    try {      if (!exists(pth_html.seg(doc_matters.source_filename))) { -      mkdirRecurse(pth_html.seg(doc_matters.source_filename)); +      pth_html.seg(doc_matters.source_filename).mkdirRecurse;      }      foreach (seg_filename; doc_matters.segnames) {        auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w"); @@ -2155,7 +2153,7 @@ auto css_write() {    auto pth_css_fn= pth_css ~ "/html.css";    try {      if (!exists(pth_css)) { -      mkdirRecurse(pth_css); +      pth_css.mkdirRecurse;      }      auto f = File(pth_css_fn, "w");      f.writeln(html_css); @@ -2357,7 +2355,6 @@ void outputEPub(D,I)(    mixin SiSUoutputRgxInit;    auto xhtml_format = outputXHTMLs();    auto rgx = Rgx(); -  // string[] toc;    string[][string] doc_epub;    string[][string] doc_epub_endnotes;    string[] doc; @@ -2593,13 +2590,13 @@ void epub_write_output_files(M,D,E,Mt,Mic,Ot,Oc)(    auto xhtml_format = outputXHTMLs();    try {      if (!exists(pth_epub.doc_meta_inf(doc_matters.source_filename))) { -      mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename)); +      pth_epub.doc_meta_inf(doc_matters.source_filename).mkdirRecurse;      }      if (!exists(pth_epub.doc_oebps_css(doc_matters.source_filename))) { -      mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename)); +      pth_epub.doc_oebps_css(doc_matters.source_filename).mkdirRecurse;      }      if (!exists(pth_epub.doc_oebps_image(doc_matters.source_filename))) { -      mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename)); +      pth_epub.doc_oebps_image(doc_matters.source_filename).mkdirRecurse;      }      /+ OEBPS/[segments].xhtml +/      foreach (seg_filename; doc_matters.segnames) { @@ -2627,8 +2624,8 @@ void epub_write_output_files(M,D,E,Mt,Mic,Ot,Oc)(      f.writeln(oebps_content_opf);      foreach (image; doc_matters.image_list) {        if (exists("_sisu/image/"~ image)) { -        copy(("_sisu/image/"~ image), -          ((pth_epub.doc_oebps_image(doc_matters.source_filename)) ~ "/" ~ image)); +        ("_sisu/image/"~ image) +        .copy((pth_epub.doc_oebps_image(doc_matters.source_filename)) ~ "/" ~ image);        }      }    } diff --git a/org/sdp.org b/org/sdp.org index ce0aa0d..3332107 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -23,7 +23,7 @@ struct Version {    int minor;    int patch;  } -enum ver = Version(0, 13, 5); +enum ver = Version(0, 13, 6);  #+END_SRC  * 1. sdp (sisu document parser)                                         :sdp: @@ -306,9 +306,9 @@ if (helpInfo.helpWanted) {    defaultGetoptPrinter("Some information about the program.", helpInfo.options);  }  foreach(arg; args) { -  if (match(arg, rgx.flag_action)) { +  if (arg.match(rgx.flag_action)) {      flag_action ~= " " ~ arg;   // flags not taken by getopt -  } else if (match(arg, rgx.src_pth)) { +  } else if (arg.match(rgx.src_pth)) {      fns_src ~= arg;             // gather input markup source file names for processing    } else {                      // anything remaining, unused      arg_unrecognized ~= " " ~ arg; @@ -361,7 +361,7 @@ scope(failure) {    }  }  enforce( -  match(fn_src, rgx.src_pth), +  fn_src.match(rgx.src_pth),    "not a sisu markup filename"  );  #+END_SRC @@ -580,7 +580,7 @@ struct DocumentMatters {    }    auto language() {      string _k; -    if (auto m = match(fn_src, rgx.language_code_and_filename)) { +    if (auto m = fn_src.match(rgx.language_code_and_filename)) {        _k = m.captures[1];      } else {        _k = "en";  | 
