diff options
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | dub.sdl | 2 | ||||
| -rw-r--r-- | dub.selections.json | 2 | ||||
| -rw-r--r-- | makefile | 7 | ||||
| -rw-r--r-- | maker.org | 19 | ||||
| -rw-r--r-- | org/meta_read_source_files.org | 12 | ||||
| -rw-r--r-- | org/output_sqlite.org | 10 | ||||
| -rw-r--r-- | org/output_sqlite_discrete.org | 79 | ||||
| -rw-r--r-- | src/sdp/meta/read_config_files.d | 8 | ||||
| -rw-r--r-- | src/sdp/meta/read_source_files.d | 4 | ||||
| -rw-r--r-- | src/sdp/output/sqlite_discrete.d | 73 | 
11 files changed, 132 insertions, 87 deletions
| @@ -33,6 +33,9 @@  .dub/**  .reggae/**  tmp/** +*_.org +*_.d +*_.txt  *_  *~  \#* @@ -10,7 +10,7 @@ stringImportPaths "./views"  buildRequirements "allowWarnings"  dependency        "toml"      version="~>0.4.0-rc.2" # https://code.dlang.org/packages/toml       https://github.com/toml-lang/toml/wiki  dependency        "toml:json" version="~>0.4.0-rc.2" -dependency        "d2sqlite3" version="~>0.13.1"     # https://code.dlang.org/packages/d2sqlite3  http://biozic.github.io/d2sqlite3/d2sqlite3.html +dependency        "d2sqlite3" version="~>0.16.0"     # https://code.dlang.org/packages/d2sqlite3  http://biozic.github.io/d2sqlite3/d2sqlite3.html  subconfiguration  "d2sqlite3" "all-included"  dependency        "archive"   version="~>0.6.0"      # http://code.dlang.org/packages/archive     https://github.com/rcythr/archive  configuration "reggae" { diff --git a/dub.selections.json b/dub.selections.json index 4ae7074..dda658d 100644 --- a/dub.selections.json +++ b/dub.selections.json @@ -2,7 +2,7 @@  	"fileVersion": 1,  	"versions": {  		"archive": "0.6.0", -		"d2sqlite3": "0.13.1", +		"d2sqlite3": "0.16.0",  		"libinputvisitor": "1.2.2",  		"sdlang-d": "0.10.2",  		"taggedalgebraic": "0.10.9", @@ -15,8 +15,11 @@ EMACSLISP_ORG_CONTRIB=~/.emacs.d/elpa/org-plus-contrib-$($(shell echo $(ORG_CONT  ORGFILELIST=$(shell echo `ls -1 maker.org org/*.org`)  ORGFILES=""  ORGDIR :=$(shell echo `pwd`) +SiSU_MARKUP_SAMPLES_FIND_PODS= \ +find data/sisupod -maxdepth 2 -name sisupod.manifest | cut -f 1-3 -d / | sort +  SiSU_MARKUP_SAMPLES_PODS_FOUND= \ -find data/sisupod -maxdepth 2 -name sisupod.manifest | cut -f 1-3 -d / | sort | xargs +$(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs  SiSU_MARKUP_SAMPLES_POD = \  data/sisupod/accelerando.charles_stross \ @@ -175,6 +178,8 @@ ragga:  	reggae -b binary  	reggae -b ninja  	build +find_pods: +	$(SiSU_MARKUP_SAMPLES_FIND_PODS)  dmd_testrun_find:  	./bin/sdp-dmd -v --source --html --epub --sqlite-discrete \  --sqlite-create --sqlite-update \ @@ -57,8 +57,11 @@ ORGDIR :=$(shell echo `pwd`)  **** pods  #+BEGIN_SRC makefile :tangle makefile +SiSU_MARKUP_SAMPLES_FIND_PODS= \ +find data/sisupod -maxdepth 2 -name sisupod.manifest | cut -f 1-3 -d / | sort +  SiSU_MARKUP_SAMPLES_PODS_FOUND= \ -find data/sisupod -maxdepth 2 -name sisupod.manifest | cut -f 1-3 -d / | sort | xargs +$(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs  SiSU_MARKUP_SAMPLES_POD = \  data/sisupod/accelerando.charles_stross \ @@ -382,6 +385,13 @@ ragga:  *** testrun (program against document markup)  **** pods +****** find files + +#+BEGIN_SRC makefile :tangle makefile +find_pods: +	$(SiSU_MARKUP_SAMPLES_FIND_PODS) +#+END_SRC +  ***** dmd  ****** find files @@ -805,7 +815,7 @@ stringImportPaths "./views"  buildRequirements "allowWarnings"  dependency        "toml"      version="~>0.4.0-rc.2" # https://code.dlang.org/packages/toml       https://github.com/toml-lang/toml/wiki  dependency        "toml:json" version="~>0.4.0-rc.2" -dependency        "d2sqlite3" version="~>0.13.1"     # https://code.dlang.org/packages/d2sqlite3  http://biozic.github.io/d2sqlite3/d2sqlite3.html +dependency        "d2sqlite3" version="~>0.16.0"     # https://code.dlang.org/packages/d2sqlite3  http://biozic.github.io/d2sqlite3/d2sqlite3.html  subconfiguration  "d2sqlite3" "all-included"  dependency        "archive"   version="~>0.6.0"      # http://code.dlang.org/packages/archive     https://github.com/rcythr/archive  #+END_SRC @@ -1094,6 +1104,9 @@ mixin build!(_compile, _dub_conf);  .dub/**  .reggae/**  tmp/** +*_.org +*_.d +*_.txt  *_  *~  \#* @@ -1175,6 +1188,8 @@ time make ragga  time make restart  time make restart ldc  time make tangle ldc + +time make ldc_testrun_find_pod_epub  #+END_SRC  *** reggae diff --git a/org/meta_read_source_files.org b/org/meta_read_source_files.org index 0879ab5..ab73040 100644 --- a/org/meta_read_source_files.org +++ b/org/meta_read_source_files.org @@ -55,7 +55,7 @@ static template readConfigSite() {      auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site;      foreach(conf_fn; [_conf_file_details.config_filename_site_toml]) {        foreach(pth; possible_config_path_locations) { -        auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_fn)).array; +        auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;          conf_filename = conf_fn;          if (config_file_str.length > 0) {            // conf_filename = conf_fn; @@ -107,7 +107,7 @@ static template readConfigDoc() {      auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make;      foreach(conf_fn; [_conf_file_details.config_filename_document_toml]) {        foreach(pth; possible_config_path_locations) { -        auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_fn)).array; +        auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;          conf_filename = conf_fn;          if (config_file_str.length > 0) {            // conf_filename = conf_fn; @@ -163,7 +163,7 @@ static template configReadInSiteTOML() {        writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);      }      foreach(pth; possible_config_path_locations) { -      auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_toml)).array; +      auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;        if (config_file_str.length > 0) {          break;        } @@ -202,7 +202,7 @@ static template configReadInDocTOML() {        writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);      }      foreach(pth; possible_config_path_locations) { -      auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_toml)).array; +      auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;        if (config_file_str.length > 0) {          break;        } @@ -665,7 +665,7 @@ if (type["curly_code"] == 1) {    auto insert_sub_pth = m.captures[1];    auto fn_src_insert      = chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array; -    insert_file_list ~= to!string(fn_src_insert); +    insert_file_list ~= fn_src_insert.to!string;    auto raw = MarkupRawUnit();    /+ TODO +/    auto markup_sourcefile_insert_content @@ -682,7 +682,7 @@ if (type["curly_code"] == 1) {    auto contents_insert_tu = ins.scan_subdoc_source(      _opt_action,      markup_sourcefile_insert_content, -    to!string(fn_src_insert) +    fn_src_insert.to!string    );    contents ~= contents_insert_tu[0]; // images to extract for image list?    if (_opt_action.source || _opt_action.sisupod) { diff --git a/org/output_sqlite.org b/org/output_sqlite.org index 710e9df..82b4310 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -36,7 +36,7 @@ template SQLiteBuildTablesAndPopulate() {          mixin SiSUoutputRgxInit;          struct sqlite_format_and_load_objects {            <<sanitize_text_for_search>> -          <<sanitize_and_mmunge_inline_html>> +          <<sanitize_and_munge_inline_html>>            <<html_objects>>            <<sqlite_load_object>>            <<hub_format_and_sqlite_load_objects>> @@ -152,7 +152,7 @@ light html objects  ***** munge  ****** general munge (special characters, inline markup, move notes) -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  auto munge_html(O)(    auto return ref const O    obj, @@ -207,7 +207,7 @@ auto munge_html(O)(  ****** special characters -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_special_characters(string _txt){    _txt = (_txt) @@ -223,7 +223,7 @@ string html_special_characters(string _txt){  ****** special characters for code -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_special_characters_code(string _txt){    _txt = (_txt) @@ -238,7 +238,7 @@ string html_special_characters_code(string _txt){  ****** font_face -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_font_face(string _txt){    _txt = (_txt) diff --git a/org/output_sqlite_discrete.org b/org/output_sqlite_discrete.org index ecf8033..c659441 100644 --- a/org/output_sqlite_discrete.org +++ b/org/output_sqlite_discrete.org @@ -36,7 +36,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {          mixin SiSUoutputRgxInit;          struct sqlite_format_and_load_objects {            <<sanitize_text_for_search>> -          <<sanitize_and_mmunge_inline_html>> +          <<sanitize_and_munge_inline_html>>            <<html_objects>>            <<sqlite_load_object>>            <<hub_format_and_sqlite_load_objects>> @@ -49,7 +49,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {          auto ref              I    doc_matters,        ) {          <<sqlite_db_initialize>> -        <<sqlite_table_initialize>> +          <<sqlite_table_initialize>>            <<sqlite_create_table_metadata_and_src_txt>>            /* */<<sqlite_create_table_urls>>            <<sqlite_create_table_objects>> @@ -152,13 +152,13 @@ light html objects  ***** munge  ****** general munge (special characters, inline markup, move notes) -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  auto munge_html(O)(    auto return ref const O    obj,  ) {    string _html_special_characters(string _txt){ -    _txt = (_txt) +    _txt = _txt        .replaceAll(rgx.xhtml_ampersand,    "&")        .replaceAll(rgx.xhtml_quotation,    """)        .replaceAll(rgx.xhtml_less_than,    "<") @@ -168,17 +168,17 @@ auto munge_html(O)(      return _txt;    }    string _html_font_face(string _txt){ -    _txt = (_txt) -      .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>")) -      .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) -      .replaceAll(rgx.inline_underscore,  ("<u>$1</u>")) -      .replaceAll(rgx.inline_italics,     ("<i>$1</i>")) -      .replaceAll(rgx.inline_superscript, ("<sup>$1</sup>")) -      .replaceAll(rgx.inline_subscript,   ("<sub>$1</sub>")) -      .replaceAll(rgx.inline_strike,      ("<del>$1</del>")) -      .replaceAll(rgx.inline_insert,      ("<ins>$1</ins>")) -      .replaceAll(rgx.inline_mono,        ("<tt>$1</tt>")) -      .replaceAll(rgx.inline_cite,        ("<cite>$1</cite>")); +    _txt = _txt +      .replaceAll(rgx.inline_emphasis,    "<em>$1</em>") +      .replaceAll(rgx.inline_bold,        "<b>$1</b>") +      .replaceAll(rgx.inline_underscore,  "<u>$1</u>") +      .replaceAll(rgx.inline_italics,     "<i>$1</i>") +      .replaceAll(rgx.inline_superscript, "<sup>$1</sup>") +      .replaceAll(rgx.inline_subscript,   "<sub>$1</sub>") +      .replaceAll(rgx.inline_strike,      "<del>$1</del>") +      .replaceAll(rgx.inline_insert,      "<ins>$1</ins>") +      .replaceAll(rgx.inline_mono,        "<tt>$1</tt>") +      .replaceAll(rgx.inline_cite,        "<cite>$1</cite>");      return _txt;    }    string _notes; @@ -207,7 +207,7 @@ auto munge_html(O)(  ****** special characters -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_special_characters(string _txt){    _txt = (_txt) @@ -223,7 +223,7 @@ string html_special_characters(string _txt){  ****** special characters for code -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_special_characters_code(string _txt){    _txt = (_txt) @@ -238,20 +238,20 @@ string html_special_characters_code(string _txt){  ****** font_face -#+name: sanitize_and_mmunge_inline_html +#+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d  string html_font_face(string _txt){    _txt = (_txt) -    .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>")) -    .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) -    .replaceAll(rgx.inline_underscore,  ("<u>$1</u>")) -    .replaceAll(rgx.inline_italics,     ("<i>$1</i>")) -    .replaceAll(rgx.inline_superscript, ("<sup>$1</sup>")) -    .replaceAll(rgx.inline_subscript,   ("<sub>$1</sub>")) -    .replaceAll(rgx.inline_strike,      ("<del>$1</del>")) -    .replaceAll(rgx.inline_insert,      ("<ins>$1</ins>")) -    .replaceAll(rgx.inline_mono,        ("<tt>$1</tt>")) -    .replaceAll(rgx.inline_cite,        ("<cite>$1</cite>")); +    .replaceAll(rgx.inline_emphasis,    "<em>$1</em>") +    .replaceAll(rgx.inline_bold,        "<b>$1</b>") +    .replaceAll(rgx.inline_underscore,  "<u>$1</u>") +    .replaceAll(rgx.inline_italics,     "<i>$1</i>") +    .replaceAll(rgx.inline_superscript, "<sup>$1</sup>") +    .replaceAll(rgx.inline_subscript,   "<sub>$1</sub>") +    .replaceAll(rgx.inline_strike,      "<del>$1</del>") +    .replaceAll(rgx.inline_insert,      "<ins>$1</ins>") +    .replaceAll(rgx.inline_mono,        "<tt>$1</tt>") +    .replaceAll(rgx.inline_cite,        "<cite>$1</cite>");    return _txt;  }  #+END_SRC @@ -413,7 +413,7 @@ auto html_table(O)(      auto return ref const O    obj,      string                     _txt,    ) { -    string[] _table_rows = (_txt).split(rgx.table_delimiter_row); +    string[] _table_rows = _txt.split(rgx.table_delimiter_row);      string[] _table_cols;      string _table;      string _tablenote; @@ -429,9 +429,17 @@ auto html_table(O)(              string _align = ("style=\"text-align:"              ~ ((obj.table_column_aligns[col_idx] == "l")              ? "left\"" : "right\"")); -            _table ~= "<" ~ _col_is ~ " width=\"" ~ obj.table_column_widths[col_idx].to!string ~ "%\" " ~ _align ~ ">"; +            _table ~= "<" +              ~ _col_is +              ~ " width=\"" +              ~ obj.table_column_widths[col_idx].to!string +              ~ "%\" " +              ~ _align +              ~ ">";              _table ~= cell; -            _table ~= "</" ~ _col_is ~ ">"; +            _table ~= "</" +              ~ _col_is +              ~ ">";            }          }          _table ~= "</tr>"; @@ -480,6 +488,7 @@ db.run("  DROP TABLE IF EXISTS metadata_and_text;  DROP TABLE IF EXISTS doc_objects;  DROP TABLE IF EXISTS urls; +BEGIN;  #+END_SRC  *******  1. create tables @@ -607,13 +616,14 @@ CREATE TABLE doc_objects (    digest_clean                     CHAR(256),    digest_all                       CHAR(256),    types                            CHAR(1) NULL -) +);  #+END_SRC  ****** d }  #+name: sqlite_close_initialize  #+BEGIN_SRC d +  COMMIT  ");  #+END_SRC @@ -915,7 +925,7 @@ insert_metadata.inject(  #+name: sqlite_insert_doc_objects  #+BEGIN_SRC d -Statement insert_doc_objects = db.prepare(" +Statement _insert_doc_objects = db.prepare("  #+END_SRC  ********* sql insert into @@ -1010,7 +1020,7 @@ either:  #+name: sqlite_insert_doc_objects  #+BEGIN_SRC d  "); -return insert_doc_objects; +return _insert_doc_objects;  #+END_SRC  *******  TODO (within loop not here - insert doc objects @@ -1440,6 +1450,7 @@ foreach (part; doc_parts) {      insert_doc_objects.execute(); insert_doc_objects.reset();    }  } +insert_doc_objects.finalize();  #+END_SRC  * __END__ diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d index 74c5a12..56a2bf8 100644 --- a/src/sdp/meta/read_config_files.d +++ b/src/sdp/meta/read_config_files.d @@ -20,7 +20,7 @@ static template configReadInSiteTOML() {        writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);      }      foreach(pth; possible_config_path_locations) { -      auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_toml)).array; +      auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;        if (config_file_str.length > 0) {          break;        } @@ -57,7 +57,7 @@ static template configReadInDocTOML() {        writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);      }      foreach(pth; possible_config_path_locations) { -      auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_toml)).array; +      auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;        if (config_file_str.length > 0) {          break;        } @@ -110,7 +110,7 @@ static template readConfigSite() {      auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site;      foreach(conf_fn; [_conf_file_details.config_filename_site_toml]) {        foreach(pth; possible_config_path_locations) { -        auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_fn)).array; +        auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;          conf_filename = conf_fn;          if (config_file_str.length > 0) {            // conf_filename = conf_fn; @@ -160,7 +160,7 @@ static template readConfigDoc() {      auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make;      foreach(conf_fn; [_conf_file_details.config_filename_document_toml]) {        foreach(pth; possible_config_path_locations) { -        auto conf_file = asNormalizedPath(chainPath(to!string(pth), conf_fn)).array; +        auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;          conf_filename = conf_fn;          if (config_file_str.length > 0) {            // conf_filename = conf_fn; diff --git a/src/sdp/meta/read_source_files.d b/src/sdp/meta/read_source_files.d index 5c7d83b..135d8e8 100644 --- a/src/sdp/meta/read_source_files.d +++ b/src/sdp/meta/read_source_files.d @@ -289,7 +289,7 @@ static template SiSUrawMarkupContent() {            auto insert_sub_pth = m.captures[1];            auto fn_src_insert              = chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array; -            insert_file_list ~= to!string(fn_src_insert); +            insert_file_list ~= fn_src_insert.to!string;            auto raw = MarkupRawUnit();            /+ TODO +/            auto markup_sourcefile_insert_content @@ -306,7 +306,7 @@ static template SiSUrawMarkupContent() {            auto contents_insert_tu = ins.scan_subdoc_source(              _opt_action,              markup_sourcefile_insert_content, -            to!string(fn_src_insert) +            fn_src_insert.to!string            );            contents ~= contents_insert_tu[0]; // images to extract for image list?            if (_opt_action.source || _opt_action.sisupod) { diff --git a/src/sdp/output/sqlite_discrete.d b/src/sdp/output/sqlite_discrete.d index b256389..541c4d8 100644 --- a/src/sdp/output/sqlite_discrete.d +++ b/src/sdp/output/sqlite_discrete.d @@ -56,7 +56,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {              auto return ref const O    obj,            ) {              string _html_special_characters(string _txt){ -              _txt = (_txt) +              _txt = _txt                  .replaceAll(rgx.xhtml_ampersand,    "&")                  .replaceAll(rgx.xhtml_quotation,    """)                  .replaceAll(rgx.xhtml_less_than,    "<") @@ -66,17 +66,17 @@ template SQLiteDiscreteBuildTablesAndPopulate() {                return _txt;              }              string _html_font_face(string _txt){ -              _txt = (_txt) -                .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>")) -                .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) -                .replaceAll(rgx.inline_underscore,  ("<u>$1</u>")) -                .replaceAll(rgx.inline_italics,     ("<i>$1</i>")) -                .replaceAll(rgx.inline_superscript, ("<sup>$1</sup>")) -                .replaceAll(rgx.inline_subscript,   ("<sub>$1</sub>")) -                .replaceAll(rgx.inline_strike,      ("<del>$1</del>")) -                .replaceAll(rgx.inline_insert,      ("<ins>$1</ins>")) -                .replaceAll(rgx.inline_mono,        ("<tt>$1</tt>")) -                .replaceAll(rgx.inline_cite,        ("<cite>$1</cite>")); +              _txt = _txt +                .replaceAll(rgx.inline_emphasis,    "<em>$1</em>") +                .replaceAll(rgx.inline_bold,        "<b>$1</b>") +                .replaceAll(rgx.inline_underscore,  "<u>$1</u>") +                .replaceAll(rgx.inline_italics,     "<i>$1</i>") +                .replaceAll(rgx.inline_superscript, "<sup>$1</sup>") +                .replaceAll(rgx.inline_subscript,   "<sub>$1</sub>") +                .replaceAll(rgx.inline_strike,      "<del>$1</del>") +                .replaceAll(rgx.inline_insert,      "<ins>$1</ins>") +                .replaceAll(rgx.inline_mono,        "<tt>$1</tt>") +                .replaceAll(rgx.inline_cite,        "<cite>$1</cite>");                return _txt;              }              string _notes; @@ -122,16 +122,16 @@ template SQLiteDiscreteBuildTablesAndPopulate() {            }            string html_font_face(string _txt){              _txt = (_txt) -              .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>")) -              .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) -              .replaceAll(rgx.inline_underscore,  ("<u>$1</u>")) -              .replaceAll(rgx.inline_italics,     ("<i>$1</i>")) -              .replaceAll(rgx.inline_superscript, ("<sup>$1</sup>")) -              .replaceAll(rgx.inline_subscript,   ("<sub>$1</sub>")) -              .replaceAll(rgx.inline_strike,      ("<del>$1</del>")) -              .replaceAll(rgx.inline_insert,      ("<ins>$1</ins>")) -              .replaceAll(rgx.inline_mono,        ("<tt>$1</tt>")) -              .replaceAll(rgx.inline_cite,        ("<cite>$1</cite>")); +              .replaceAll(rgx.inline_emphasis,    "<em>$1</em>") +              .replaceAll(rgx.inline_bold,        "<b>$1</b>") +              .replaceAll(rgx.inline_underscore,  "<u>$1</u>") +              .replaceAll(rgx.inline_italics,     "<i>$1</i>") +              .replaceAll(rgx.inline_superscript, "<sup>$1</sup>") +              .replaceAll(rgx.inline_subscript,   "<sub>$1</sub>") +              .replaceAll(rgx.inline_strike,      "<del>$1</del>") +              .replaceAll(rgx.inline_insert,      "<ins>$1</ins>") +              .replaceAll(rgx.inline_mono,        "<tt>$1</tt>") +              .replaceAll(rgx.inline_cite,        "<cite>$1</cite>");              return _txt;            }            auto html_heading(O)( @@ -223,7 +223,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {                auto return ref const O    obj,                string                     _txt,              ) { -              string[] _table_rows = (_txt).split(rgx.table_delimiter_row); +              string[] _table_rows = _txt.split(rgx.table_delimiter_row);                string[] _table_cols;                string _table;                string _tablenote; @@ -239,9 +239,17 @@ template SQLiteDiscreteBuildTablesAndPopulate() {                        string _align = ("style=\"text-align:"                        ~ ((obj.table_column_aligns[col_idx] == "l")                        ? "left\"" : "right\"")); -                      _table ~= "<" ~ _col_is ~ " width=\"" ~ obj.table_column_widths[col_idx].to!string ~ "%\" " ~ _align ~ ">"; +                      _table ~= "<" +                        ~ _col_is +                        ~ " width=\"" +                        ~ obj.table_column_widths[col_idx].to!string +                        ~ "%\" " +                        ~ _align +                        ~ ">";                        _table ~= cell; -                      _table ~= "</" ~ _col_is ~ ">"; +                      _table ~= "</" +                        ~ _col_is +                        ~ ">";                      }                    }                    _table ~= "</tr>"; @@ -461,9 +469,10 @@ template SQLiteDiscreteBuildTablesAndPopulate() {          auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));          // auto db = Database(":memory:"); // open database in memory          db.run(" -        DROP TABLE IF EXISTS metadata_and_text; -        DROP TABLE IF EXISTS doc_objects; -        DROP TABLE IF EXISTS urls; +          DROP TABLE IF EXISTS metadata_and_text; +          DROP TABLE IF EXISTS doc_objects; +          DROP TABLE IF EXISTS urls; +          BEGIN;            CREATE TABLE metadata_and_text (              tid                              BIGINT            PRIMARY KEY,              title                            VARCHAR(800)  NOT NULL, @@ -579,7 +588,8 @@ template SQLiteDiscreteBuildTablesAndPopulate() {              digest_clean                     CHAR(256),              digest_all                       CHAR(256),              types                            CHAR(1) NULL -          ) +          ); +          COMMIT          ");          Statement insert_metadata = db.prepare("            INSERT INTO metadata_and_text ( @@ -820,7 +830,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {          }          assert(db.totalChanges == 1);          // -        Statement insert_doc_objects = db.prepare(" +        Statement _insert_doc_objects = db.prepare("            INSERT INTO doc_objects (              lid,              metadata_tid, @@ -890,7 +900,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {              :types            )          "); -        return insert_doc_objects; +        return _insert_doc_objects;        }      }      template SQLiteObjectsLoop() { @@ -1074,6 +1084,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {              insert_doc_objects.execute(); insert_doc_objects.reset();            }          } +        insert_doc_objects.finalize();        }      }      SQLiteObjectsLoop!()(doc_matters.xml.keys_seq.sql); | 
