diff options
Diffstat (limited to 'src/sdp/output')
| -rw-r--r-- | src/sdp/output/epub3.d | 14 | ||||
| -rw-r--r-- | src/sdp/output/paths_output.d | 2 | ||||
| -rw-r--r-- | src/sdp/output/paths_source.d | 67 | ||||
| -rw-r--r-- | src/sdp/output/rgx.d | 1 | ||||
| -rw-r--r-- | src/sdp/output/source_sisupod.d | 46 | ||||
| -rw-r--r-- | src/sdp/output/sqlite.d | 30 | ||||
| -rw-r--r-- | src/sdp/output/sqlite_discrete.d | 30 | 
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);  | 
