From 2598e9f10a362f15fef081504d69757001b39cfb Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Thu, 26 Jan 2017 15:17:59 -0500
Subject: output, message passing, minor

---
 org/output.org                     | 63 ++++++++++++++++----------------------
 src/sdp.d                          |  2 +-
 src/sdp/ao_abstract_doc_source.d   | 15 +++------
 src/sdp/ao_conf_make_meta_native.d |  2 +-
 src/sdp/ao_conf_make_meta_sdlang.d |  2 +-
 src/sdp/ao_output_debugs.d         |  2 +-
 src/sdp/ao_read_source_files.d     |  3 --
 src/sdp/ao_rgx.d                   |  2 +-
 src/sdp/output_epub.d              | 32 ++++++++-----------
 src/sdp/output_html.d              | 29 ++++++++----------
 10 files changed, 60 insertions(+), 92 deletions(-)

diff --git a/org/output.org b/org/output.org
index e0cf35b..74fca4e 100644
--- a/org/output.org
+++ b/org/output.org
@@ -535,9 +535,9 @@ auto endnote(O)(
 
 #+name: output_html_scroll
 #+BEGIN_SRC d
-void scroll_write_output_file(Fn,D)(
+void scroll_write_output_file(Fn,C)(
   Fn fn_src,
-  D doc,
+  C doc,
 ) {
   debug(asserts){
     static assert(is(typeof(fn_src) == string));
@@ -681,25 +681,22 @@ void scroll(C,T)(
 
 #+name: output_html_seg
 #+BEGIN_SRC d
-void seg_write_output_files(Fn,FnS,D)(
-  Fn fn_src,
-  FnS seg_filenames,
-  D doc_html,
+void seg_write_output_files(M,C)(
+  M doc_matters,
+  C doc_html,
 ) {
   debug(asserts){
-    static assert(is(typeof(fn_src)        == string));
-    static assert(is(typeof(seg_filenames) == string[]));
     static assert(is(typeof(doc_html)      == string[][string]));
   }
   mixin SiSUpaths;
   auto pth_html = HtmlPaths();
   auto xhtml_format = outputXHTMLs();
-  auto m = matchFirst(fn_src, rgx.src_fn);
+  auto m = matchFirst(doc_matters.source_filename, rgx.src_fn);
   try {
-    mkdirRecurse(pth_html.seg(fn_src));
-    foreach (seg_filename; seg_filenames) {
+    mkdirRecurse(pth_html.seg(doc_matters.source_filename));
+    foreach (seg_filename; doc_matters.segnames) {
       // writeln(__LINE__, ": ", fn);
-      auto f = File(pth_html.fn_seg(fn_src, seg_filename), "w");
+      auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
       /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
       foreach (docseg; doc_html[seg_filename]) {
         f.writeln(docseg);
@@ -717,16 +714,15 @@ void seg_write_output_files(Fn,FnS,D)(
 
 #+name: output_html_seg
 #+BEGIN_SRC d
-void seg(C,T)(
+void seg(C,M)(
   auto ref const C         contents,
-  auto ref T               doc_matters,
+  auto ref M               doc_matters,
 ) {
   auto xhtml_format = outputXHTMLs();
   auto rgx = Rgx();
   string[][string] doc_html;
   string[] doc;
   string segment_filename;
-  string[] seg_filenames;
   string[] top_level_headings = ["","","",""];
   foreach (part; doc_matters.keys_seq_seg) {
     foreach (obj; contents[part]) {
@@ -759,7 +755,6 @@ void seg(C,T)(
           }
           break;
         case 4:
-          seg_filenames ~= obj.segment_anchor_tag;
           segment_filename = obj.segment_anchor_tag;
           doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info
           foreach (top_level_heading; top_level_headings) {
@@ -866,7 +861,7 @@ void seg(C,T)(
     }
   }
   writeln(doc_matters.keys_seq_seg);
-  seg_write_output_files(doc_matters.source_filename, seg_filenames, doc_html);
+  seg_write_output_files(doc_matters, doc_html);
 }
 #+END_SRC
 
@@ -2348,7 +2343,7 @@ obj.segment_anchor_tag,   // lev < 4 [no link]; lev == 4 [filename] markup.xhtml
 }
 #+END_SRC
 
-**** (sections & objects) switch (for epub xhtml output format)
+**** build (sections & objects) switch (for epub xhtml output format)
 
 #+name: output_epub_xhtml_seg
 #+BEGIN_SRC d
@@ -2362,7 +2357,6 @@ void doc_content(C,T)(
   string[][string] doc_epub;
   string[] doc;
   string segment_filename;
-  string[] seg_filenames;
   string[] top_level_headings = ["","","",""];
   auto mimetypes = epub_mimetypes;
   auto meta_inf_container_xml = epub_container_xml;
@@ -2401,7 +2395,6 @@ void doc_content(C,T)(
           }
           break;
         case 4:
-          seg_filenames ~= obj.segment_anchor_tag;
           segment_filename = obj.segment_anchor_tag;
           doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta);
           foreach (top_level_heading; top_level_headings) {
@@ -2515,8 +2508,7 @@ void doc_content(C,T)(
   }
   writeln(doc_matters.keys_seq_seg);
   epub_write_output_files(
-    doc_matters.source_filename,
-    seg_filenames,
+    doc_matters,
     doc_epub,
     mimetypes,
     meta_inf_container_xml,
@@ -2530,18 +2522,15 @@ void doc_content(C,T)(
 
 #+name: output_epub_xhtml_seg
 #+BEGIN_SRC d
-void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)(
-  Fn  fn_src,
-  FnS seg_filenames,
-  De  doc_epub,
+void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)(
+  C   doc_matters,
+  EpD doc_epub,
   Mt  mimetypes,
   Mic meta_inf_container_xml,
   Ot  oebps_toc_ncx,
   Oc  oebps_content_opf,
 ) {
   debug(asserts){
-    static assert(is(typeof(fn_src)                 == string));
-    static assert(is(typeof(seg_filenames)          == string[]));
     static assert(is(typeof(doc_epub)               == string[][string]));
     static assert(is(typeof(mimetypes)              == string));
     static assert(is(typeof(meta_inf_container_xml) == string));
@@ -2553,12 +2542,12 @@ void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)(
   // doc = xhtml_format.scroll_head ~ doc_epub ~  xhtml_format.tail;
   auto xhtml_format = outputXHTMLs();
   try {
-    mkdirRecurse(pth_epub.doc_meta_inf(fn_src));
-    mkdirRecurse(pth_epub.doc_oebps_css(fn_src));
-    mkdirRecurse(pth_epub.doc_oebps_image(fn_src));
+    mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename));
+    mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename));
+    mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename));
     /+ OEBPS/[segments].xhtml +/
-    foreach (seg_filename; seg_filenames) {
-      auto f = File(pth_epub.fn_oebps_content_xhtml(fn_src, seg_filename), "w");
+    foreach (seg_filename; doc_matters.segnames) {
+      auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w");
       /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
       foreach (docseg; doc_epub[seg_filename]) {
         f.writeln(docseg);
@@ -2566,16 +2555,16 @@ void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)(
       f.writeln(xhtml_format.tail); // needed for each lev4
     }
     /+ mimetypes +/
-    auto f = File(pth_epub.fn_mimetypes(fn_src), "w");
+    auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w");
     f.writeln(mimetypes);
     /+  META-INF/container.xml +/
-    f = File(pth_epub.fn_dmi_container_xml(fn_src), "w");
+    f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w");
     f.writeln(meta_inf_container_xml);
     /+ OEBPS/toc.ncx +/
-    f = File(pth_epub.fn_oebps_toc_ncx(fn_src), "w");
+    f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w");
     f.writeln(oebps_toc_ncx);
     /+ OEBPS/content.opf +/
-    f = File(pth_epub.fn_oebps_content_opf(fn_src), "w");
+    f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w");
     f.writeln(oebps_content_opf);
   }
   catch (ErrnoException ex) {
diff --git a/src/sdp.d b/src/sdp.d
index 94ef276..04cca77 100755
--- a/src/sdp.d
+++ b/src/sdp.d
@@ -43,9 +43,9 @@ private import
 
 mixin(import("version.txt"));
 mixin CompileTimeInfo;
-mixin RgxInit;
 /++ A SiSU document parser writen in D. +/
 void main(string[] args) {
+  mixin SiSUrgxInit;
   mixin SiSUregisters;
   mixin SiSUheaderExtractHub;
   mixin SiSUheaderExtractSDLang;
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index cd121c5..ed4e637 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -7,16 +7,13 @@ template SiSUdocAbstraction() {
   private:
   struct SiSUdocAbstraction {
     /+ ↓ abstraction imports +/
-    import
-      ao_defaults,                  // sdp/ao_defaults.d
-      ao_object_setter,             // sdp/ao_object_setter.d
-      ao_rgx;                       // sdp/ao_rgx.d
+    import ao_object_setter;
     /+ ↓ abstraction mixins +/
     mixin ObjectSetter;
     mixin InternalMarkup;
+    mixin SiSUrgxInit;
     /+ ↓ abstraction struct init +/
     /+ initialize +/
-    auto rgx = Rgx();
     ObjGenericComposite[][string] the_table_of_contents_section;
     ObjGenericComposite[] the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section;
     ObjGenericComposite[] the_dom_tail_section;
@@ -3104,7 +3101,6 @@ template SiSUdocAbstraction() {
         }
       }
       body {
-        auto rgx = Rgx();
         obj_txt["munge"]=obj_txt_in;
         obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.para_attribs, "");
         obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.obj_cite_number_off_all, "");
@@ -3124,7 +3120,6 @@ template SiSUdocAbstraction() {
         }
       }
       body {
-        auto rgx = Rgx();
         obj_txt["munge"]=obj_txt_in;
         obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading, "");
         obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.obj_cite_number_off_all, "");
@@ -3222,6 +3217,7 @@ template SiSUdocAbstraction() {
       }
     }
     struct ObjInlineMarkup {
+      auto rgx = Rgx();
       auto munge = ObjInlineMarkupMunge();
       string[string] obj_txt;
       auto obj_inline_markup_and_anchor_tags(O,K,Ma)(
@@ -3732,7 +3728,6 @@ template SiSUdocAbstraction() {
         }
       }
       body {
-        auto rgx = Rgx();
         if (matchFirst(obj_txt_in, rgx.para_bullet)) {
           _obj_attributes =" \"bullet\": \"true\","
           ~ " \"indent_hang\": 0,"
@@ -4447,6 +4442,7 @@ template SiSUdocAbstraction() {
       int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7;
       int obj_cite_number;
       int[string] p_; // p_ parent_
+      auto rgx = Rgx();
       ObjGenericComposite node_location_emitter(Lv,Ta,N,C,P,I)(
         Lv lev_markup_number,
         Ta segment_anchor_tag,
@@ -4464,7 +4460,6 @@ template SiSUdocAbstraction() {
           static assert(is(typeof(ptr_)               == int));
           static assert(is(typeof(is_)                == string));
         }
-        auto rgx = Rgx();
         assert(is_ != "heading");
         assert(to!int(obj_cite_number_) >= 0);
       }
@@ -4533,7 +4528,6 @@ template SiSUdocAbstraction() {
           static assert(is(typeof(is_)                  == string));
           static assert(is(typeof(html_segnames_ptr)    == int));
         }
-        auto rgx = Rgx();
         assert(is_ == "heading");
         assert(to!int(obj_cite_number_) >= 0);
         assert(
@@ -4547,7 +4541,6 @@ template SiSUdocAbstraction() {
         }
       }
       body {
-        auto rgx = Rgx();
         int obj_cite_number = to!int(obj_cite_number_);
         switch (to!int(lev_markup_number)) { // switch (to!string(lv)) {
         case 0:
diff --git a/src/sdp/ao_conf_make_meta_native.d b/src/sdp/ao_conf_make_meta_native.d
index 6fe38e9..cc907b2 100644
--- a/src/sdp/ao_conf_make_meta_native.d
+++ b/src/sdp/ao_conf_make_meta_native.d
@@ -13,7 +13,7 @@ template SiSUheaderExtractNative() {
   struct HeaderDocMetadataAndMakeNativeToAA {
     mixin SiSUregisters;
     mixin SiSUrgxInitFlags;
-    mixin RgxInit;
+    mixin SiSUrgxInit;
     auto rgx = Rgx();
     enum State { off, on }
     string hm, hs;
diff --git a/src/sdp/ao_conf_make_meta_sdlang.d b/src/sdp/ao_conf_make_meta_sdlang.d
index 801df7e..fe1696d 100644
--- a/src/sdp/ao_conf_make_meta_sdlang.d
+++ b/src/sdp/ao_conf_make_meta_sdlang.d
@@ -9,7 +9,7 @@ template SiSUheaderExtractSDLang() {
     ao_rgx;
   struct HeaderExtractSDL {
     mixin SiSUregisters;
-    mixin RgxInit;
+    mixin SiSUrgxInit;
     auto rgx = Rgx();
     private auto sdlangToAAmake(C,Tag)(C conf, Tag conf_sdlang) {
       debug(asserts){
diff --git a/src/sdp/ao_output_debugs.d b/src/sdp/ao_output_debugs.d
index 8b22f28..2872833 100644
--- a/src/sdp/ao_output_debugs.d
+++ b/src/sdp/ao_output_debugs.d
@@ -7,7 +7,7 @@ template SiSUoutputDebugs() {
       auto ref const S         contents,
       auto ref T               doc_matters,
     ) {
-      mixin RgxInit;
+      mixin SiSUrgxInit;
       mixin InternalMarkup;
       auto rgx = Rgx();
       auto markup = InlineMarkup();
diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d
index 34aed22..f25ed7e 100644
--- a/src/sdp/ao_read_source_files.d
+++ b/src/sdp/ao_read_source_files.d
@@ -10,9 +10,6 @@ template SiSUmarkupRaw() {
     std.stdio,
     std.utf,
     std.conv : to;
-  private import
-    ao_rgx;       // ao_defaults.d
-  mixin RgxInit;
   auto rgx = Rgx();
   struct MarkupRaw {
     final sourceContent(in string fn_src) {
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d
index f800a12..286aa76 100644
--- a/src/sdp/ao_rgx.d
+++ b/src/sdp/ao_rgx.d
@@ -1,7 +1,7 @@
 /++
   regex: regular expressions used in sisu document parser
 +/
-template RgxInit() {
+template SiSUrgxInit() {
   struct Rgx {
     mixin SiSUlanguageCodes;
     /+ misc +/
diff --git a/src/sdp/output_epub.d b/src/sdp/output_epub.d
index c7c13ef..4c23600 100644
--- a/src/sdp/output_epub.d
+++ b/src/sdp/output_epub.d
@@ -154,7 +154,6 @@ template outputEPub() {
       string[][string] doc_epub;
       string[] doc;
       string segment_filename;
-      string[] seg_filenames;
       string[] top_level_headings = ["","","",""];
       auto mimetypes = epub_mimetypes;
       auto meta_inf_container_xml = epub_container_xml;
@@ -193,7 +192,6 @@ template outputEPub() {
               }
               break;
             case 4:
-              seg_filenames ~= obj.segment_anchor_tag;
               segment_filename = obj.segment_anchor_tag;
               doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta);
               foreach (top_level_heading; top_level_headings) {
@@ -307,8 +305,7 @@ template outputEPub() {
       }
       writeln(doc_matters.keys_seq_seg);
       epub_write_output_files(
-        doc_matters.source_filename,
-        seg_filenames,
+        doc_matters,
         doc_epub,
         mimetypes,
         meta_inf_container_xml,
@@ -316,18 +313,15 @@ template outputEPub() {
         oebps_content_opf,
       );
     }
-    void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)(
-      Fn  fn_src,
-      FnS seg_filenames,
-      De  doc_epub,
+    void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)(
+      C   doc_matters,
+      EpD doc_epub,
       Mt  mimetypes,
       Mic meta_inf_container_xml,
       Ot  oebps_toc_ncx,
       Oc  oebps_content_opf,
     ) {
       debug(asserts){
-        static assert(is(typeof(fn_src)                 == string));
-        static assert(is(typeof(seg_filenames)          == string[]));
         static assert(is(typeof(doc_epub)               == string[][string]));
         static assert(is(typeof(mimetypes)              == string));
         static assert(is(typeof(meta_inf_container_xml) == string));
@@ -339,12 +333,12 @@ template outputEPub() {
       // doc = xhtml_format.scroll_head ~ doc_epub ~  xhtml_format.tail;
       auto xhtml_format = outputXHTMLs();
       try {
-        mkdirRecurse(pth_epub.doc_meta_inf(fn_src));
-        mkdirRecurse(pth_epub.doc_oebps_css(fn_src));
-        mkdirRecurse(pth_epub.doc_oebps_image(fn_src));
+        mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename));
+        mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename));
+        mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename));
         /+ OEBPS/[segments].xhtml +/
-        foreach (seg_filename; seg_filenames) {
-          auto f = File(pth_epub.fn_oebps_content_xhtml(fn_src, seg_filename), "w");
+        foreach (seg_filename; doc_matters.segnames) {
+          auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w");
           /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
           foreach (docseg; doc_epub[seg_filename]) {
             f.writeln(docseg);
@@ -352,16 +346,16 @@ template outputEPub() {
           f.writeln(xhtml_format.tail); // needed for each lev4
         }
         /+ mimetypes +/
-        auto f = File(pth_epub.fn_mimetypes(fn_src), "w");
+        auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w");
         f.writeln(mimetypes);
         /+  META-INF/container.xml +/
-        f = File(pth_epub.fn_dmi_container_xml(fn_src), "w");
+        f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w");
         f.writeln(meta_inf_container_xml);
         /+ OEBPS/toc.ncx +/
-        f = File(pth_epub.fn_oebps_toc_ncx(fn_src), "w");
+        f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w");
         f.writeln(oebps_toc_ncx);
         /+ OEBPS/content.opf +/
-        f = File(pth_epub.fn_oebps_content_opf(fn_src), "w");
+        f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w");
         f.writeln(oebps_content_opf);
       }
       catch (ErrnoException ex) {
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index ec8b74e..0406b3c 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -2,9 +2,9 @@ template outputHTML() {
   struct outputHTML {
     mixin outputXHTMLs;
     
-    void scroll_write_output_file(Fn,D)(
+    void scroll_write_output_file(Fn,C)(
       Fn fn_src,
-      D doc,
+      C doc,
     ) {
       debug(asserts){
         static assert(is(typeof(fn_src) == string));
@@ -135,25 +135,22 @@ template outputHTML() {
       doc = xhtml_format.scroll_head(doc_matters.dochead_meta) ~ doc_html ~ xhtml_format.tail;
       scroll_write_output_file(doc_matters.source_filename, doc);
     }
-    void seg_write_output_files(Fn,FnS,D)(
-      Fn fn_src,
-      FnS seg_filenames,
-      D doc_html,
+    void seg_write_output_files(M,C)(
+      M doc_matters,
+      C doc_html,
     ) {
       debug(asserts){
-        static assert(is(typeof(fn_src)        == string));
-        static assert(is(typeof(seg_filenames) == string[]));
         static assert(is(typeof(doc_html)      == string[][string]));
       }
       mixin SiSUpaths;
       auto pth_html = HtmlPaths();
       auto xhtml_format = outputXHTMLs();
-      auto m = matchFirst(fn_src, rgx.src_fn);
+      auto m = matchFirst(doc_matters.source_filename, rgx.src_fn);
       try {
-        mkdirRecurse(pth_html.seg(fn_src));
-        foreach (seg_filename; seg_filenames) {
+        mkdirRecurse(pth_html.seg(doc_matters.source_filename));
+        foreach (seg_filename; doc_matters.segnames) {
           // writeln(__LINE__, ": ", fn);
-          auto f = File(pth_html.fn_seg(fn_src, seg_filename), "w");
+          auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
           /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
           foreach (docseg; doc_html[seg_filename]) {
             f.writeln(docseg);
@@ -165,16 +162,15 @@ template outputHTML() {
         // Handle error
       }
     }
-    void seg(C,T)(
+    void seg(C,M)(
       auto ref const C         contents,
-      auto ref T               doc_matters,
+      auto ref M               doc_matters,
     ) {
       auto xhtml_format = outputXHTMLs();
       auto rgx = Rgx();
       string[][string] doc_html;
       string[] doc;
       string segment_filename;
-      string[] seg_filenames;
       string[] top_level_headings = ["","","",""];
       foreach (part; doc_matters.keys_seq_seg) {
         foreach (obj; contents[part]) {
@@ -207,7 +203,6 @@ template outputHTML() {
               }
               break;
             case 4:
-              seg_filenames ~= obj.segment_anchor_tag;
               segment_filename = obj.segment_anchor_tag;
               doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info
               foreach (top_level_heading; top_level_headings) {
@@ -314,7 +309,7 @@ template outputHTML() {
         }
       }
       writeln(doc_matters.keys_seq_seg);
-      seg_write_output_files(doc_matters.source_filename, seg_filenames, doc_html);
+      seg_write_output_files(doc_matters, doc_html);
     }
     auto html_css() {
       string css;
-- 
cgit v1.2.3