aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2018-01-25 17:13:52 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit524baa6ddd5f9cb49b1c5b015fbd6ef75ff72968 (patch)
treec66713d8559aa04f15f95825a6f5faec16827ce6
parent0.23.3 work on source & target file paths/locations (diff)
paths, further adjustmentsdoc-reform_v0.0.23
-rw-r--r--maker.org67
-rw-r--r--org/compile_time_info.org2
-rw-r--r--org/default_misc.org3
-rw-r--r--org/default_paths.org71
-rw-r--r--org/default_regex.org3
-rw-r--r--org/imports.org2
-rw-r--r--org/meta_abstraction.org2
-rw-r--r--org/meta_debugs.org2
-rw-r--r--org/meta_read_source_files.org13
-rw-r--r--org/output_hub.org2
-rw-r--r--org/output_sisupod.org48
-rw-r--r--org/output_sqlite.org32
-rw-r--r--org/output_sqlite_discrete.org32
-rw-r--r--org/output_xmls.org16
-rw-r--r--org/output_xmls_css.org2
-rw-r--r--org/output_zip.org2
-rw-r--r--org/sdp.org316
-rw-r--r--src/sdp/meta/metadoc.d111
-rw-r--r--src/sdp/meta/read_config_files.d12
-rw-r--r--src/sdp/meta/rgx.d1
-rw-r--r--src/sdp/output/epub3.d14
-rw-r--r--src/sdp/output/paths_output.d2
-rw-r--r--src/sdp/output/paths_source.d67
-rw-r--r--src/sdp/output/rgx.d1
-rw-r--r--src/sdp/output/source_sisupod.d46
-rw-r--r--src/sdp/output/sqlite.d30
-rw-r--r--src/sdp/output/sqlite_discrete.d30
-rwxr-xr-xsrc/sdp/sdp.d179
28 files changed, 553 insertions, 555 deletions
diff --git a/maker.org b/maker.org
index dfdb618..c3a50d6 100644
--- a/maker.org
+++ b/maker.org
@@ -954,12 +954,67 @@ dub build -h
#+END_SRC
#+BEGIN_SRC sh
-dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc
-dub --compiler=ldc2 --config=sdp-ldc --debug=io
-dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io
-dub --compiler=ldc2 --config=sdp-ldc-debug --debug=io
-dub --compiler=gdc --config=sdp-gdc-debug --debug=io
-dub --compiler=dmd --config=sdp-dmd-debug --debug=io
+time (dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc)
+time (dub --compiler=ldc2 --config=sdp-ldc --debug=io)
+time (dub --compiler=ldc2 --config=sdp-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io)
+time (dub --compiler=ldc2 --config=sdp-ldc-debug --debug=io)
+time (dub --compiler=gdc --config=sdp-gdc-debug --debug=io)
+time (dub --compiler=dmd --config=sdp-dmd-debug --debug=io)
+#+END_SRC
+
+***** debug flags
+
+#+BEGIN_SRC sh
+biblio
+biblio_sorted
+bibliosorted
+block
+bookindex
+bookindexmatch
+bookindexraw
+check
+checkdoc
+code
+comment
+dumpdoc write out document contents, with object type and ocn
+endnotes
+endnotes_build
+footnotes
+footnotesdone
+group
+header
+header_and_content
+header1
+headerjson
+headermakejson
+headermetadatajson
+heading
+headings
+headingsfound
+insert
+io
+munge
+node
+objectrelated1
+objectrelated2
+objects
+ocnoff
+para
+parabullet
+parabulletindent
+paraindent
+paraindenthang
+parent
+poem
+quote
+raw
+sdlang
+source
+srclines
+structattrib
+summary
+table
+toc
#+END_SRC
*** make
diff --git a/org/compile_time_info.org b/org/compile_time_info.org
index 25f3740..281bfe1 100644
--- a/org/compile_time_info.org
+++ b/org/compile_time_info.org
@@ -105,3 +105,5 @@ version(D_LP64) {
enum bits = "32 bit";
}
#+END_SRC
+
+* __END__
diff --git a/org/default_misc.org b/org/default_misc.org
index bbf1477..9129db2 100644
--- a/org/default_misc.org
+++ b/org/default_misc.org
@@ -709,7 +709,8 @@ template SiSUlanguageCodes() {
}
#+END_SRC
-* +set colors for terminal+ (unused) :colors:terminal:
+* __END__
+** +set colors for terminal+ (unused) :colors:terminal:
#+name: meta_ansi_colors
#+BEGIN_SRC d
diff --git a/org/default_paths.org b/org/default_paths.org
index 369e71b..5334a78 100644
--- a/org/default_paths.org
+++ b/org/default_paths.org
@@ -55,19 +55,30 @@ template PodManifest() {
}
auto pod_manifest_path() {
string _manifest_path;
- if (isValidPath(_pth) && _pth.isDir
- && ((_pth.chainPath(pod_manifest_filename).array).isFile)) {
+ if ((isValidPath(_pth) && exists(_pth)!=0 && _pth.isDir)
+ && (exists(_pth.chainPath(pod_manifest_filename).array)!=0
+ && (_pth.chainPath(pod_manifest_filename).array).isFile)) {
_manifest_path = _pth;
} else if (_pth.match(rgx.src_pth_contents)
- && (_pth.isFile)) {
+ && exists(_pth)!=0 && _pth.isDir && (_pth.isFile)) {
_manifest_path = dirName(_pth);
- // } else { // _manifest_path = "";
+ } else {
+ _manifest_path = _pth; // _manifest_path = null;
}
return _manifest_path;
}
- auto pod_manifest_file_with_path() {
- string _manifest_path_and_file = pod_manifest_path.chainPath(pod_manifest_filename).array;
- return _manifest_path_and_file;
+ string pod_manifest_file_with_path() {
+ string _k;
+ if (exists(pod_manifest_path.chainPath(pod_manifest_filename).array)!=0) {
+ _k = pod_manifest_path.chainPath(pod_manifest_filename).array;
+ } else if (exists(pod_manifest_path)!=0) {
+ _k = pod_manifest_path;
+ }
+ if (exists(_k)==0) {
+ writeln("ERROR >> Processing Skipped! Manifest not found: ", _k);
+ _k = null;
+ }
+ return _k;
}
}
return ManifestFile_();
@@ -176,6 +187,9 @@ template PathMatters() {
}
return _k;
}
+ auto language() {
+ return lng();
+ }
auto file_with_absolute_path() {
string _pth = _env["pwd"].chainPath(path_and_fn).array;
return _pth;
@@ -190,13 +204,15 @@ template PathMatters() {
auto m = (absolute_path_to_src)
.match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
assert(_dir == m.captures["dir"]);
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../../")).array;
assert(_dir == absolute_path_to_src.match(rgx.src_base_parent_dir_name).captures["dir"]);
}
- writeln("--> ", _dir);
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_dir) ", _dir);
+ }
return _dir;
}
auto base_parent_dir_path() {
@@ -205,35 +221,42 @@ template PathMatters() {
auto m = (absolute_path_to_src)
.match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../../")).array;
}
return _dir;
}
auto base_dir_path() { // looks like there is work to do
string _dir;
- if ( // TODO this should catch generated --source sisupod, untested, needs manifest
+ if (
auto m = (absolute_path_to_src)
- .match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
+ .match(rgx.src_formalised_file_path_parts)
+ ) {
+ _dir = asNormalizedPath(m.captures["pth"]).array;
+ } else if ( // TODO this should catch generated --source sisupod, untested, needs manifest
+ auto m = (absolute_path_to_src)
+ .match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../")).array;
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
+ }
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_dir_path) ", _dir);
}
- writeln("--> ", _dir);
return _dir;
}
auto media_dir_path() { // TODO rework, can base directly on src fn path
- auto _dir = asAbsolutePath(base_dir_path.chainPath("media")).array;
+ string _dir = asNormalizedPath(base_dir_path.chainPath("media")).array;
return _dir;
}
auto image_dir_path() {
- auto _dir = asAbsolutePath(base_dir_path.chainPath("media/image")).array;
+ string _dir = asNormalizedPath(base_dir_path.chainPath("media/image")).array;
return _dir;
}
auto conf_dir_path() {
- auto _dir = asAbsolutePath(base_dir_path.chainPath("conf")).array;
+ auto _dir = asNormalizedPath(base_dir_path.chainPath("conf")).array;
return _dir;
}
auto base_parent_dir() {
@@ -246,7 +269,9 @@ template PathMatters() {
} else {
_dir = (absolute_path_to_src).match(rgx.src_base_parent_dir_name).captures["dir"];
}
- writeln("--> ", _dir);
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_parent_dir) ", _dir);
+ }
return _dir;
}
auto config_dirs() { // TODO
@@ -1011,7 +1036,7 @@ template SiSUpathsSQLite() {
return fn_src.baseName.stripExtension;
}
string base() {
- return asNormalizedPath((out_pth.output_base).chainPath(base_dir)).array;
+ return asNormalizedPath((out_pth.output_root).chainPath(base_dir)).array;
}
string seg(string fn_src) {
return asNormalizedPath(base.chainPath(base_filename(fn_src))).array;
@@ -1024,3 +1049,5 @@ template SiSUpathsSQLite() {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/default_regex.org b/org/default_regex.org
index 57c442b..1ad8ee5 100644
--- a/org/default_regex.org
+++ b/org/default_regex.org
@@ -427,6 +427,7 @@ static src_fn_insert = ctRegex!(`^(?P<path>[a-z
static src_fn_find_inserts = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);
static src_base_parent_dir_name = ctRegex!(`[/](?P<dir>(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure
+static src_formalised_file_path_parts = ctRegex!(`(?P<pth>(?:[/a-zA-Z0-9._-]+?)(?P<dir>[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalized dir structure
#+END_SRC
** inline markup
@@ -501,3 +502,5 @@ static inline_fontface_clean = ctRegex!(`[*!_/^,+#■"-
static table_delimiter_col = ctRegex!("[ ]*[┊][ ]*", "mg");
static table_delimiter_row = ctRegex!("[ ]*\n", "mg");
#+END_SRC
+
+* __END__
diff --git a/org/imports.org b/org/imports.org
index 3fd71a2..64bc4c3 100644
--- a/org/imports.org
+++ b/org/imports.org
@@ -78,3 +78,5 @@ public import
sdp.output.paths_output,
sdp.output.rgx;
#+END_SRC
+
+* __END__
diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org
index 9f451e6..b1464b5 100644
--- a/org/meta_abstraction.org
+++ b/org/meta_abstraction.org
@@ -7197,3 +7197,5 @@ struct TheObjects {
ObjGenericComposite[] oca;
}
#+END_SRC
+
+* __END__
diff --git a/org/meta_debugs.org b/org/meta_debugs.org
index f623076..d11b64b 100644
--- a/org/meta_debugs.org
+++ b/org/meta_debugs.org
@@ -873,3 +873,5 @@ debug(checkdoc) {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/meta_read_source_files.org b/org/meta_read_source_files.org
index a3a59a5..3bf02b1 100644
--- a/org/meta_read_source_files.org
+++ b/org/meta_read_source_files.org
@@ -53,8 +53,8 @@ static template configInSite() {
auto possible_config_path_locations = conf_file_details.possible_config_path_locations.local_site;
string config_file_str;
debug(io) {
- writeln("in config filename: ", conf_sdl);
- writeln("in config possible path locations: ", possible_config_path_locations);
+ writeln("WARNING (io debug) in config filename: ", conf_sdl);
+ 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_sdl)).array;
@@ -64,7 +64,7 @@ static template configInSite() {
try {
if (exists(conf_file)) {
debug(io) {
- writeln("in config file found: ", conf_file);
+ writeln("WARNING (io debug) in config file found: ", conf_file);
}
config_file_str = conf_file.readText;
break;
@@ -90,8 +90,8 @@ static template configInDoc() {
auto possible_config_path_locations = conf_file_details.possible_config_path_locations.document;
string config_file_str;
debug(io) {
- writeln("in config filename: ", conf_sdl);
- writeln("in config possible path locations: ", possible_config_path_locations);
+ writeln("WARNING (io debug) in config filename: ", conf_sdl);
+ 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_sdl)).array;
@@ -101,7 +101,7 @@ static template configInDoc() {
try {
if (exists(conf_file)) {
debug(io) {
- writeln("in config file found: ", conf_file);
+ writeln("WARNING (io debug) in config file found: ", conf_file);
}
config_file_str = conf_file.readText;
break;
@@ -667,3 +667,4 @@ auto t = tuple(
return t;
#+END_SRC
+* __END__
diff --git a/org/output_hub.org b/org/output_hub.org
index b147cd6..3c44e7d 100644
--- a/org/output_hub.org
+++ b/org/output_hub.org
@@ -246,3 +246,5 @@ if (doc_matters.opt.action.postgresql) {
writeln("pgsql processing");
}
#+END_SRC
+
+* __END__
diff --git a/org/output_sisupod.org b/org/output_sisupod.org
index 1031456..82e654b 100644
--- a/org/output_sisupod.org
+++ b/org/output_sisupod.org
@@ -62,8 +62,8 @@ debug(asserts) {
}
mixin SiSUoutputRgxInit;
string pwd = doc_matters.env.pwd;
-auto src_path_info = doc_matters.src.path_info;
-auto pth_sisudoc_src = doc_matters.src.path_info;
+auto src_path_info = doc_matters.src_path_info;
+auto pth_sisudoc_src = doc_matters.src_path_info;
auto pths_sisupod = SiSUpathsSisupods!()(doc_matters);
mixin SiSUlanguageCodes;
auto lang = Lang();
@@ -113,14 +113,17 @@ debug(sisupod) {
auto zip = new ZipArchive();
auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
{ /+ bundle images +/
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(sisupodimages) {
writeln(
pth_sisudoc_src.image_root.to!string, "/", image, " -> ",
pths_sisupod.image_root(doc_matters.src.filename).zpod, "/", image
);
}
- auto fn_src_in = pth_sisudoc_src.image_root.to!string ~ "/" ~ image;
+ auto fn_src_in = ((doc_matters.src.is_pod)
+ ? doc_matters.src.image_dir_path
+ : pth_sisudoc_src.image_root).to!string
+ ~ "/" ~ image;
auto fn_src_out_sisupod_zip_base
= pths_sisupod.image_root(doc_matters.src.filename).zpod.to!string
~ "/" ~ image;
@@ -129,7 +132,7 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
~ "/" ~ image;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -144,13 +147,15 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
}
} else {
if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (image): ", fn_src_in);
+ writeln("WARNING (io) src out NOT found (image): ", fn_src_in);
}
}
}
} { /+ bundle sisu_document_make +/
- auto fn_src_in
- = pth_sisudoc_src.conf_root.to!string ~ "/" ~ "sisu_document_make"; // check (_sisu/sisu_document_make)
+ auto fn_src_in = ((doc_matters.src.is_pod)
+ ? doc_matters.src.conf_dir_path
+ : pth_sisudoc_src.conf_root).to!string
+ ~ "/" ~ "sisu_document_make";
auto fn_src_out_sisupod_zip_base
= pths_sisupod.conf_root(doc_matters.src.filename).zpod.to!string ~ "/" ~ "sisu_document_make";
auto fn_src_out_filesystem
@@ -158,7 +163,7 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
~ "/" ~ "sisu_document_make"; // TODO
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -172,8 +177,9 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
zip.addMember(zip_arc_member_file);
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (document make): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (document make): ", fn_src_in);
}
}
} { /+ TODO bundle primary file +/
@@ -188,7 +194,7 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
string[] filelist_src_zpod_arr;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
filelist_src_out_sisupod_arr ~= fn_src_out_sisupod_zip_base;
filelist_src_zpod_arr ~= fn_src_out_inside_pod;
@@ -209,13 +215,14 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
zip.addMember(zip_arc_member_file);
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (markup source): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (markup source): ", fn_src_in);
}
}
} { /+ bundle insert files +/
- if (doc_matters.src.file_insert_list.length > 0) {
- foreach (insert_file; doc_matters.src.file_insert_list) {
+ if (doc_matters.srcs.file_insert_list.length > 0) {
+ foreach (insert_file; doc_matters.srcs.file_insert_list) {
debug(sisupod) {
writeln(
insert_file, " -> ",
@@ -241,7 +248,7 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
).filesystem_open_zpod.to!string;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -256,8 +263,9 @@ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
createZipFile!()(fn_sisupod, zip.build());
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (insert file): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (insert file): ", fn_src_in);
}
}
}
@@ -318,3 +326,5 @@ if (exists(fn_sisupod)) {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/output_sqlite.org b/org/output_sqlite.org
index 08e4b8d..710e9df 100644
--- a/org/output_sqlite.org
+++ b/org/output_sqlite.org
@@ -467,6 +467,7 @@ auto html_table(O)(
#+name: sqlite_db_initialize
#+BEGIN_SRC d
auto pth_sqlite = SiSUpathsSQLite!()(doc_matters.output_path, doc_matters.src.language);
+pth_sqlite.base.mkdirRecurse;
auto db = Database(pth_sqlite.sqlite_file(doc_matters.env.pwd.baseName));
// auto db = Database(":memory:"); // open database in memory
if (doc_matters.opt.action.sqlite_create) {
@@ -917,7 +918,10 @@ insert_metadata.bind(":rights_license", doc_matters.conf_make
// insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links);
insert_metadata.execute(); insert_metadata.reset();
/+ watch +/
-writeln("sql statement executed");
+writeln(" ", pth_sqlite.sqlite_file(doc_matters.env.pwd.baseName));
+if ((doc_matters.opt.action.verbose)) {
+ writeln("sql statement executed");
+}
assert(db.totalChanges == 1);
#+END_SRC
@@ -1425,17 +1429,19 @@ foreach (part; doc_parts) {
break;
}
if (obj.is_a == "heading") {
- writeln(
- "markup: ", obj.heading_lev_markup,
- "> ", obj.dom_markedup,
- "; collapsed: ", obj.heading_lev_collapsed,
- "> ", obj.dom_collapsed,
- "; ocn: ", obj.ocn,
- " node: ", obj.node,
- "; parent: ", obj.parent_lev_markup,
- "; ocn: ", obj.parent_ocn,
- "; ",
- );
+ if ((doc_matters.opt.action.verbose)) {
+ writeln(
+ "markup: ", obj.heading_lev_markup,
+ "> ", obj.dom_markedup,
+ "; collapsed: ", obj.heading_lev_collapsed,
+ "> ", obj.dom_collapsed,
+ "; ocn: ", obj.ocn,
+ " node: ", obj.node,
+ "; parent: ", obj.parent_lev_markup,
+ "; ocn: ", obj.parent_ocn,
+ "; ",
+ );
+ }
}
insert_doc_objects.bind(":t_of", obj.is_of);
insert_doc_objects.bind(":t_is", obj.is_a);
@@ -1467,3 +1473,5 @@ foreach (part; doc_parts) {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/output_sqlite_discrete.org b/org/output_sqlite_discrete.org
index abcb5b3..ecf8033 100644
--- a/org/output_sqlite_discrete.org
+++ b/org/output_sqlite_discrete.org
@@ -467,6 +467,7 @@ auto html_table(O)(
#+name: sqlite_db_initialize
#+BEGIN_SRC d
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("
@@ -885,7 +886,10 @@ insert_metadata.bind(":rights_license", doc_matters.conf_make
// insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links);
insert_metadata.execute(); insert_metadata.reset();
/+ watch +/
-writeln("sql statement executed");
+writeln(" ", pth_sqlite.sqlite_file(doc_matters.src.filename));
+if ((doc_matters.opt.action.verbose)) {
+ writeln("sql statement executed");
+}
assert(db.totalChanges == 1);
#+END_SRC
@@ -1393,17 +1397,19 @@ foreach (part; doc_parts) {
break;
}
if (obj.is_a == "heading") {
- writeln(
- "markup: ", obj.heading_lev_markup,
- "> ", obj.dom_markedup,
- "; collapsed: ", obj.heading_lev_collapsed,
- "> ", obj.dom_collapsed,
- "; ocn: ", obj.ocn,
- " node: ", obj.node,
- "; parent: ", obj.parent_lev_markup,
- "; ocn: ", obj.parent_ocn,
- "; ",
- );
+ if ((doc_matters.opt.action.verbose)) {
+ writeln(
+ "markup: ", obj.heading_lev_markup,
+ "> ", obj.dom_markedup,
+ "; collapsed: ", obj.heading_lev_collapsed,
+ "> ", obj.dom_collapsed,
+ "; ocn: ", obj.ocn,
+ " node: ", obj.node,
+ "; parent: ", obj.parent_lev_markup,
+ "; ocn: ", obj.parent_ocn,
+ "; ",
+ );
+ }
}
insert_doc_objects.bind(":t_of", obj.is_of);
insert_doc_objects.bind(":t_is", obj.is_a);
@@ -1435,3 +1441,5 @@ foreach (part; doc_parts) {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/output_xmls.org b/org/output_xmls.org
index 19f8552..4a0babb 100644
--- a/org/output_xmls.org
+++ b/org/output_xmls.org
@@ -1918,7 +1918,7 @@ string epub3_oebps_content(D,I,P)(D doc_abstraction, I doc_matters, P parts) {
content ~= parts["manifest_documents"];
// TODO sort jpg & png
content ~= " " ~ "<!-- Images -->" ~ "\n ";
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
content ~= format(q"¶ <item id="%s" href="%s/%s" media-type="image/%s" />
¶",
image.baseName.stripExtension,
@@ -2575,24 +2575,24 @@ void epub3_write_output_files(M,D,E,Mt,Mic,Otnx,Otn,Oc)(
createZipFile!()(fn_epub, zip.build());
}
{ /+ OEBPS/_sisu/image (images) +/
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(epub_output) {
- if (exists(doc_matters.src.path_info.image_root ~ "/" ~ image)) {
- (doc_matters.src.path_info.image_root ~ "/" ~ image)
+ if (exists(doc_matters.src_path_info.image_root ~ "/" ~ image)) {
+ (doc_matters.src_path_info.image_root ~ "/" ~ image)
.copy((pth_epub3.dbg_doc_oebps_image(doc_matters.src.filename)) ~ "/" ~ image);
}
}
}
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(epub_output) {
debug(epub_images) {
writeln(
- doc_matters.src.path_info.image_root, image, " -> ",
+ doc_matters.src_path_info.image_root, image, " -> ",
pth_epub3.dbg_doc_oebps_image(doc_matters.src.filename), "/", image
);
}
}
- auto fn_src = doc_matters.src.path_info.image_root ~ image;
+ auto fn_src = doc_matters.src_path_info.image_root ~ image;
auto fn_out = pth_epub3.doc_oebps_image(doc_matters.src.filename).to!string ~ "/" ~ image;
if (exists(fn_src)) {
{
@@ -2649,3 +2649,5 @@ void epub3_write_output_files(M,D,E,Mt,Mic,Otnx,Otn,Oc)(
}
}
#+END_SRC
+
+* __END__
diff --git a/org/output_xmls_css.org b/org/output_xmls_css.org
index 16423fc..bd76e4d 100644
--- a/org/output_xmls_css.org
+++ b/org/output_xmls_css.org
@@ -1273,3 +1273,5 @@ Consider what if anything should be used here
#+name: css_epub
#+BEGIN_SRC css
#+END_SRC
+
+* __END__
diff --git a/org/output_zip.org b/org/output_zip.org
index 1da1704..d392b38 100644
--- a/org/output_zip.org
+++ b/org/output_zip.org
@@ -37,3 +37,5 @@ template createZipFile() {
}
}
#+END_SRC
+
+* __END__
diff --git a/org/sdp.org b/org/sdp.org
index 799f4ec..d277ec0 100644
--- a/org/sdp.org
+++ b/org/sdp.org
@@ -59,12 +59,12 @@ version (Posix) {
** 0. sdp src/sdp :template:
+- process files (act according to requirements of each type)
+ - by sourcefilename
+ - by sourcefiles contents identifier
+ - by zip filename
+
#+BEGIN_SRC d :tangle ../src/sdp/sdp.d :shebang #!/usr/bin/env rdmd
-/+
- sdp: sisu document parser
- a SiSU document parser writen in D
- see http://sisudoc.org.
-+/
module sdp.sisu_document_parser;
import
sdp.conf.compile_time_info,
@@ -72,7 +72,11 @@ import
<<imports_sdp>>
<<mixin_sdp_version>>
<<mixin_pre_main>>
-/++ A SiSU document parser writen in D. +/
+/++
+name "sdp"
+description "A SiSU inspired document parser writen in D."
+homepage "http://sisudoc.org"
++/
void main(string[] args) {
<<sdp_mixin>>
<<sdp_args>>
@@ -82,7 +86,7 @@ void main(string[] args) {
foreach(manifest; _manifests[1..$]) {
if (!empty(manifest.src.filename)) {
<<sdp_each_file_do_scope>>
- <<sdp_abstraction>>
+ <<sdp_each_file_do_abstraction>>
<<sdp_each_file_do_debugs_checkdoc>>
<<sdp_each_file_do_selected_output>>
<<sdp_each_file_do_scope_exit>>
@@ -93,11 +97,6 @@ void main(string[] args) {
}
}
unittest {
- /++
- name "sdp"
- description "A SiSU document parser writen in D."
- homepage "http://sisudoc.org"
- +/
}
#+END_SRC
@@ -134,9 +133,9 @@ import
├── src
│   ├── sdp.d
│   └── sdp
-│    ├── metadoc_from_src.d
-│    ├── ...
-│    └── compile_time_info.d
+│ ├── conf
+│ ├── meta
+│ └── output
└── views
   └── version.txt
@@ -150,6 +149,7 @@ import
[[./sdp.org][sdp]]
keep up to date, configuration in ../maker.org
+
check:
- http://github.com/Abscissa/SDLang-D
- https://github.com/abscissa/libInputVisitor
@@ -326,158 +326,121 @@ if (helpInfo.helpWanted) {
#+BEGIN_SRC d
struct OptActions {
auto assertions() {
- auto _k = opts["assertions"];
- return _k;
+ return opts["assertions"];
}
auto concordance() {
- auto _k = opts["concordance"];
- return _k;
+ return opts["concordance"];
}
auto debug_do() {
- auto _k = opts["debug"];
- return _k;
+ return opts["debug"];
}
auto digest() {
- auto _k = opts["digest"];
- return _k;
+ return opts["digest"];
}
auto docbook() {
- auto _k = opts["docbook"];
- return _k;
+ return opts["docbook"];
}
auto epub() {
- auto _k = opts["epub"];
- return _k;
+ return opts["epub"];
}
auto html() {
- auto _k = opts["html"];
- return _k;
+ return opts["html"];
}
auto html_seg() {
- auto _k = opts["html-seg"];
- return _k;
+ return opts["html-seg"];
}
auto html_scroll() {
- auto _k = opts["html-scroll"];
- return _k;
+ return opts["html-scroll"];
}
auto manifest() {
- auto _k = opts["manifest"];
- return _k;
+ return opts["manifest"];
}
auto ocn() {
- auto _k = opts["ocn"];
- return _k;
+ return opts["ocn"];
}
auto odt() {
- auto _k = opts["odt"];
- return _k;
+ return opts["odt"];
}
auto pdf() {
- auto _k = opts["pdf"];
- return _k;
+ return opts["pdf"];
}
auto postgresql() {
- auto _k = opts["postgresql"];
- return _k;
+ return opts["postgresql"];
}
auto qrcode() {
- auto _k = opts["qrcode"];
- return _k;
+ return opts["qrcode"];
}
auto sisupod() {
- auto _k = opts["sisupod"];
- return _k;
+ return opts["sisupod"];
}
auto source() {
- auto _k = opts["source"];
- return _k;
+ return opts["source"];
}
auto sqlite_discrete() {
- auto _k = opts["sqlite-discrete"];
- return _k;
+ return opts["sqlite-discrete"];
}
auto sqlite_update() {
- auto _k = opts["sqlite-update"];
- return _k;
+ return opts["sqlite-update"];
}
auto sqlite_create() {
- auto _k = opts["sqlite-create"];
- return _k;
+ return opts["sqlite-create"];
}
auto sqlite_drop() {
- auto _k = opts["sqlite-drop"];
- return _k;
+ return opts["sqlite-drop"];
}
auto text() {
- auto _k = opts["text"];
- return _k;
+ return opts["text"];
}
auto verbose() {
- auto _k = opts["verbose"];
- return _k;
+ return opts["verbose"];
}
auto xhtml() {
- auto _k = opts["xhtml"];
- return _k;
+ return opts["xhtml"];
}
auto xml_dom() {
- auto _k = opts["xml-dom"];
- return _k;
+ return opts["xml-dom"];
}
auto xml_sax() {
- auto _k = opts["xml-sax"];
- return _k;
+ return opts["xml-sax"];
}
auto section_toc() {
- auto _k = opts["section_toc"];
- return _k;
+ return opts["section_toc"];
}
auto section_body() {
- auto _k = opts["section_body"];
- return _k;
+ return opts["section_body"];
}
auto section_endnotes() {
- auto _k = opts["section_endnotes"];
- return _k;
+ return opts["section_endnotes"];
}
auto section_glossary() {
- auto _k = opts["section_glossary"];
- return _k;
+ return opts["section_glossary"];
}
auto section_biblio() {
- auto _k = opts["section_biblio"];
- return _k;
+ return opts["section_biblio"];
}
auto section_bookindex() {
- auto _k = opts["section_bookindex"];
- return _k;
+ return opts["section_bookindex"];
}
auto section_blurb() {
- auto _k = opts["section_blurb"];
- return _k;
+ return opts["section_blurb"];
}
auto backmatter() {
- auto _k = opts["backmatter"];
- return _k;
+ return opts["backmatter"];
}
auto skip_output() {
- auto _k = opts["skip-output"];
- return _k;
+ return opts["skip-output"];
}
auto languages_set() {
- auto _k = settings["lang"].split(",");
- return _k;
+ return settings["lang"].split(",");
}
auto output_dir_set() {
- auto _k = settings["output-dir"];
- return _k;
+ return settings["output-dir"];
}
}
auto _opt_action = OptActions();
#+END_SRC
-***** getopt processing path, _manifest[] >>
+***** getopt processing path, _manifest[] >>
#+NAME: sdp_args
#+BEGIN_SRC d
@@ -504,24 +467,28 @@ foreach(arg; args[1..$]) {
"file not found: «" ~
sisudoc_txt_ ~ "»"
);
- try {
- if (exists(sisudoc_txt_)) {
- contents_location_raw_ = sisudoc_txt_.readText;
+ if (exists(sisudoc_txt_)) {
+ try {
+ if (exists(sisudoc_txt_)) {
+ contents_location_raw_ = sisudoc_txt_.readText;
+ }
}
- }
- catch (ErrnoException ex) {
- }
- catch (FileException ex) {
- // Handle errors
- }
- if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
- foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
- foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
- contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ // Handle errors
+ }
+ if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
+ foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
+ foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
+ contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
+ }
}
+ } else {
+ contents_location_ = contents_location_raw_;
}
- } else { // (file name with path \n)+
- contents_location_ = contents_location_raw_;
+ } else {
+ writeln("manifest not found: ", sisudoc_txt_);
}
auto contents_locations_arr
= (cast(char[]) contents_location_).split;
@@ -542,7 +509,11 @@ foreach(arg; args[1..$]) {
}
}
} else if (arg.match(rgx.src_pth_sst_or_ssm)) {
- _manifests ~= PathMatters!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
+ if (exists(arg)==0) {
+ writeln("ERROR >> Processing Skipped! File not found: ", arg);
+ } else {
+ _manifests ~= PathMatters!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
+ }
} else if (arg.match(rgx.src_pth_zip)) {
// fns_src ~= arg; // gather input markup source file names for processing
} else { // anything remaining, unused
@@ -564,11 +535,17 @@ auto conf_files_composite_make = confFilesSDLtoStruct!()(sdl_root_config_documen
#+NAME: sdp_do_selected
#+BEGIN_SRC d
if (!(_opt_action.skip_output)) {
+ debug(steps) {
+ writeln("step0 commence → (without processing files)");
+ }
outputHubOp!()(_opt_action);
+ debug(steps) {
+ writeln("- step0 complete");
+ }
}
#+END_SRC
-** _2b. processing: loop each file_ [+2] :loop:files:
+** _2b. processing: (loop each file)_ [+2] :loop:files:
*** scope (loop) :scope:
#+NAME: sdp_each_file_do_scope
@@ -604,7 +581,7 @@ enforce(
- doc_abstraction (the document)
- doc_matters
-#+NAME: sdp_abstraction
+#+NAME: sdp_each_file_do_abstraction
#+BEGIN_SRC d
auto t = SiSUabstraction!()(_env, _opt_action, manifest);
static assert(!isTypeTuple!(t));
@@ -644,7 +621,13 @@ if ((doc_matters.opt.action.debug_do)
#+BEGIN_SRC d
/+ ↓ output hub +/
if (!(doc_matters.opt.action.skip_output)) {
+ debug(steps) {
+ writeln("step5 commence → (process outputs)");
+ }
outputHub!()(doc_abstraction, doc_matters);
+ debug(steps) {
+ writeln("- step5 complete");
+ }
}
#+END_SRC
@@ -700,7 +683,7 @@ template SiSUabstraction() {
}
#+END_SRC
-** 1. raw file content split, doc: _header_, _content_ +(lists: subdocs? images?) >>
+** 1. raw file content split, doc: _header_, _content_ +(lists: subdocs? images?) >>
- [[./meta_read_source_files.org][meta_read_source_files]]
- read in the _marked up source document_ and
@@ -731,8 +714,7 @@ if build source pod requested all information needed to build it available at th
/+ ↓ read file (filename with path) +/
/+ ↓ file tuple of header and content +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__,
- ": step1 commence → (get document header & body & insert file list & if needed image list)"
+ writeln("step1 commence → (get document header & body & insert file list & if needed image list)"
);
}
auto _header_body_insertfilelist_imagelist
@@ -740,7 +722,7 @@ auto _header_body_insertfilelist_imagelist
static assert(!isTypeTuple!(_header_body_insertfilelist_imagelist));
static assert(_header_body_insertfilelist_imagelist.length==4);
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step1 complete");
+ writeln("- step1 complete");
}
debug(header_and_body) {
writeln(header);
@@ -766,21 +748,19 @@ debug(header_and_body) {
#+BEGIN_SRC d
/+ ↓ split header into make and meta +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__,
- ": step2 commence → (doc header: make & meta as struct)"
- );
+ writeln("step2 commence → (read document header - toml or sdlang, return struct)");
}
auto _make_and_meta_struct
= docHeaderMakeAndMetaTupExtractAndConvertToStruct!()(
conf_files_composite_make,
_header_body_insertfilelist_imagelist[headBody.header]
- ); // breakage ...
+ );
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step2 complete");
+ writeln("- step2 complete");
}
#+END_SRC
-** 3. _document abstraction, tuple_ (output-pre-processing) >>
+** 3. _document abstraction, tuple_ (output-pre-processing) >>
- [[./meta_abstraction.org][meta_abstraction]]
- prepare the document abstraction used in downstream processing
@@ -798,7 +778,7 @@ debug(steps) {
#+BEGIN_SRC d
/+ ↓ document abstraction: process document, return abstraction as tuple +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
+ writeln("step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
}
auto da = SiSUdocAbstraction!()(
_header_body_insertfilelist_imagelist[headBody.body_content],
@@ -813,11 +793,11 @@ string[] _doc_html_segnames = da[docAbst.segnames];
string[] _doc_epub_segnames_0_4 = da[docAbst.segnames_0_4];
auto _images = da[docAbst.images];
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step3 complete");
+ writeln("- step3 complete");
}
#+END_SRC
-** 4. _document matters_ (doc info gathered, various sources) >>
+** 4. _document matters_ (doc info gathered, various sources) >>
- prepare document_matters, miscellany about processing and the document of use
in downstream processing
@@ -825,12 +805,11 @@ debug(steps) {
#+NAME: sdp_each_file_do_document_matters
#+BEGIN_SRC d
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step4 commence → (doc_matters)");
+ writeln("step4 commence → (doc_matters)");
}
struct DocumentMatters {
auto conf_make_meta() { // TODO meld with all make instructions
- auto _k = _make_and_meta_struct;
- return _k;
+ return _make_and_meta_struct;
}
auto env() {
struct Env_ {
@@ -856,51 +835,15 @@ struct DocumentMatters {
return Opt_();
}
auto src() {
+ return _manifest.src;
+ }
+ auto src_path_info() {
+ return SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
+ }
+ auto srcs() {
struct SRC_ {
- auto is_pod() {
- return _manifest.src.is_pod;
- }
- auto filename() {
- return _manifest.src.filename;
- }
- auto language() {
- return _manifest.src.lng;
- }
- auto path_info() {
- auto _k = SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
- return _k;
- }
- auto file_with_absolute_path() {
- auto _k = _manifest.src.file_with_absolute_path;
- return _k;
- }
- auto absolute_path_to_src() {
- auto _k = _manifest.src.absolute_path_to_src;
- return _k;
- }
- auto base_dir() {
- auto _k = _manifest.src.base_dir;
- return _k;
- }
- auto base_parent_dir_path() {
- auto _k = _manifest.src.base_parent_dir_path;
- return _k;
- }
- auto base_dir_path() {
- auto _k = _manifest.src.base_dir_path;
- return _k;
- }
- auto media_dir_path() {
- auto _k = _manifest.src.media_dir_path;
- return _k;
- }
- auto base_parent_dir() {
- auto _k = _manifest.src.base_parent_dir;
- return _k;
- }
auto file_insert_list() {
- string[] _k = _header_body_insertfilelist_imagelist[headBody.insert_file_list];
- return _k;
+ return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
}
auto image_list() {
return _images;
@@ -909,48 +852,19 @@ struct DocumentMatters {
return SRC_();
}
auto pod() {
- struct Pod_ {
- auto src_is_pod() {
- return _manifest.pod.src_is_pod;
- }
- auto manifest_list_of_filenames() {
- return _manifest.pod.manifest_list_of_filenames;
- }
- auto manifest_list_of_languages() {
- return _manifest.pod.manifest_list_of_languages;
- }
- auto manifest_filename() {
- return _manifest.pod.manifest_filename;
- }
- auto manifest_path() {
- return _manifest.pod.manifest_path;
- }
- auto manifest_file_with_path() {
- return _manifest.pod.manifest_file_with_path;
- }
- auto config_dirs() {
- return _manifest.pod.config_dirs;
- }
- auto image_dirs() {
- return _manifest.pod.image_dirs;
- }
- }
- return Pod_();
+ return _manifest.pod;
}
auto xml() {
struct XML_ {
auto keys_seq() {
/+ contains .seg & .scroll sequences +/
- auto _k = _document_section_keys_sequenced;
- return _k;
+ return _document_section_keys_sequenced;
}
string[] segnames() {
- string[] _k = _doc_html_segnames;
- return _k;
+ return _doc_html_segnames;
}
string[] segnames_lv_0_to_4() {
- string[] _k = _doc_epub_segnames_0_4;
- return _k;
+ return _doc_epub_segnames_0_4;
}
}
return XML_();
@@ -961,7 +875,7 @@ struct DocumentMatters {
}
auto doc_matters = DocumentMatters();
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step4 complete");
+ writeln("- step4 complete");
}
#+END_SRC
diff --git a/src/sdp/meta/metadoc.d b/src/sdp/meta/metadoc.d
index 129e53c..cbc5d51 100644
--- a/src/sdp/meta/metadoc.d
+++ b/src/sdp/meta/metadoc.d
@@ -42,8 +42,7 @@ template SiSUabstraction() {
/+ ↓ read file (filename with path) +/
/+ ↓ file tuple of header and content +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__,
- ": step1 commence → (get document header & body & insert file list & if needed image list)"
+ writeln("step1 commence → (get document header & body & insert file list & if needed image list)"
);
}
auto _header_body_insertfilelist_imagelist
@@ -51,7 +50,7 @@ template SiSUabstraction() {
static assert(!isTypeTuple!(_header_body_insertfilelist_imagelist));
static assert(_header_body_insertfilelist_imagelist.length==4);
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step1 complete");
+ writeln("- step1 complete");
}
debug(header_and_body) {
writeln(header);
@@ -60,21 +59,19 @@ template SiSUabstraction() {
}
/+ ↓ split header into make and meta +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__,
- ": step2 commence → (doc header: make & meta as struct)"
- );
+ writeln("step2 commence → (read document header - toml or sdlang, return struct)");
}
auto _make_and_meta_struct
= docHeaderMakeAndMetaTupExtractAndConvertToStruct!()(
conf_files_composite_make,
_header_body_insertfilelist_imagelist[headBody.header]
- ); // breakage ...
+ );
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step2 complete");
+ writeln("- step2 complete");
}
/+ ↓ document abstraction: process document, return abstraction as tuple +/
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
+ writeln("step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
}
auto da = SiSUdocAbstraction!()(
_header_body_insertfilelist_imagelist[headBody.body_content],
@@ -89,15 +86,14 @@ template SiSUabstraction() {
string[] _doc_epub_segnames_0_4 = da[docAbst.segnames_0_4];
auto _images = da[docAbst.images];
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step3 complete");
+ writeln("- step3 complete");
}
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step4 commence → (doc_matters)");
+ writeln("step4 commence → (doc_matters)");
}
struct DocumentMatters {
auto conf_make_meta() { // TODO meld with all make instructions
- auto _k = _make_and_meta_struct;
- return _k;
+ return _make_and_meta_struct;
}
auto env() {
struct Env_ {
@@ -123,51 +119,15 @@ template SiSUabstraction() {
return Opt_();
}
auto src() {
+ return _manifest.src;
+ }
+ auto src_path_info() {
+ return SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
+ }
+ auto srcs() {
struct SRC_ {
- auto is_pod() {
- return _manifest.src.is_pod;
- }
- auto filename() {
- return _manifest.src.filename;
- }
- auto language() {
- return _manifest.src.lng;
- }
- auto path_info() {
- auto _k = SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
- return _k;
- }
- auto file_with_absolute_path() {
- auto _k = _manifest.src.file_with_absolute_path;
- return _k;
- }
- auto absolute_path_to_src() {
- auto _k = _manifest.src.absolute_path_to_src;
- return _k;
- }
- auto base_dir() {
- auto _k = _manifest.src.base_dir;
- return _k;
- }
- auto base_parent_dir_path() {
- auto _k = _manifest.src.base_parent_dir_path;
- return _k;
- }
- auto base_dir_path() {
- auto _k = _manifest.src.base_dir_path;
- return _k;
- }
- auto media_dir_path() {
- auto _k = _manifest.src.media_dir_path;
- return _k;
- }
- auto base_parent_dir() {
- auto _k = _manifest.src.base_parent_dir;
- return _k;
- }
auto file_insert_list() {
- string[] _k = _header_body_insertfilelist_imagelist[headBody.insert_file_list];
- return _k;
+ return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
}
auto image_list() {
return _images;
@@ -176,48 +136,19 @@ template SiSUabstraction() {
return SRC_();
}
auto pod() {
- struct Pod_ {
- auto src_is_pod() {
- return _manifest.pod.src_is_pod;
- }
- auto manifest_list_of_filenames() {
- return _manifest.pod.manifest_list_of_filenames;
- }
- auto manifest_list_of_languages() {
- return _manifest.pod.manifest_list_of_languages;
- }
- auto manifest_filename() {
- return _manifest.pod.manifest_filename;
- }
- auto manifest_path() {
- return _manifest.pod.manifest_path;
- }
- auto manifest_file_with_path() {
- return _manifest.pod.manifest_file_with_path;
- }
- auto config_dirs() {
- return _manifest.pod.config_dirs;
- }
- auto image_dirs() {
- return _manifest.pod.image_dirs;
- }
- }
- return Pod_();
+ return _manifest.pod;
}
auto xml() {
struct XML_ {
auto keys_seq() {
/+ contains .seg & .scroll sequences +/
- auto _k = _document_section_keys_sequenced;
- return _k;
+ return _document_section_keys_sequenced;
}
string[] segnames() {
- string[] _k = _doc_html_segnames;
- return _k;
+ return _doc_html_segnames;
}
string[] segnames_lv_0_to_4() {
- string[] _k = _doc_epub_segnames_0_4;
- return _k;
+ return _doc_epub_segnames_0_4;
}
}
return XML_();
@@ -228,7 +159,7 @@ template SiSUabstraction() {
}
auto doc_matters = DocumentMatters();
debug(steps) {
- writeln(__LINE__, ":", __FILE__, ": step4 complete");
+ writeln("- step4 complete");
}
auto t = tuple(doc_abstraction, doc_matters);
static assert(t.length==2);
diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d
index 52446e8..15a7a67 100644
--- a/src/sdp/meta/read_config_files.d
+++ b/src/sdp/meta/read_config_files.d
@@ -16,8 +16,8 @@ static template configInSite() {
auto possible_config_path_locations = conf_file_details.possible_config_path_locations.local_site;
string config_file_str;
debug(io) {
- writeln("in config filename: ", conf_sdl);
- writeln("in config possible path locations: ", possible_config_path_locations);
+ writeln("WARNING (io debug) in config filename: ", conf_sdl);
+ 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_sdl)).array;
@@ -27,7 +27,7 @@ static template configInSite() {
try {
if (exists(conf_file)) {
debug(io) {
- writeln("in config file found: ", conf_file);
+ writeln("WARNING (io debug) in config file found: ", conf_file);
}
config_file_str = conf_file.readText;
break;
@@ -53,8 +53,8 @@ static template configInDoc() {
auto possible_config_path_locations = conf_file_details.possible_config_path_locations.document;
string config_file_str;
debug(io) {
- writeln("in config filename: ", conf_sdl);
- writeln("in config possible path locations: ", possible_config_path_locations);
+ writeln("WARNING (io debug) in config filename: ", conf_sdl);
+ 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_sdl)).array;
@@ -64,7 +64,7 @@ static template configInDoc() {
try {
if (exists(conf_file)) {
debug(io) {
- writeln("in config file found: ", conf_file);
+ writeln("WARNING (io debug) in config file found: ", conf_file);
}
config_file_str = conf_file.readText;
break;
diff --git a/src/sdp/meta/rgx.d b/src/sdp/meta/rgx.d
index c196ad2..fe9e36d 100644
--- a/src/sdp/meta/rgx.d
+++ b/src/sdp/meta/rgx.d
@@ -212,6 +212,7 @@ static template SiSUrgxInit() {
static src_fn_find_inserts = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);
static src_base_parent_dir_name = ctRegex!(`[/](?P<dir>(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure
+ static src_formalised_file_path_parts = ctRegex!(`(?P<pth>(?:[/a-zA-Z0-9._-]+?)(?P<dir>[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalized dir structure
/+ inline markup footnotes endnotes +/
static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");
static inline_notes_al_gen = ctRegex!(`【.+?】`, "m");
diff --git a/src/sdp/output/epub3.d b/src/sdp/output/epub3.d
index 3c8eb4d..131d6f9 100644
--- a/src/sdp/output/epub3.d
+++ b/src/sdp/output/epub3.d
@@ -84,7 +84,7 @@ template outputEPub3() {
content ~= parts["manifest_documents"];
// TODO sort jpg & png
content ~= " " ~ "<!-- Images -->" ~ "\n ";
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
content ~= format(q"¶ <item id="%s" href="%s/%s" media-type="image/%s" />
¶",
image.baseName.stripExtension,
@@ -712,24 +712,24 @@ template outputEPub3() {
createZipFile!()(fn_epub, zip.build());
}
{ /+ OEBPS/_sisu/image (images) +/
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(epub_output) {
- if (exists(doc_matters.src.path_info.image_root ~ "/" ~ image)) {
- (doc_matters.src.path_info.image_root ~ "/" ~ image)
+ if (exists(doc_matters.src_path_info.image_root ~ "/" ~ image)) {
+ (doc_matters.src_path_info.image_root ~ "/" ~ image)
.copy((pth_epub3.dbg_doc_oebps_image(doc_matters.src.filename)) ~ "/" ~ image);
}
}
}
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(epub_output) {
debug(epub_images) {
writeln(
- doc_matters.src.path_info.image_root, image, " -> ",
+ doc_matters.src_path_info.image_root, image, " -> ",
pth_epub3.dbg_doc_oebps_image(doc_matters.src.filename), "/", image
);
}
}
- auto fn_src = doc_matters.src.path_info.image_root ~ image;
+ auto fn_src = doc_matters.src_path_info.image_root ~ image;
auto fn_out = pth_epub3.doc_oebps_image(doc_matters.src.filename).to!string ~ "/" ~ image;
if (exists(fn_src)) {
{
diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d
index 4a1c2e4..537de45 100644
--- a/src/sdp/output/paths_output.d
+++ b/src/sdp/output/paths_output.d
@@ -211,7 +211,7 @@ template SiSUpathsSQLite() {
return fn_src.baseName.stripExtension;
}
string base() {
- return asNormalizedPath((out_pth.output_base).chainPath(base_dir)).array;
+ return asNormalizedPath((out_pth.output_root).chainPath(base_dir)).array;
}
string seg(string fn_src) {
return asNormalizedPath(base.chainPath(base_filename(fn_src))).array;
diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d
index d141b86..731fff3 100644
--- a/src/sdp/output/paths_source.d
+++ b/src/sdp/output/paths_source.d
@@ -24,19 +24,30 @@ template PodManifest() {
}
auto pod_manifest_path() {
string _manifest_path;
- if (isValidPath(_pth) && _pth.isDir
- && ((_pth.chainPath(pod_manifest_filename).array).isFile)) {
+ if ((isValidPath(_pth) && exists(_pth)!=0 && _pth.isDir)
+ && (exists(_pth.chainPath(pod_manifest_filename).array)!=0
+ && (_pth.chainPath(pod_manifest_filename).array).isFile)) {
_manifest_path = _pth;
} else if (_pth.match(rgx.src_pth_contents)
- && (_pth.isFile)) {
+ && exists(_pth)!=0 && _pth.isDir && (_pth.isFile)) {
_manifest_path = dirName(_pth);
- // } else { // _manifest_path = "";
+ } else {
+ _manifest_path = _pth; // _manifest_path = null;
}
return _manifest_path;
}
- auto pod_manifest_file_with_path() {
- string _manifest_path_and_file = pod_manifest_path.chainPath(pod_manifest_filename).array;
- return _manifest_path_and_file;
+ string pod_manifest_file_with_path() {
+ string _k;
+ if (exists(pod_manifest_path.chainPath(pod_manifest_filename).array)!=0) {
+ _k = pod_manifest_path.chainPath(pod_manifest_filename).array;
+ } else if (exists(pod_manifest_path)!=0) {
+ _k = pod_manifest_path;
+ }
+ if (exists(_k)==0) {
+ writeln("ERROR >> Processing Skipped! Manifest not found: ", _k);
+ _k = null;
+ }
+ return _k;
}
}
return ManifestFile_();
@@ -139,6 +150,9 @@ template PathMatters() {
}
return _k;
}
+ auto language() {
+ return lng();
+ }
auto file_with_absolute_path() {
string _pth = _env["pwd"].chainPath(path_and_fn).array;
return _pth;
@@ -153,13 +167,15 @@ template PathMatters() {
auto m = (absolute_path_to_src)
.match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
assert(_dir == m.captures["dir"]);
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../../")).array;
assert(_dir == absolute_path_to_src.match(rgx.src_base_parent_dir_name).captures["dir"]);
}
- writeln("--> ", _dir);
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_dir) ", _dir);
+ }
return _dir;
}
auto base_parent_dir_path() {
@@ -168,35 +184,42 @@ template PathMatters() {
auto m = (absolute_path_to_src)
.match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../../")).array;
}
return _dir;
}
auto base_dir_path() { // looks like there is work to do
string _dir;
- if ( // TODO this should catch generated --source sisupod, untested, needs manifest
+ if (
auto m = (absolute_path_to_src)
- .match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
+ .match(rgx.src_formalised_file_path_parts)
+ ) {
+ _dir = asNormalizedPath(m.captures["pth"]).array;
+ } else if ( // TODO this should catch generated --source sisupod, untested, needs manifest
+ auto m = (absolute_path_to_src)
+ .match(regex(r"[/](?P<dir>(?:[a-zA-Z0-9._-]+))/sisupod/" ~ filename.stripExtension))
) {
- _dir = asAbsolutePath(path_and_fn.chainPath("../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../")).array;
} else {
- _dir = asAbsolutePath(path_and_fn.chainPath("../../")).array;
+ _dir = asNormalizedPath(path_and_fn.chainPath("../../")).array;
+ }
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_dir_path) ", _dir);
}
- writeln("--> ", _dir);
return _dir;
}
auto media_dir_path() { // TODO rework, can base directly on src fn path
- auto _dir = asAbsolutePath(base_dir_path.chainPath("media")).array;
+ string _dir = asNormalizedPath(base_dir_path.chainPath("media")).array;
return _dir;
}
auto image_dir_path() {
- auto _dir = asAbsolutePath(base_dir_path.chainPath("media/image")).array;
+ string _dir = asNormalizedPath(base_dir_path.chainPath("media/image")).array;
return _dir;
}
auto conf_dir_path() {
- auto _dir = asAbsolutePath(base_dir_path.chainPath("conf")).array;
+ auto _dir = asNormalizedPath(base_dir_path.chainPath("conf")).array;
return _dir;
}
auto base_parent_dir() {
@@ -209,7 +232,9 @@ template PathMatters() {
} else {
_dir = (absolute_path_to_src).match(rgx.src_base_parent_dir_name).captures["dir"];
}
- writeln("--> ", _dir);
+ if ((_opt_actions.debug_do)) {
+ writeln("--> (base_parent_dir) ", _dir);
+ }
return _dir;
}
auto config_dirs() { // TODO
diff --git a/src/sdp/output/rgx.d b/src/sdp/output/rgx.d
index 1c32351..c962937 100644
--- a/src/sdp/output/rgx.d
+++ b/src/sdp/output/rgx.d
@@ -31,6 +31,7 @@ static template SiSUoutputRgxInit() {
static src_fn_find_inserts = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);
static src_base_parent_dir_name = ctRegex!(`[/](?P<dir>(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure
+ static src_formalised_file_path_parts = ctRegex!(`(?P<pth>(?:[/a-zA-Z0-9._-]+?)(?P<dir>[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalized dir structure
/+ inline markup footnotes endnotes +/
static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");
static inline_notes_al_gen = ctRegex!(`【.+?】`, "m");
diff --git a/src/sdp/output/source_sisupod.d b/src/sdp/output/source_sisupod.d
index c48a0e3..4e3bfc1 100644
--- a/src/sdp/output/source_sisupod.d
+++ b/src/sdp/output/source_sisupod.d
@@ -16,8 +16,8 @@ template SiSUpod() {
}
mixin SiSUoutputRgxInit;
string pwd = doc_matters.env.pwd;
- auto src_path_info = doc_matters.src.path_info;
- auto pth_sisudoc_src = doc_matters.src.path_info;
+ auto src_path_info = doc_matters.src_path_info;
+ auto pth_sisudoc_src = doc_matters.src_path_info;
auto pths_sisupod = SiSUpathsSisupods!()(doc_matters);
mixin SiSUlanguageCodes;
auto lang = Lang();
@@ -58,14 +58,17 @@ template SiSUpod() {
auto zip = new ZipArchive();
auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.src.filename).zpod;
{ /+ bundle images +/
- foreach (image; doc_matters.src.image_list) {
+ foreach (image; doc_matters.srcs.image_list) {
debug(sisupodimages) {
writeln(
pth_sisudoc_src.image_root.to!string, "/", image, " -> ",
pths_sisupod.image_root(doc_matters.src.filename).zpod, "/", image
);
}
- auto fn_src_in = pth_sisudoc_src.image_root.to!string ~ "/" ~ image;
+ auto fn_src_in = ((doc_matters.src.is_pod)
+ ? doc_matters.src.image_dir_path
+ : pth_sisudoc_src.image_root).to!string
+ ~ "/" ~ image;
auto fn_src_out_sisupod_zip_base
= pths_sisupod.image_root(doc_matters.src.filename).zpod.to!string
~ "/" ~ image;
@@ -74,7 +77,7 @@ template SiSUpod() {
~ "/" ~ image;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -89,13 +92,15 @@ template SiSUpod() {
}
} else {
if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (image): ", fn_src_in);
+ writeln("WARNING (io) src out NOT found (image): ", fn_src_in);
}
}
}
} { /+ bundle sisu_document_make +/
- auto fn_src_in
- = pth_sisudoc_src.conf_root.to!string ~ "/" ~ "sisu_document_make"; // check (_sisu/sisu_document_make)
+ auto fn_src_in = ((doc_matters.src.is_pod)
+ ? doc_matters.src.conf_dir_path
+ : pth_sisudoc_src.conf_root).to!string
+ ~ "/" ~ "sisu_document_make";
auto fn_src_out_sisupod_zip_base
= pths_sisupod.conf_root(doc_matters.src.filename).zpod.to!string ~ "/" ~ "sisu_document_make";
auto fn_src_out_filesystem
@@ -103,7 +108,7 @@ template SiSUpod() {
~ "/" ~ "sisu_document_make"; // TODO
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -117,8 +122,9 @@ template SiSUpod() {
zip.addMember(zip_arc_member_file);
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (document make): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (document make): ", fn_src_in);
}
}
} { /+ TODO bundle primary file +/
@@ -133,7 +139,7 @@ template SiSUpod() {
string[] filelist_src_zpod_arr;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
filelist_src_out_sisupod_arr ~= fn_src_out_sisupod_zip_base;
filelist_src_zpod_arr ~= fn_src_out_inside_pod;
@@ -154,13 +160,14 @@ template SiSUpod() {
zip.addMember(zip_arc_member_file);
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (markup source): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (markup source): ", fn_src_in);
}
}
} { /+ bundle insert files +/
- if (doc_matters.src.file_insert_list.length > 0) {
- foreach (insert_file; doc_matters.src.file_insert_list) {
+ if (doc_matters.srcs.file_insert_list.length > 0) {
+ foreach (insert_file; doc_matters.srcs.file_insert_list) {
debug(sisupod) {
writeln(
insert_file, " -> ",
@@ -186,7 +193,7 @@ template SiSUpod() {
).filesystem_open_zpod.to!string;
if (exists(fn_src_in)) {
debug(io) {
- writeln("src out found: ", fn_src_in);
+ writeln("WARNING (io debug) src out found: ", fn_src_in);
}
if (doc_matters.opt.action.source) {
fn_src_in.copy(fn_src_out_filesystem);
@@ -201,8 +208,9 @@ template SiSUpod() {
createZipFile!()(fn_sisupod, zip.build());
}
} else {
- if (doc_matters.opt.action.verbose) {
- writeln("src out NOT found (insert file): ", fn_src_in);
+ if (doc_matters.opt.action.verbose
+ || doc_matters.opt.action.debug_do) {
+ writeln("WARNING (io) src out NOT found (insert file): ", fn_src_in);
}
}
}
diff --git a/src/sdp/output/sqlite.d b/src/sdp/output/sqlite.d
index 4abe3d1..25940cc 100644
--- a/src/sdp/output/sqlite.d
+++ b/src/sdp/output/sqlite.d
@@ -457,6 +457,7 @@ template SQLiteBuildTablesAndPopulate() {
auto ref I doc_matters,
) {
auto pth_sqlite = SiSUpathsSQLite!()(doc_matters.output_path, doc_matters.src.language);
+ pth_sqlite.base.mkdirRecurse;
auto db = Database(pth_sqlite.sqlite_file(doc_matters.env.pwd.baseName));
// auto db = Database(":memory:"); // open database in memory
if (doc_matters.opt.action.sqlite_create) {
@@ -816,7 +817,10 @@ template SQLiteBuildTablesAndPopulate() {
// insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links);
insert_metadata.execute(); insert_metadata.reset();
/+ watch +/
- writeln("sql statement executed");
+ writeln(" ", pth_sqlite.sqlite_file(doc_matters.env.pwd.baseName));
+ if ((doc_matters.opt.action.verbose)) {
+ writeln("sql statement executed");
+ }
assert(db.totalChanges == 1);
//
Statement insert_doc_objects = db.prepare("
@@ -1030,17 +1034,19 @@ template SQLiteBuildTablesAndPopulate() {
break;
}
if (obj.is_a == "heading") {
- writeln(
- "markup: ", obj.heading_lev_markup,
- "> ", obj.dom_markedup,
- "; collapsed: ", obj.heading_lev_collapsed,
- "> ", obj.dom_collapsed,
- "; ocn: ", obj.ocn,
- " node: ", obj.node,
- "; parent: ", obj.parent_lev_markup,
- "; ocn: ", obj.parent_ocn,
- "; ",
- );
+ if ((doc_matters.opt.action.verbose)) {
+ writeln(
+ "markup: ", obj.heading_lev_markup,
+ "> ", obj.dom_markedup,
+ "; collapsed: ", obj.heading_lev_collapsed,
+ "> ", obj.dom_collapsed,
+ "; ocn: ", obj.ocn,
+ " node: ", obj.node,
+ "; parent: ", obj.parent_lev_markup,
+ "; ocn: ", obj.parent_ocn,
+ "; ",
+ );
+ }
}
insert_doc_objects.bind(":t_of", obj.is_of);
insert_doc_objects.bind(":t_is", obj.is_a);
diff --git a/src/sdp/output/sqlite_discrete.d b/src/sdp/output/sqlite_discrete.d
index 0c323d1..b256389 100644
--- a/src/sdp/output/sqlite_discrete.d
+++ b/src/sdp/output/sqlite_discrete.d
@@ -457,6 +457,7 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
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("
@@ -813,7 +814,10 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
// insert_metadata.bind(":links", doc_matters.conf_make_meta.meta.links);
insert_metadata.execute(); insert_metadata.reset();
/+ watch +/
- writeln("sql statement executed");
+ 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("
@@ -1027,17 +1031,19 @@ template SQLiteDiscreteBuildTablesAndPopulate() {
break;
}
if (obj.is_a == "heading") {
- writeln(
- "markup: ", obj.heading_lev_markup,
- "> ", obj.dom_markedup,
- "; collapsed: ", obj.heading_lev_collapsed,
- "> ", obj.dom_collapsed,
- "; ocn: ", obj.ocn,
- " node: ", obj.node,
- "; parent: ", obj.parent_lev_markup,
- "; ocn: ", obj.parent_ocn,
- "; ",
- );
+ if ((doc_matters.opt.action.verbose)) {
+ writeln(
+ "markup: ", obj.heading_lev_markup,
+ "> ", obj.dom_markedup,
+ "; collapsed: ", obj.heading_lev_collapsed,
+ "> ", obj.dom_collapsed,
+ "; ocn: ", obj.ocn,
+ " node: ", obj.node,
+ "; parent: ", obj.parent_lev_markup,
+ "; ocn: ", obj.parent_ocn,
+ "; ",
+ );
+ }
}
insert_doc_objects.bind(":t_of", obj.is_of);
insert_doc_objects.bind(":t_is", obj.is_a);
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d
index 4e43a67..b0e75e6 100755
--- a/src/sdp/sdp.d
+++ b/src/sdp/sdp.d
@@ -1,9 +1,4 @@
#!/usr/bin/env rdmd
-/+
- sdp: sisu document parser
- a SiSU document parser writen in D
- see http://sisudoc.org.
-+/
module sdp.sisu_document_parser;
import
sdp.conf.compile_time_info,
@@ -30,7 +25,11 @@ import
sdp.output.paths_source;
mixin(import("version.txt"));
mixin CompileTimeInfo;
-/++ A SiSU document parser writen in D. +/
+/++
+name "sdp"
+description "A SiSU inspired document parser writen in D."
+homepage "http://sisudoc.org"
++/
void main(string[] args) {
mixin SiSUrgxInit;
mixin SiSUregisters;
@@ -149,152 +148,115 @@ void main(string[] args) {
}
struct OptActions {
auto assertions() {
- auto _k = opts["assertions"];
- return _k;
+ return opts["assertions"];
}
auto concordance() {
- auto _k = opts["concordance"];
- return _k;
+ return opts["concordance"];
}
auto debug_do() {
- auto _k = opts["debug"];
- return _k;
+ return opts["debug"];
}
auto digest() {
- auto _k = opts["digest"];
- return _k;
+ return opts["digest"];
}
auto docbook() {
- auto _k = opts["docbook"];
- return _k;
+ return opts["docbook"];
}
auto epub() {
- auto _k = opts["epub"];
- return _k;
+ return opts["epub"];
}
auto html() {
- auto _k = opts["html"];
- return _k;
+ return opts["html"];
}
auto html_seg() {
- auto _k = opts["html-seg"];
- return _k;
+ return opts["html-seg"];
}
auto html_scroll() {
- auto _k = opts["html-scroll"];
- return _k;
+ return opts["html-scroll"];
}
auto manifest() {
- auto _k = opts["manifest"];
- return _k;
+ return opts["manifest"];
}
auto ocn() {
- auto _k = opts["ocn"];
- return _k;
+ return opts["ocn"];
}
auto odt() {
- auto _k = opts["odt"];
- return _k;
+ return opts["odt"];
}
auto pdf() {
- auto _k = opts["pdf"];
- return _k;
+ return opts["pdf"];
}
auto postgresql() {
- auto _k = opts["postgresql"];
- return _k;
+ return opts["postgresql"];
}
auto qrcode() {
- auto _k = opts["qrcode"];
- return _k;
+ return opts["qrcode"];
}
auto sisupod() {
- auto _k = opts["sisupod"];
- return _k;
+ return opts["sisupod"];
}
auto source() {
- auto _k = opts["source"];
- return _k;
+ return opts["source"];
}
auto sqlite_discrete() {
- auto _k = opts["sqlite-discrete"];
- return _k;
+ return opts["sqlite-discrete"];
}
auto sqlite_update() {
- auto _k = opts["sqlite-update"];
- return _k;
+ return opts["sqlite-update"];
}
auto sqlite_create() {
- auto _k = opts["sqlite-create"];
- return _k;
+ return opts["sqlite-create"];
}
auto sqlite_drop() {
- auto _k = opts["sqlite-drop"];
- return _k;
+ return opts["sqlite-drop"];
}
auto text() {
- auto _k = opts["text"];
- return _k;
+ return opts["text"];
}
auto verbose() {
- auto _k = opts["verbose"];
- return _k;
+ return opts["verbose"];
}
auto xhtml() {
- auto _k = opts["xhtml"];
- return _k;
+ return opts["xhtml"];
}
auto xml_dom() {
- auto _k = opts["xml-dom"];
- return _k;
+ return opts["xml-dom"];
}
auto xml_sax() {
- auto _k = opts["xml-sax"];
- return _k;
+ return opts["xml-sax"];
}
auto section_toc() {
- auto _k = opts["section_toc"];
- return _k;
+ return opts["section_toc"];
}
auto section_body() {
- auto _k = opts["section_body"];
- return _k;
+ return opts["section_body"];
}
auto section_endnotes() {
- auto _k = opts["section_endnotes"];
- return _k;
+ return opts["section_endnotes"];
}
auto section_glossary() {
- auto _k = opts["section_glossary"];
- return _k;
+ return opts["section_glossary"];
}
auto section_biblio() {
- auto _k = opts["section_biblio"];
- return _k;
+ return opts["section_biblio"];
}
auto section_bookindex() {
- auto _k = opts["section_bookindex"];
- return _k;
+ return opts["section_bookindex"];
}
auto section_blurb() {
- auto _k = opts["section_blurb"];
- return _k;
+ return opts["section_blurb"];
}
auto backmatter() {
- auto _k = opts["backmatter"];
- return _k;
+ return opts["backmatter"];
}
auto skip_output() {
- auto _k = opts["skip-output"];
- return _k;
+ return opts["skip-output"];
}
auto languages_set() {
- auto _k = settings["lang"].split(",");
- return _k;
+ return settings["lang"].split(",");
}
auto output_dir_set() {
- auto _k = settings["output-dir"];
- return _k;
+ return settings["output-dir"];
}
}
auto _opt_action = OptActions();
@@ -321,24 +283,28 @@ void main(string[] args) {
"file not found: «" ~
sisudoc_txt_ ~ "»"
);
- try {
- if (exists(sisudoc_txt_)) {
- contents_location_raw_ = sisudoc_txt_.readText;
+ if (exists(sisudoc_txt_)) {
+ try {
+ if (exists(sisudoc_txt_)) {
+ contents_location_raw_ = sisudoc_txt_.readText;
+ }
}
- }
- catch (ErrnoException ex) {
- }
- catch (FileException ex) {
- // Handle errors
- }
- if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
- foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
- foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
- contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ // Handle errors
+ }
+ if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
+ foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
+ foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
+ contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
+ }
}
+ } else {
+ contents_location_ = contents_location_raw_;
}
- } else { // (file name with path \n)+
- contents_location_ = contents_location_raw_;
+ } else {
+ writeln("manifest not found: ", sisudoc_txt_);
}
auto contents_locations_arr
= (cast(char[]) contents_location_).split;
@@ -359,7 +325,11 @@ void main(string[] args) {
}
}
} else if (arg.match(rgx.src_pth_sst_or_ssm)) {
- _manifests ~= PathMatters!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
+ if (exists(arg)==0) {
+ writeln("ERROR >> Processing Skipped! File not found: ", arg);
+ } else {
+ _manifests ~= PathMatters!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
+ }
} else if (arg.match(rgx.src_pth_zip)) {
// fns_src ~= arg; // gather input markup source file names for processing
} else { // anything remaining, unused
@@ -368,7 +338,13 @@ void main(string[] args) {
}
if (!(_opt_action.skip_output)) {
+ debug(steps) {
+ writeln("step0 commence → (without processing files)");
+ }
outputHubOp!()(_opt_action);
+ debug(steps) {
+ writeln("- step0 complete");
+ }
}
if (_manifests.length > 1) { // _manifests[0] initialized dummy element
foreach(manifest; _manifests[1..$]) {
@@ -413,7 +389,13 @@ void main(string[] args) {
}
/+ ↓ output hub +/
if (!(doc_matters.opt.action.skip_output)) {
+ debug(steps) {
+ writeln("step5 commence → (process outputs)");
+ }
outputHub!()(doc_abstraction, doc_matters);
+ debug(steps) {
+ writeln("- step5 complete");
+ }
}
scope(exit) {
debug(checkdoc) {
@@ -433,9 +415,4 @@ void main(string[] args) {
}
}
unittest {
- /++
- name "sdp"
- description "A SiSU document parser writen in D."
- homepage "http://sisudoc.org"
- +/
}