From 524baa6ddd5f9cb49b1c5b015fbd6ef75ff72968 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 25 Jan 2018 17:13:52 -0500 Subject: paths, further adjustments --- maker.org | 67 ++++++++- org/compile_time_info.org | 2 + org/default_misc.org | 3 +- org/default_paths.org | 71 ++++++--- org/default_regex.org | 3 + org/imports.org | 2 + org/meta_abstraction.org | 2 + org/meta_debugs.org | 2 + org/meta_read_source_files.org | 13 +- org/output_hub.org | 2 + org/output_sisupod.org | 48 +++--- org/output_sqlite.org | 32 ++-- org/output_sqlite_discrete.org | 32 ++-- org/output_xmls.org | 16 +- org/output_xmls_css.org | 2 + org/output_zip.org | 2 + org/sdp.org | 316 ++++++++++++++------------------------- src/sdp/meta/metadoc.d | 111 +++----------- src/sdp/meta/read_config_files.d | 12 +- src/sdp/meta/rgx.d | 1 + src/sdp/output/epub3.d | 14 +- src/sdp/output/paths_output.d | 2 +- src/sdp/output/paths_source.d | 67 ++++++--- src/sdp/output/rgx.d | 1 + src/sdp/output/source_sisupod.d | 46 +++--- src/sdp/output/sqlite.d | 30 ++-- src/sdp/output/sqlite_discrete.d | 30 ++-- src/sdp/sdp.d | 179 ++++++++++------------ 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(?:[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(?:[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(?:[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(?:[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[a-z static src_fn_find_inserts = ctRegex!(`^(?P[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[im])$`); static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[ti])$`); static src_base_parent_dir_name = ctRegex!(`[/](?P(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure +static src_formalised_file_path_parts = ctRegex!(`(?P(?:[/a-zA-Z0-9._-]+?)(?P[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 ~= " " ~ "" ~ "\n "; - foreach (image; doc_matters.src.image_list) { + foreach (image; doc_matters.srcs.image_list) { content ~= format(q"¶ ¶", 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 <> <> <> -/++ 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) { <> <> @@ -82,7 +86,7 @@ void main(string[] args) { foreach(manifest; _manifests[1..$]) { if (!empty(manifest.src.filename)) { <> - <> + <> <> <> <> @@ -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[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[im])$`); static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[ti])$`); static src_base_parent_dir_name = ctRegex!(`[/](?P(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure + static src_formalised_file_path_parts = ctRegex!(`(?P(?:[/a-zA-Z0-9._-]+?)(?P[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 ~= " " ~ "" ~ "\n "; - foreach (image; doc_matters.src.image_list) { + foreach (image; doc_matters.srcs.image_list) { content ~= format(q"¶ ¶", 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(?:[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(?:[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(?:[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(?:[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[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[im])$`); static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[ti])$`); static src_base_parent_dir_name = ctRegex!(`[/](?P(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure + static src_formalised_file_path_parts = ctRegex!(`(?P(?:[/a-zA-Z0-9._-]+?)(?P[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" - +/ } -- cgit v1.2.3