aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/output
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp/output')
-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
7 files changed, 118 insertions, 72 deletions
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);