aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-11-08 20:02:48 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit1d68345250b0fd26d3ea657ed28899dccaa324df (patch)
treea94ad71bfc5d081c15fd253f6bcc7a694141cd7f /src
parent0.20.0 sisupod & source dir structure changed (diff)
process filesystem/unzipped sisupod.zip
- src pod dir structure changes - notes - the plan is to have a src manifest of related .sst or .ssm files that can be pointed to for processing - multilingual documents [ponder persistence for multilingual documents] - in the case of multilingual documents, there will be multiple source documents on list with different language codes, and to build this list, persistence is required - inserted documents (from master .ssm or .sst) must track document root so inserts can be located, else not found - consider a commandline -o --output path specifier - steps - auto create filelist - for single source file - for multilinugual source files - process document by pointing at filelist (rather than file) - if necessary manually create filelist (for multilinugual source) - keep document root for document inserts (.ssi) process filesystem/unzipped sisupod.zip - source/sisupod path/dir structure representation changes
Diffstat (limited to 'src')
-rw-r--r--src/sdp/meta/rgx.d4
-rw-r--r--src/sdp/output/paths_output.d320
-rw-r--r--src/sdp/output/rgx.d4
-rw-r--r--src/sdp/output/source_sisupod.d137
-rwxr-xr-xsrc/sdp/sdp.d32
5 files changed, 346 insertions, 151 deletions
diff --git a/src/sdp/meta/rgx.d b/src/sdp/meta/rgx.d
index 90cf116..13b9e9f 100644
--- a/src/sdp/meta/rgx.d
+++ b/src/sdp/meta/rgx.d
@@ -197,6 +197,10 @@ static template SiSUrgxInit() {
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
static src_pth = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
+ static src_pth_contents = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
+ static src_pth_zip = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
+ static src_pth_unzip_pod = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
+ static src_pth_types = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
static src_fn =
ctRegex!(`^([a-zA-Z0-9._-]+/)*(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
static src_fn_master = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`);
diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d
index 2204965..a5ea0d9 100644
--- a/src/sdp/output/paths_output.d
+++ b/src/sdp/output/paths_output.d
@@ -10,131 +10,283 @@ import sdp.meta.rgx;
template SiSUpathsSisupod() {
mixin SiSUrgxInit;
static auto rgx = Rgx();
- string _base_dir = "sisupod";
+ string _base_dir_pod = "sisupod";
+ string _base_dir_doc = "sisudoc";
string _suffix = ".zip";
auto SiSUpathsSisupod()() {
struct _PathsStruct {
string base_filename(string fn_src) {
- return fn_src.baseName.stripExtension;
+ auto pth = fn_src.baseName.stripExtension;
+ return pth;
}
string sisupod_dir() {
- return _base_dir;
+ auto pth = _base_dir_pod;
+ return pth;
+ }
+ string sisudoc_dir() {
+ auto pth = _base_dir_doc;
+ return pth;
}
string sisupod_filename(string fn_src) {
- return _base_dir.chainPath(base_filename(fn_src) ~ _suffix).array;
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src) ~ _suffix).array;
+ return pth;
}
- string base(string fn_src) {
- return _base_dir.chainPath(base_filename(fn_src)).array;
+ string base_filesystem(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array;
+ assert(pth == _base_dir_pod ~ "/" ~ base_filename(fn_src),
+ pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename(fn_src) ~ "?");
+ return pth;
+ }
+ string base_pod(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array; // change this
+ return pth;
}
}
return _PathsStruct();
}
}
-template SiSUpathsSisupodZipped() {
+
+template SiSUpathsSisupods() {
mixin SiSUrgxInit;
static auto rgx = Rgx();
- auto SiSUpathsSisupodZipped(Ps,Lng)(
+ string _base_dir_pod = "sisupod";
+ string _base_dir_doc = "sisudoc";
+ string _suffix = ".zip";
+ auto SiSUpathsSisupods(Ps,Lng)(
Ps src_pth_info,
Lng lng,
) {
- struct _PathsStruct {
- auto spod_pths = SiSUpathsSisupod!()();
- string sisupod_dir() {
- return spod_pths.sisupod_dir;
- }
- string base_filename(string fn_src) {
- return spod_pths.base_filename(fn_src);
- }
- string sisupod_filename(string fn_src) {
- return spod_pths.sisupod_filename(fn_src);
- }
- string base(string fn_src) {
- return spod_pths.base(fn_src);
+ struct _PodPaths {
+ string base_filename_(string fn_src) {
+ auto pth = fn_src.baseName.stripExtension;
+ return pth;
+ }
+ string sisupod_dir_() {
+ auto pth = _base_dir_pod;
+ return pth;
+ }
+ string sisudoc_dir_() {
+ auto pth = _base_dir_doc;
+ return pth;
+ }
+ string sisupod_filename_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src) ~ _suffix).array;
+ return pth;
+ }
+ string base_filesystem_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array;
+ assert(pth == _base_dir_pod ~ "/" ~ base_filename_(fn_src),
+ pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename_(fn_src) ~ "?");
+ return pth;
+ }
+ string base_pod_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array; // change this
+ return pth;
+ }
+ auto base_filename(string fn_src) {
+ auto pth_1_ = base_filename_(fn_src);
+ auto pth_2_ = base_filename_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto sisupod_filename(string fn_src) {
+ auto pth_1_ = sisupod_filename_(fn_src);
+ auto pth_2_ = sisupod_filename_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto base(string fn_src) {
+ auto pth_1_ = "";
+ auto pth_2_ = base_filesystem_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto pod_root(string fn_src) {
- return "sisudoc";
- }
- auto media_root(string fn_src) {
- return pod_root(fn_src).chainPath("media").array;
+ auto pth_1_ = "";
+ auto pth_2_ = base(fn_src).filesystem_open_zpod.chainPath("").array; // "sisudoc"
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto conf_root(string fn_src) {
- return pod_root(fn_src).chainPath("conf").array;
- }
- auto text_root(string fn_src) {
- return media_root(fn_src).chainPath("text").array;
- }
- auto doc(string fn_src) {
- return text_root(fn_src);
- }
- auto doc_lng(string fn_src) {
- return text_root(fn_src).chainPath(lng).array;
- }
- auto image_root(string fn_src) {
- return media_root(fn_src).chainPath("image").array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "conf";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("conf").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto css(string fn_src) {
- return conf_root(fn_src).chainPath("css").array;
- }
- auto fn_doc(string fn_src) {
- return (doc_lng(fn_src)).chainPath(fn_src.baseName).array;
- }
- auto fn_doc_insert(string fn_src, string fn_insert) {
- return (doc_lng(fn_src)).chainPath(fn_insert.baseName).array;
- }
- }
- return _PathsStruct();
- }
-}
-template SiSUpathsSisupodFileSystem() {
- mixin SiSUrgxInit;
- static auto rgx = Rgx();
- auto SiSUpathsSisupodFileSystem(Ps,Lng)(
- Ps src_pth_info,
- Lng lng,
- ) {
- struct _PathsStruct {
- auto spod_pths = SiSUpathsSisupod!()();
- string base_filename(string fn_src) {
- return spod_pths.base_filename(fn_src);
- }
- string sisupod_filename(string fn_src) {
- return spod_pths.sisupod_filename(fn_src);
- }
- string base(string fn_src) {
- return spod_pths.base(fn_src);
- }
- auto pod_root(string fn_src) {
- return base(fn_src).chainPath("sisudoc").array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = conf_root(fn_src).zpod.chainPath("css").array;
+ auto pth_2_ = conf_root(fn_src).filesystem_open_zpod.chainPath("css").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto media_root(string fn_src) {
- return pod_root(fn_src).chainPath("media").array;
- }
- auto conf_root(string fn_src) {
- return pod_root(fn_src).chainPath("conf").array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "media";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("media").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto text_root(string fn_src) {
- return media_root(fn_src).chainPath("text").array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = media_root(fn_src).zpod.chainPath("text").array;
+ auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("text").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto doc(string fn_src) {
- return pod_root(fn_src);
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = text_root(fn_src).zpod;
+ auto pth_2_ = text_root(fn_src).filesystem_open_zpod;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto doc_lng(string fn_src) {
- return text_root(fn_src).chainPath(lng).array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = text_root(fn_src).zpod.chainPath(lng).array;
+ auto pth_2_ = text_root(fn_src).filesystem_open_zpod.chainPath(lng).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto image_root(string fn_src) {
- return media_root(fn_src).chainPath("image").array;
- }
- auto css(string fn_src) {
- return conf_root(fn_src).chainPath("css").array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = media_root(fn_src).zpod.chainPath("image").array;
+ auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("image").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto fn_pod_filelist(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "sisudoc.txt";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("sisudoc.txt").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto fn_doc(string fn_src) {
- return (doc_lng(fn_src)).chainPath(fn_src.baseName).array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_src.baseName).array;
+ auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_src.baseName).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
auto fn_doc_insert(string fn_src, string fn_insert) {
- return (doc_lng(fn_src)).chainPath(fn_insert.baseName).array;
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_insert.baseName).array;
+ auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_insert.baseName).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
}
}
- return _PathsStruct();
+ return _PodPaths();
}
}
template SiSUoutPaths() {
diff --git a/src/sdp/output/rgx.d b/src/sdp/output/rgx.d
index 343561b..1c0f4d3 100644
--- a/src/sdp/output/rgx.d
+++ b/src/sdp/output/rgx.d
@@ -16,6 +16,10 @@ static template SiSUoutputRgxInit() {
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
static src_pth = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
+ static src_pth_contents = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
+ static src_pth_zip = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
+ static src_pth_unzip_pod = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
+ static src_pth_types = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
static src_fn =
ctRegex!(`^([a-zA-Z0-9._-]+/)*(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
static src_fn_master = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`);
diff --git a/src/sdp/output/source_sisupod.d b/src/sdp/output/source_sisupod.d
index 9c83905..d83ae87 100644
--- a/src/sdp/output/source_sisupod.d
+++ b/src/sdp/output/source_sisupod.d
@@ -19,137 +19,145 @@ template SiSUpod() {
auto src_path_info = doc_matters.src_path_info;
string lng = doc_matters.language;
auto pth_sisudoc_src = doc_matters.src_path_info;
- auto pth_sisupod = SiSUpathsSisupodZipped!()(src_path_info, lng);
- auto pth_sisupod_filesystem = SiSUpathsSisupodFileSystem!()(src_path_info, lng);
+ auto pths_sisupod = SiSUpathsSisupods!()(src_path_info, lng);
mixin SiSUlanguageCodes;
auto lang = Lang();
static auto rgx = Rgx();
assert (doc_matters.source_filename.match(rgx.src_fn));
try {
/+ create directory structure +/
- if (!exists(pth_sisupod.sisupod_dir)) {
+ if (!exists(pths_sisupod.sisupod_dir_())) {
// used both by sisupod zipped (& sisupod filesystem (unzipped) which makes its own recursive dirs)
- pth_sisupod.sisupod_dir.mkdirRecurse;
+ pths_sisupod.sisupod_dir_().mkdirRecurse;
}
if (doc_matters.opt_action["source"]) {
- if (!exists(pth_sisupod_filesystem.text_root(doc_matters.source_filename))) {
- pth_sisupod_filesystem.text_root(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.text_root(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.text_root(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
- if (!exists(pth_sisupod_filesystem.conf_root(doc_matters.source_filename))) {
- pth_sisupod_filesystem.conf_root(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.conf_root(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.conf_root(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
- if (!exists(pth_sisupod_filesystem.media_root(doc_matters.source_filename))) {
- pth_sisupod_filesystem.media_root(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.media_root(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.media_root(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
- if (!exists(pth_sisupod_filesystem.css(doc_matters.source_filename))) {
- pth_sisupod_filesystem.css(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.css(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.css(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
- if (!exists(pth_sisupod_filesystem.image_root(doc_matters.source_filename))) {
- pth_sisupod_filesystem.image_root(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.image_root(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.image_root(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
- if (!exists(pth_sisupod_filesystem.doc_lng(doc_matters.source_filename))) {
- pth_sisupod_filesystem.doc_lng(doc_matters.source_filename).mkdirRecurse;
+ if (!exists(pths_sisupod.doc_lng(doc_matters.source_filename).filesystem_open_zpod)) {
+ pths_sisupod.doc_lng(doc_matters.source_filename).filesystem_open_zpod.mkdirRecurse;
}
}
debug(sisupod) {
writeln(__LINE__, ": ",
doc_matters.source_filename, " -> ",
- pth_sisupod_filesystem.fn_doc(doc_matters.source_filename)
+ pths_sisupod.fn_doc(doc_matters.source_filename).filesystem_open_zpod
);
}
auto zip = new ZipArchive();
- auto fn_sisupod = pth_sisupod.sisupod_filename(doc_matters.source_filename);
+ auto fn_sisupod = pths_sisupod.sisupod_filename(doc_matters.source_filename).zpod;
{ /+ bundle images +/
foreach (image; doc_matters.image_list) {
debug(sisupodimages) {
writeln(
pth_sisudoc_src.image_root.to!string, "/", image, " -> ",
- pth_sisupod.image_root(doc_matters.source_filename), "/", image
+ pths_sisupod.image_root(doc_matters.source_filename).zpod, "/", image
);
}
- auto fn_src = pth_sisudoc_src.image_root.to!string ~ "/" ~ image;
- auto fn_out = pth_sisupod.image_root(doc_matters.source_filename).to!string ~ "/" ~ image;
- auto fn_out_filesystem = pth_sisupod_filesystem.image_root(doc_matters.source_filename).to!string ~ "/" ~ image;
- if (exists(fn_src)) {
+ auto fn_src_in = pth_sisudoc_src.image_root.to!string ~ "/" ~ image;
+ auto fn_src_out_sisupod_zip_base = pths_sisupod.image_root(doc_matters.source_filename).zpod.to!string ~ "/" ~ image;
+ auto fn_src_out_filesystem = pths_sisupod.image_root(doc_matters.source_filename).filesystem_open_zpod.to!string ~ "/" ~ image;
+ if (exists(fn_src_in)) {
if (doc_matters.opt_action["source"]) {
- fn_src.copy(fn_out_filesystem);
+ fn_src_in.copy(fn_src_out_filesystem);
}
if (doc_matters.opt_action["sisupod"]) {
auto zip_arc_member_file = new ArchiveMember();
- zip_arc_member_file.name = fn_out;
+ zip_arc_member_file.name = fn_src_out_sisupod_zip_base;
auto zip_data = new OutBuffer();
- zip_data.write(cast(char[]) ((fn_src).read));
+ zip_data.write(cast(char[]) ((fn_src_in).read));
zip_arc_member_file.expandedData = zip_data.toBytes();
zip.addMember(zip_arc_member_file);
}
}
}
- }
- { /+ bundle sisu_document_make +/
- auto fn_src = pth_sisudoc_src.conf_root.to!string ~ "/" ~ "sisu_document_make"; // check (_sisu/sisu_document_make)
- auto fn_out = pth_sisupod.conf_root(doc_matters.source_filename).to!string ~ "/" ~ "sisu_document_make";
- auto fn_out_filesystem = pth_sisupod_filesystem.conf_root(doc_matters.source_filename).to!string ~ "/" ~ "sisu_document_make";
- if (exists(fn_src)) {
+ } { /+ 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_out_sisupod_zip_base = pths_sisupod.conf_root(doc_matters.source_filename).zpod.to!string ~ "/" ~ "sisu_document_make";
+ auto fn_src_out_filesystem = pths_sisupod.conf_root(doc_matters.source_filename).filesystem_open_zpod.to!string ~ "/" ~ "sisu_document_make";
+ if (exists(fn_src_in)) {
if (doc_matters.opt_action["source"]) {
- fn_src.copy(fn_out_filesystem);
+ fn_src_in.copy(fn_src_out_filesystem);
}
if (doc_matters.opt_action["sisupod"]) {
auto zip_arc_member_file = new ArchiveMember();
- zip_arc_member_file.name = fn_out;
+ zip_arc_member_file.name = fn_src_out_sisupod_zip_base;
auto zip_data = new OutBuffer();
- zip_data.write((fn_src).readText);
+ zip_data.write((fn_src_in).readText);
zip_arc_member_file.expandedData = zip_data.toBytes();
zip.addMember(zip_arc_member_file);
}
}
- }
- { /+ bundle primary file +/
- auto fn_src = doc_matters.source_filename;
- auto fn_out = pth_sisupod.fn_doc(doc_matters.source_filename).to!string;
- auto fn_out_filesystem = pth_sisupod_filesystem.fn_doc(doc_matters.source_filename).to!string;
- if (exists(fn_src)) {
+ } { /+ TODO bundle primary file +/
+ auto fn_src_in = doc_matters.source_filename;
+ auto fn_src_out_sisupod_zip_base = pths_sisupod.fn_doc(doc_matters.source_filename).zpod.to!string;
+ auto fn_src_out_filesystem = pths_sisupod.fn_doc(doc_matters.source_filename).filesystem_open_zpod.to!string; // needed without root path:
+ auto fn_src_out_inside_pod = pths_sisupod.fn_doc(doc_matters.source_filename).zpod.to!string; // needed without root path:
+ string[] filelist_src_out_sisupod_arr;
+ string[] filelist_src_zpod_arr;
+ if (exists(fn_src_in)) {
+ filelist_src_out_sisupod_arr ~= fn_src_out_sisupod_zip_base;
+ filelist_src_zpod_arr ~= fn_src_out_inside_pod;
if (doc_matters.opt_action["source"]) {
- fn_src.copy(fn_out_filesystem);
+ auto filelist = File(pths_sisupod.fn_pod_filelist(doc_matters.source_filename).filesystem_open_zpod, "w");
+ foreach (source_pth_and_fn; filelist_src_zpod_arr) {
+ filelist.writeln(source_pth_and_fn);
+ }
+ fn_src_in.copy(fn_src_out_filesystem);
}
if (doc_matters.opt_action["sisupod"]) {
auto zip_arc_member_file = new ArchiveMember();
- zip_arc_member_file.name = fn_out;
+ zip_arc_member_file.name = fn_src_out_sisupod_zip_base;
auto zip_data = new OutBuffer();
- zip_data.write((fn_src).readText);
+ zip_data.write((fn_src_in).readText);
zip_arc_member_file.expandedData = zip_data.toBytes();
zip.addMember(zip_arc_member_file);
}
}
- }
- { /+ bundle insert files +/
+ } { /+ bundle insert files +/
if (doc_matters.file_insert_list.length > 0) {
foreach (insert_file; doc_matters.file_insert_list) {
debug(sisupod) {
writeln(
insert_file, " -> ",
- pth_sisupod.fn_doc_insert(
+ pths_sisupod.fn_doc_insert(
doc_matters.source_filename,
insert_file,
- ));
+ ).zpod
+ );
}
- auto fn_src = insert_file;
- auto fn_out = pth_sisupod.fn_doc_insert(
- doc_matters.source_filename,
- insert_file,
- ).to!string;
- auto fn_out_filesystem = pth_sisupod_filesystem.fn_doc_insert(
- doc_matters.source_filename,
- insert_file,
- ).to!string;
- if (exists(fn_src)) {
+ auto fn_src_in = insert_file;
+ auto fn_src_out_sisupod_zip_base =
+ pths_sisupod.fn_doc_insert(
+ doc_matters.source_filename,
+ insert_file,
+ ).zpod.to!string;
+ auto fn_src_out_filesystem =
+ pths_sisupod.fn_doc_insert(
+ doc_matters.source_filename,
+ insert_file,
+ ).filesystem_open_zpod.to!string;
+ if (exists(fn_src_in)) {
if (doc_matters.opt_action["source"]) {
- fn_src.copy(fn_out_filesystem);
+ fn_src_in.copy(fn_src_out_filesystem);
}
if (doc_matters.opt_action["sisupod"]) {
auto zip_arc_member_file = new ArchiveMember();
- zip_arc_member_file.name = fn_out;
+ zip_arc_member_file.name = fn_src_out_sisupod_zip_base;
auto zip_data = new OutBuffer();
- zip_data.write((fn_src).readText);
+ zip_data.write((fn_src_in).readText);
zip_arc_member_file.expandedData = zip_data.toBytes();
zip.addMember(zip_arc_member_file);
createZipFile!()(fn_sisupod, zip.build());
@@ -157,10 +165,9 @@ template SiSUpod() {
}
}
}
- }
- {
- auto fn_src = doc_matters.source_filename;
- if (exists(fn_src)) {
+ } {
+ auto fn_src_in = doc_matters.source_filename;
+ if (exists(fn_src_in)) {
if (doc_matters.opt_action["sisupod"]) {
createZipFile!()(fn_sisupod, zip.build());
}
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d
index 0075de8..c861d1d 100755
--- a/src/sdp/sdp.d
+++ b/src/sdp/sdp.d
@@ -145,6 +145,33 @@ void main(string[] args) {
flag_action ~= " " ~ arg; // flags not taken by getopt
} else if (arg.match(rgx.src_pth)) {
fns_src ~= arg; // gather input markup source file names for processing
+ } else if (arg.match(rgx.src_pth_contents)) {
+ import std.file,
+ std.path;
+ string contents_location_;
+ try {
+ if (exists(arg)) {
+ contents_location_ = arg.readText;
+ }
+ }
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ // Handle errors
+ }
+ auto contents_locations_arr =
+ (cast(char[]) contents_location_).split;
+ auto tmp_dir_ = (arg).dirName.array;
+ foreach (contents_location; contents_locations_arr) {
+ assert(contents_location.match(rgx.src_pth),
+ "not a recognised file: " ~
+ contents_location
+ );
+ auto contents_location_pth_ = (contents_location).to!string;
+ fns_src ~= (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(char[]);
+ }
+ } else if (arg.match(rgx.src_pth_zip)) {
+ // fns_src ~= arg; // gather input markup source file names for processing
} else { // anything remaining, unused
arg_unrecognized ~= " " ~ arg;
}
@@ -178,8 +205,9 @@ void main(string[] args) {
}
}
enforce(
- fn_src.match(rgx.src_pth),
- "not a sisu markup filename"
+ fn_src.match(rgx.src_pth_types),
+ "not a sisu markup filename: <<" ~
+ fn_src ~ ">>"
);
auto t = SiSUabstraction!()(fn_src, opts, env);
static assert(!isTypeTuple!(t));