From 17b1e024c33bac309c36f439fe267a384548a8b8 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Fri, 1 Dec 2017 11:36:01 -0500
Subject: 0.22.0 document matters & pod matters structs

- better integrated, redundancy removed
---
 src/sdp/meta/metadoc.d          | 103 +++++++++++++++++++++++-----------------
 src/sdp/output/epub3.d          |   2 +-
 src/sdp/output/html.d           |   4 +-
 src/sdp/output/paths_source.d   |   8 ++--
 src/sdp/output/source_sisupod.d |   2 +-
 src/sdp/output/sqlite.d         |   2 +-
 src/sdp/sdp.d                   |   6 +--
 7 files changed, 71 insertions(+), 56 deletions(-)

(limited to 'src/sdp')

diff --git a/src/sdp/meta/metadoc.d b/src/sdp/meta/metadoc.d
index b028f8d..79f9849 100644
--- a/src/sdp/meta/metadoc.d
+++ b/src/sdp/meta/metadoc.d
@@ -88,68 +88,83 @@ template SiSUabstraction() {
       writeln(__LINE__, ":", __FILE__, ": step4 commence → (doc_matters)");
     }
     struct DocumentMatters {
-      auto keys_seq() {
-        /+ contains .seg & .scroll sequences +/
-        auto _k = _document_section_keys_sequenced;
-        return _k;
-      }
-      string[] segnames() {
-        string[] _k = _doc_html_segnames;
-        return _k;
-      }
-      string[] segnames_lv_0_to_4() {
-        string[] _k = _doc_epub_segnames_0_4;
-        return _k;
-      }
-      auto conf_make_meta() {
-        auto _k = _make_and_meta_struct;
-        return _k;
-      }
-      auto source_filename() {
-        string _k = _manifest.src_fn;
-        return _k;
-      }
-      auto src_path_info() {
-        string _pwd = _env["pwd"];
-        auto _k = SiSUpathsSRC!()(_pwd, _manifest.src_fn);
-        return _k;
-      }
       auto opt_action() {
         /+ getopt options, commandline instructions, raw
          - processing instructions --epub --html etc.
          - command line config instructions --output-path
         +/
-        auto _k = _opt_action;
+        return _opt_action;
+      }
+      auto conf_make_meta() { // TODO meld with all make instructions
+        auto _k = _make_and_meta_struct;
         return _k;
       }
       auto environment() {
-        auto _k = _env;
+        struct Env_ {
+          auto pwd() {
+            return _manifest.pwd;
+          }
+          auto home() {
+            return _manifest.home;
+          }
+        }
+        return Env_();
+      }
+      auto is_pod() {
+        return _manifest.is_pod;
+      }
+      auto source_filename() {
+        return _manifest.src_fn;
+      }
+      auto src_path_info() { // consider, reconsider?
+        auto _k = SiSUpathsSRC!()(_manifest.pwd, _manifest.src_fn);
         return _k;
       }
       auto language() {
-        string _k;
-        if (auto m = (_manifest.src_fn).match(rgx.language_code_and_filename)) {
-          _k = m.captures[1];
-        } else {
-          _k = "en";
-        }
-        return _k;
+        return _manifest.src_lng;
+      }
+      auto output_path() {
+        return _manifest.output_path;
+      }
+      auto pod_manifest_list_of_filenames() {
+        return _manifest.pod_manifest_list_of_filenames;
+      }
+      auto pod_manifest_list_of_languages() {
+        return _manifest.pod_manifest_list_of_languages;
+      }
+      auto pod_manifest_filename() {
+        return _manifest.pod_manifest_filename;
+      }
+      auto pod_manifest_path() {
+        return _manifest.pod_manifest_path;
+      }
+      auto pod_manifest_file_with_path() {
+        return _manifest.pod_manifest_file_with_path;
+      }
+      auto pod_config_dirs() {
+        return _manifest.pod_config_dirs;
+      }
+      auto pod_image_dirs() {
+        return _manifest.pod_image_dirs;
       }
       auto file_insert_list() {
         string[] _k = _header_body_inserts[headBody.insert_filelist];
         return _k;
       }
-      auto pod_manifest() {
-        /+ extensive information on
-         - source processing paths
-         - repetition of opt_action with additional processing, including
-           - output path if any
-        +/
-        auto _k = _manifest;
+      auto image_list() {
+        return _images;
+      }
+      auto keys_seq() {
+        /+ contains .seg & .scroll sequences +/
+        auto _k = _document_section_keys_sequenced;
         return _k;
       }
-      auto image_list() {
-        auto _k = _images;
+      string[] segnames() {
+        string[] _k = _doc_html_segnames;
+        return _k;
+      }
+      string[] segnames_lv_0_to_4() {
+        string[] _k = _doc_epub_segnames_0_4;
         return _k;
       }
     }
diff --git a/src/sdp/output/epub3.d b/src/sdp/output/epub3.d
index 78603b2..e31d114 100644
--- a/src/sdp/output/epub3.d
+++ b/src/sdp/output/epub3.d
@@ -765,7 +765,7 @@ template outputEPub3() {
     catch (ErrnoException ex) {
       // Handle error
     }
-    writeln(" ", doc_matters.environment["pwd"],  "/", fn_epub);
+    writeln(" ", doc_matters.environment.pwd,  "/", fn_epub);
     debug(epub_archive) {
       if (exists(fn_epub)) {
         try {
diff --git a/src/sdp/output/html.d b/src/sdp/output/html.d
index b0b0405..a422a81 100644
--- a/src/sdp/output/html.d
+++ b/src/sdp/output/html.d
@@ -181,7 +181,7 @@ template outputHTML() {
     catch (ErrnoException ex) {
       // Handle error
     }
-    writeln(" ", doc_matters.environment["pwd"],  "/", pth_html.fn_scroll(fn_src));
+    writeln(" ", doc_matters.environment.pwd,  "/", pth_html.fn_scroll(fn_src));
   }
   void seg(D,I)(
     auto return ref const D    doc_abstraction,
@@ -440,7 +440,7 @@ template outputHTML() {
     catch (ErrnoException ex) {
       // handle error
     }
-    writeln(" ", doc_matters.environment["pwd"],  "/", pth_html.fn_seg(doc_matters.source_filename, "toc"));
+    writeln(" ", doc_matters.environment.pwd,  "/", pth_html.fn_seg(doc_matters.source_filename, "toc"));
   }
   void css(M)(
     auto return ref M          doc_matters,
diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d
index c22efe0..967a632 100644
--- a/src/sdp/output/paths_source.d
+++ b/src/sdp/output/paths_source.d
@@ -42,10 +42,10 @@ template PodManifest() {
     return ManifestFile_();
   }
 }
-template PodManifestAndSrcFile() {
+template PodMatters() {
   mixin SiSUrgxInit;
   static auto rgx = Rgx();
-  auto PodManifestAndSrcFile(O,E,P,F)(
+  auto PodMatters(O,E,P,F)(
     O   _opt_actions,
     E   _env,
     P   _pth                   = "",
@@ -53,7 +53,7 @@ template PodManifestAndSrcFile() {
     char[][] _manifest_fn_list = [[]],
   ) {
     auto _manifest = PodManifest!()(_pth);
-    struct ManifestFilePlus_ {
+    struct ManifestMatters_ {
       auto pwd() {
         return _env["pwd"];
       }
@@ -138,7 +138,7 @@ template PodManifestAndSrcFile() {
         return _image_dirs;
       }
     }
-    return ManifestFilePlus_();
+    return ManifestMatters_();
   }
 }
 template ConfigFilePaths() {
diff --git a/src/sdp/output/source_sisupod.d b/src/sdp/output/source_sisupod.d
index 106c419..20eaf39 100644
--- a/src/sdp/output/source_sisupod.d
+++ b/src/sdp/output/source_sisupod.d
@@ -15,7 +15,7 @@ template SiSUpod() {
       // static assert(is(typeof(doc_matters) == tuple));
     }
     mixin SiSUoutputRgxInit;
-    string pwd = doc_matters.environment["pwd"];
+    string pwd = doc_matters.environment.pwd;
     auto src_path_info = doc_matters.src_path_info;
     auto pth_sisudoc_src = doc_matters.src_path_info;
     auto pths_sisupod = SiSUpathsSisupods!()();
diff --git a/src/sdp/output/sqlite.d b/src/sdp/output/sqlite.d
index 591b002..ee44d8a 100644
--- a/src/sdp/output/sqlite.d
+++ b/src/sdp/output/sqlite.d
@@ -457,7 +457,7 @@ template SQLiteBuildTablesAndPopulate() {
         auto ref              I    doc_matters,
       ) {
         auto pth_sqlite = SiSUpathsSQLite!()(doc_matters.src_path_info, doc_matters.language);
-        auto db = Database(pth_sqlite.sqlite_file(doc_matters.environment["pwd"].baseName));
+        auto db = Database(pth_sqlite.sqlite_file(doc_matters.environment.pwd.baseName));
         // auto db = Database(":memory:"); // open database in memory
         if (doc_matters.opt_action.sqlite_create) {
           if ((doc_matters.opt_action.verbose)) { writeln("sqlite create tables... "); }
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d
index 34f11d9..30f8d03 100755
--- a/src/sdp/sdp.d
+++ b/src/sdp/sdp.d
@@ -303,14 +303,14 @@ void main(string[] args) {
     "home" : environment["HOME"],
   ];
   auto _manifest = PodManifest!()();
-  auto _manifest_plus = PodManifestAndSrcFile!()(_opt_action, _env);
+  auto _manifest_plus = PodMatters!()(_opt_action, _env);
   auto _manifests = [ _manifest_plus ];
   foreach(arg; args[1..$]) {
     _manifest = PodManifest!()(arg);
     if (arg.match(rgx.flag_action)) {
       flag_action ~= " " ~ arg;   // flags not taken by getopt
     } else if (arg.match(rgx.src_pth)) {
-      _manifests ~= PodManifestAndSrcFile!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
+      _manifests ~= PodMatters!()(_opt_action, _env, arg, arg); // gather input markup source file names for processing
     } else if (_manifest.pod_manifest_file_with_path) {
       string contents_location_raw_;
       string contents_location_;
@@ -353,7 +353,7 @@ void main(string[] args) {
           || (contents_location_pth_).match(lang_rgx_)
         ) {
           auto _fns = (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(string);
-          _manifest_plus = PodManifestAndSrcFile!()(_opt_action, _env, arg, _fns, contents_locations_arr);
+          _manifest_plus = PodMatters!()(_opt_action, _env, arg, _fns, contents_locations_arr);
           _manifests ~= _manifest_plus; // TODO how to capture?
         }
       }
-- 
cgit v1.2.3