aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2018-04-11 21:37:45 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit096d12cb15e191dbd83f3399ba9bfef57bc9d826 (patch)
tree044ce3d7928f05fe1c991e9b6a99f2504e6671a3 /src/sdp
parentvarious minor (diff)
0.26.0 sqlite single statement insertion of objects
- d2sqlite3 db.run, begin commit used with insert statement - can be used after upstream fix that should follow d2sqlite3 0.16.0
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/meta/conf_make_meta_json.d2
-rw-r--r--src/sdp/meta/rgx.d5
-rw-r--r--src/sdp/output/paths_output.d38
-rw-r--r--src/sdp/output/paths_source.d14
-rw-r--r--src/sdp/output/rgx.d3
-rw-r--r--src/sdp/output/sqlite.d52
-rw-r--r--src/sdp/output/sqlite_discrete.d166
-rw-r--r--src/sdp/output/xmls.d2
-rwxr-xr-xsrc/sdp/sdp.d6
9 files changed, 140 insertions, 148 deletions
diff --git a/src/sdp/meta/conf_make_meta_json.d b/src/sdp/meta/conf_make_meta_json.d
index d88dda2..a496f07 100644
--- a/src/sdp/meta/conf_make_meta_json.d
+++ b/src/sdp/meta/conf_make_meta_json.d
@@ -66,7 +66,7 @@ static template contentJSONtoSiSUstruct() {
if ("footer" in _json.object["make"]
&& (_json.object["make"]["footer"].type().to!string == "STRING")
) {
- char[][] __match_footer_array
+ char[][] __match_footer_array
= (cast(char[]) _json.object["make"]["footer"].str)
.split(_rgx.make_heading_delimiter);
_struct_composite.make_str.footer = __match_footer_array.to!(string[]);
diff --git a/src/sdp/meta/rgx.d b/src/sdp/meta/rgx.d
index 1595263..0f60847 100644
--- a/src/sdp/meta/rgx.d
+++ b/src/sdp/meta/rgx.d
@@ -145,7 +145,7 @@ static template SiSUrgxInit() {
static note_ref = ctRegex!(`^\S+?noteref_([0-9]+)`, "mg"); // {^{73.}^}#noteref_73
static inline_url_generic = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg");
static inline_url = ctRegex!(`((?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_]\S*)`, "mg");
- static inline_link_naked_url = ctRegex!(`(?P<before>^|[ ])(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?P<after>[.,;:?!'"]?(?:[ ]|$))`, "mg");
+ static inline_link_naked_url = ctRegex!(`(?P<before>^|[ ])(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤)\S+?)(?P<after>[.,;:?!'"]?(?:[ ]|$))`, "mg");
static inline_link_markup_regular = ctRegex!(`(?P<before>^|[ ])\{\s*(?P<content>.+?)\s*\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?P<after>(?:[,;:? ]|[!.]?(?:[ ]|$)))`, "mg");
static inline_link_endnote_url_helper_punctuated = ctRegex!(`\{~\^\s+(?P<content>.+?)\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?P<after>[.,;:?!]?(?:[ ]|$))`, "mg");
static inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(?P<content>.+?)\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+)`, "mg");
@@ -198,6 +198,7 @@ static template SiSUrgxInit() {
static nbsp_chars_line_start = ctRegex!(`^░+`, "mg");
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
+ static special_markup_chars = ctRegex!(`[【】〖〗┥┝┤├¤░┘┙┚┼┿╂┊┏┚┆■]`, "mg");
static src_pth_sst_or_ssm = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
static src_pth_pod_sst_or_ssm = ctRegex!(`^(?P<podpath>[/]?(?:[a-zA-Z0-9._-]+/)*)media/text/[a-z]{2}/(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
static src_pth_contents = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisupod[.]manifest$`);
@@ -252,6 +253,8 @@ static template SiSUrgxInit() {
static inline_link_fn_suffix = ctRegex!(`¤(.+?)(\.fnSuffix)`, "mg");
static inline_seg_link = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");
static mark_internal_site_lnk = ctRegex!(`¤`, "mg");
+ static quotation_mark_sql_insert_delimiter = ctRegex!("[']", "mg");
+ static quotation_mark_various = ctRegex!(q"¶['‘’“”"`´¨]¶", "mg");
/+ inline markup font face mod +/
static inline_faces = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+#-])\{(?P<text>.+?)\}[*!_^,+#-])`, "mg");
static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`, "mg");
diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d
index 1db74d9..d58b990 100644
--- a/src/sdp/output/paths_output.d
+++ b/src/sdp/output/paths_output.d
@@ -29,6 +29,44 @@ template SiSUoutPaths() {
return _PathsStruct();
}
}
+template SiSUoutPathsFnPd() {
+ /+ TODO stuff to work out here +/
+ auto SiSUoutPathsFnPd(Fn,Pn)(
+ Fn fn_src_pth,
+ Pn pod_name
+ // Pn pod_name = "",
+ ) {
+ struct _PathsStruct {
+ string base_filename() {
+ return fn_src_pth.baseName.stripExtension;
+ }
+ string base_pod_and_filename() { // TODO
+ /+
+ - if pod,
+ - pod_name
+ - file_name
+ - if pod_name == file_name
+ - file_name
+ - else if pod_name != file_name
+ - pod_name.file_name
+ +/
+ auto _fn_src = fn_src_pth.baseName.stripExtension;
+ string _output_base_name;
+ if (!(pod_name.empty)) {
+ if (pod_name == _fn_src) {
+ _output_base_name = _fn_src;
+ } else {
+ _output_base_name = pod_name ~ "." ~ _fn_src;
+ }
+ } else {
+ _output_base_name = _fn_src;
+ }
+ return _output_base_name;
+ }
+ }
+ return _PathsStruct();
+ }
+}
template SiSUpathsHTML() {
mixin SiSUrgxInit;
static auto rgx = Rgx();
diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d
index 59cb618..c420d7e 100644
--- a/src/sdp/output/paths_source.d
+++ b/src/sdp/output/paths_source.d
@@ -15,7 +15,7 @@ template PodManifest() {
mixin SiSUrgxInit;
static auto rgx = Rgx();
auto PodManifest(P)(
- P _pth = "",
+ P _pth
) {
struct ManifestFile_ {
auto pod_manifest_filename() {
@@ -37,8 +37,8 @@ template PodManifest() {
_manifest_path = m.captures["podpath"];
}
} else {
- writeln("WARNING, issue with manifest_path: ", _pth);
- _manifest_path = _pth; // _manifest_path = null;
+ writeln("WARNING, issue with manifest_path: ", _pth); // remove?
+ _manifest_path = null; // _manifest_path = "";
}
return _manifest_path;
}
@@ -65,7 +65,7 @@ template PathMatters() {
auto PathMatters(O,E,P,F)(
O _opt_actions,
E _env,
- P _pth = "",
+ P _pth,
F _fns = "",
char[][] _manifest_fn_list = [[]],
) {
@@ -115,6 +115,9 @@ template PathMatters() {
auto manifest_path() {
return _manifest.pod_manifest_path;
}
+ auto pod_name() { // TODO decide what returned if src_is_pod == false
+ return _manifest.pod_manifest_path.baseName;
+ }
auto manifest_file_with_path() {
return _manifest.pod_manifest_file_with_path;
}
@@ -190,7 +193,8 @@ template PathMatters() {
assert(_dir == m.captures["dir"]);
} else {
_dir = asNormalizedPath(path_and_fn.chainPath("../../../")).array;
- assert(_dir == absolute_path_to_src.match(rgx.src_base_parent_dir_name).captures["dir"]);
+ assert(_dir == absolute_path_to_src
+ .match(rgx.src_base_parent_dir_name).captures["dir"]);
}
if ((_opt_actions.debug_do)) {
writeln("--> (base_dir) ", _dir);
diff --git a/src/sdp/output/rgx.d b/src/sdp/output/rgx.d
index adadf9e..d559491 100644
--- a/src/sdp/output/rgx.d
+++ b/src/sdp/output/rgx.d
@@ -15,6 +15,7 @@ static template SiSUoutputRgxInit() {
static nbsp_chars_line_start = ctRegex!(`^░+`, "mg");
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
+ static special_markup_chars = ctRegex!(`[【】〖〗┥┝┤├¤░┘┙┚┼┿╂┊┏┚┆■]`, "mg");
static src_pth_sst_or_ssm = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
static src_pth_pod_sst_or_ssm = ctRegex!(`^(?P<podpath>[/]?(?:[a-zA-Z0-9._-]+/)*)media/text/[a-z]{2}/(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
static src_pth_contents = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisupod[.]manifest$`);
@@ -69,6 +70,8 @@ static template SiSUoutputRgxInit() {
static inline_link_fn_suffix = ctRegex!(`¤(.+?)(\.fnSuffix)`, "mg");
static inline_seg_link = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");
static mark_internal_site_lnk = ctRegex!(`¤`, "mg");
+ static quotation_mark_sql_insert_delimiter = ctRegex!("[']", "mg");
+ static quotation_mark_various = ctRegex!(q"¶['‘’“”"`´¨]¶", "mg");
/+ inline markup font face mod +/
static inline_faces = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+#-])\{(?P<text>.+?)\}[*!_^,+#-])`, "mg");
static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`, "mg");
diff --git a/src/sdp/output/sqlite.d b/src/sdp/output/sqlite.d
index 25940cc..480c317 100644
--- a/src/sdp/output/sqlite.d
+++ b/src/sdp/output/sqlite.d
@@ -56,7 +56,7 @@ template SQLiteBuildTablesAndPopulate() {
auto return ref const O obj,
) {
string _html_special_characters(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
@@ -66,17 +66,17 @@ template SQLiteBuildTablesAndPopulate() {
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;
@@ -102,7 +102,7 @@ template SQLiteBuildTablesAndPopulate() {
return _txt;
}
string html_special_characters(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
@@ -112,7 +112,7 @@ template SQLiteBuildTablesAndPopulate() {
return _txt;
}
string html_special_characters_code(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
@@ -121,17 +121,17 @@ template SQLiteBuildTablesAndPopulate() {
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;
}
auto html_heading(O)(
@@ -223,7 +223,7 @@ template SQLiteBuildTablesAndPopulate() {
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;
diff --git a/src/sdp/output/sqlite_discrete.d b/src/sdp/output/sqlite_discrete.d
index 541c4d8..443fb3b 100644
--- a/src/sdp/output/sqlite_discrete.d
+++ b/src/sdp/output/sqlite_discrete.d
@@ -23,7 +23,6 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
) {
string _notes;
string _urls;
- _txt = _txt.replaceAll(rgx.inline_fontface_clean, "");
if (_txt.matchFirst(rgx.inline_notes_al_gen)) {
foreach (m; _txt.matchAll(rgx.inline_notes_al_gen_text)) {
_notes ~= "\n" ~ m["text"];
@@ -102,7 +101,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
return _txt;
}
string html_special_characters(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
@@ -112,7 +111,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
return _txt;
}
string html_special_characters_code(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
@@ -121,7 +120,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
return _txt;
}
string html_font_face(string _txt){
- _txt = (_txt)
+ _txt = _txt
.replaceAll(rgx.inline_emphasis, "<em>$1</em>")
.replaceAll(rgx.inline_bold, "<b>$1</b>")
.replaceAll(rgx.inline_underscore, "<u>$1</u>")
@@ -461,13 +460,10 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
}
}
template SQLiteInstruct() {
- Statement SQLiteInstruct(I)(
+ void SQLiteInstruct(Db,I)(
+ Db db,
auto ref I doc_matters,
) {
- auto pth_sqlite = SiSUpathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language);
- pth_sqlite.base.mkdirRecurse;
- 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;
@@ -824,93 +820,60 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
// insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links);
insert_metadata.execute(); insert_metadata.reset();
/+ watch +/
- writeln(" ", pth_sqlite.sqlite_file(doc_matters.src.filename));
if ((doc_matters.opt.action.verbose)) {
writeln("sql statement executed");
}
assert(db.totalChanges == 1);
//
- Statement _insert_doc_objects = db.prepare("
- INSERT INTO doc_objects (
- lid,
- metadata_tid,
- ocn,
- ocnd,
- ocns,
- clean,
- body,
- book_idx,
- seg,
- lev_an,
- lev,
- lev0,
- lev1,
- lev2,
- lev3,
- lev4,
- lev5,
- lev6,
- lev7,
- en_a,
- en_z,
- en_a_asterisk,
- en_z_asterisk,
- en_a_plus,
- en_z_plus,
- t_of,
- t_is,
- node,
- parent,
- digest_clean,
- digest_all,
- types
- )
- VALUES (
- :lid,
- :metadata_tid,
- :ocn,
- :ocnd,
- :ocns,
- :clean,
- :body,
- :book_idx,
- :seg,
- :lev_an,
- :lev,
- :lev0,
- :lev1,
- :lev2,
- :lev3,
- :lev4,
- :lev5,
- :lev6,
- :lev7,
- :en_a,
- :en_z,
- :en_a_asterisk,
- :en_z_asterisk,
- :en_a_plus,
- :en_z_plus,
- :t_of,
- :t_is,
- :node,
- :parent,
- :digest_clean,
- :digest_all,
- :types
- )
- ");
- return _insert_doc_objects;
}
}
template SQLiteObjectsLoop() {
void SQLiteObjectsLoop(P)(
auto ref P doc_parts,
) {
- Statement insert_doc_objects = SQLiteInstruct!()(doc_matters);
+ string insertDocObjectsRow(O)(O obj) {
+ auto sql_insert_delimiter(string _txt) {
+ _txt = _txt
+ .replaceAll(rgx.quotation_mark_sql_insert_delimiter, "$0$0");
+ return _txt;
+ }
+ string _insert_doc_objects_row;
+ _insert_doc_objects_row = format(q"¶
+ INSERT INTO doc_objects (
+ ocn,
+ clean,
+ body,
+ lev,
+ t_of,
+ t_is
+ )
+ VALUES (
+ %s,
+ '%s',
+ '%s',
+ %s,
+ '%s',
+ '%s'
+ );
+ ¶",
+ obj.ocn,
+ sql_insert_delimiter(obj_txt["text"]),
+ sql_insert_delimiter(obj_txt["html"]),
+ obj.heading_lev_markup,
+ obj.is_of,
+ obj.is_a,
+ );
+ return _insert_doc_objects_row;
+ }
+ auto pth_sqlite = SiSUpathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language);
+ pth_sqlite.base.mkdirRecurse;
+ auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));
+ SQLiteInstruct!()(db, doc_matters); // consider best location, need to feed individual objects for sqlite table: doc_objects, possibly a separate template?
auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc_matters);
string[string] obj_txt;
string doc_text;
+ string[] _insert_doc_objects;
+ _insert_doc_objects ~= "BEGIN;\n";
foreach (part; doc_parts) {
foreach (obj; doc_abstraction[part]) {
switch (obj.of_part) {
@@ -1055,36 +1018,17 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
);
}
}
- insert_doc_objects.bind(":t_of", obj.is_of);
- insert_doc_objects.bind(":t_is", obj.is_a);
- insert_doc_objects.bind(":ocn", obj.ocn);
- insert_doc_objects.bind(":clean", obj_txt["text"]); // consider whether book index info should be made available within clear text for search
- insert_doc_objects.bind(":body", obj_txt["html"]);
- // insert_doc_objects.bind(":book_idx", ""); // not needed, but, consider whether should be made available within object for clear text search
- insert_doc_objects.bind(":lev", obj.heading_lev_markup);
- // // insert_doc_objects.bind(":dom_markedup", ""); // should make lev sequence below obsolete
- // // insert_doc_objects.bind(":dom_collapsed", ""); // should add info
- // insert_doc_objects.bind(":lev0", "");
- // insert_doc_objects.bind(":lev1", "");
- // insert_doc_objects.bind(":lev2", "");
- // insert_doc_objects.bind(":lev3", "");
- // insert_doc_objects.bind(":lev4", "");
- // insert_doc_objects.bind(":lev5", "");
- // insert_doc_objects.bind(":lev6", "");
- // insert_doc_objects.bind(":lev7", "");
- // insert_doc_objects.bind(":node", "");
- // insert_doc_objects.bind(":type", "");
- // insert_doc_objects.bind(":parent_ocn", "");
- // insert_doc_objects.bind(":ancestors", "");
- // insert_doc_objects.bind(":heading_lev_markup", "");
- // insert_doc_objects.bind(":heading_lev_collapsed", "");
- // insert_doc_objects.bind(":parent_lev_markup", "");
- // insert_doc_objects.bind(":heading_ancestors", "");
- // insert_doc_objects.bind(":node", "");
- insert_doc_objects.execute(); insert_doc_objects.reset();
- }
+ if (!(obj.is_a == "comment")) {
+ _insert_doc_objects ~= insertDocObjectsRow(obj);
+ }
+ } // loop closes
+ }
+ _insert_doc_objects ~= "COMMIT";
+ debug(sql_statement) {
+ writeln("#+BEGIN_SRC sql\n", _insert_doc_objects.join, "\n#+END_SRC");
}
- insert_doc_objects.finalize();
+ std.utf.validate(_insert_doc_objects.join); // TODO
+ db.run(_insert_doc_objects.join.to!(char[]).toUTF8);
}
}
SQLiteObjectsLoop!()(doc_matters.xml.keys_seq.sql);
diff --git a/src/sdp/output/xmls.d b/src/sdp/output/xmls.d
index 952c9cd..58ae237 100644
--- a/src/sdp/output/xmls.d
+++ b/src/sdp/output/xmls.d
@@ -163,7 +163,7 @@ template outputXHTMLs() {
.replaceAll(
rgx.br_nl, "");
} else {
- writeln("WARNING home button text expected");
+ _locations = "<p class=\"tiny_left\"><a href=\"http://www.sisudoc.org\">SiSU</a></p>\n<p class=\"tiny_left\"><a href=\"http://www.sisudoc.org\">www.sisudoc.org</a></p>\n<p class=\"tiny_left\"><a href=\"http://git.sisudoc.org/gitweb/\">sources / git</a></p>";
}
string o;
o = format(q"¶<div class="flex-menu-option">
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d
index bddcc64..a50b0e9 100755
--- a/src/sdp/sdp.d
+++ b/src/sdp/sdp.d
@@ -264,8 +264,8 @@ void main(string[] args) {
"pwd" : environment["PWD"],
"home" : environment["HOME"],
];
- auto _manifest_start = PodManifest!()();
- auto _manifest_matter = PathMatters!()(_opt_action, _env);
+ auto _manifest_start = PodManifest!()("");
+ auto _manifest_matter = PathMatters!()(_opt_action, _env, "");
auto _manifests = [ _manifest_matter ];
foreach(arg; args[1..$]) {
_manifest_start = PodManifest!()(arg);
@@ -319,7 +319,7 @@ void main(string[] args) {
if (_opt_action.languages_set[0] == "all"
|| (contents_location_pth_).match(lang_rgx_)
) {
- auto _fns = (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(string);
+ auto _fns = (((tmp_dir_).chainPath(contents_location_pth_)).array).to!string;
_manifest_matter = PathMatters!()(_opt_action, _env, arg, _fns, contents_locations_arr);
_manifests ~= _manifest_matter; // TODO how to capture?
}