From 82d94b3ff78285afaa212d6e0a364f59c2938316 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph.amissah@gmail.com>
Date: Mon, 26 Jun 2023 15:37:43 -0400
Subject: replace some instances of dir listing, index.html

---
 org/default_paths.org                |  3 ++
 org/out_latex.org                    | 26 ++++++++++-
 org/out_odt.org                      | 16 ++++++-
 org/out_src_pod.org                  |  8 +++-
 org/out_xmls.org                     | 46 +++++++++++++++++++
 src/doc_reform/io_out/html_snippet.d | 86 ++++++++++++++++++++++++++++++++++++
 src/doc_reform/io_out/latex.d        | 26 ++++++++++-
 src/doc_reform/io_out/odt.d          | 16 ++++++-
 src/doc_reform/io_out/paths_output.d |  3 ++
 src/doc_reform/io_out/source_pod.d   |  8 +++-
 10 files changed, 228 insertions(+), 10 deletions(-)
 create mode 100644 src/doc_reform/io_out/html_snippet.d

diff --git a/org/default_paths.org b/org/default_paths.org
index 40269d5..9791b67 100644
--- a/org/default_paths.org
+++ b/org/default_paths.org
@@ -1575,6 +1575,9 @@ template spinePathsLaTeXsty() {
       auto out_pth() {
         return spineOutPaths!()(output_dir);
       }
+      string base() {
+        return (((out_pth.output_root).chainPath("latex")).asNormalizedPath).array;
+      }
       string base_sty() {
         return (((out_pth.output_root).chainPath("latex").chainPath("sty")).asNormalizedPath).array;
       }
diff --git a/org/out_latex.org b/org/out_latex.org
index d1b6aff..f1fd4bb 100644
--- a/org/out_latex.org
+++ b/org/out_latex.org
@@ -217,8 +217,14 @@ void writeOutputLaTeX(T,M)(
       }
     }
     if (!exists(pth_latex.latex_path_stuff ~ "/index.html")) {
+      import doc_reform.io_out.html_snippet;
+      mixin htmlSnippet;
       auto f = File(pth_latex.latex_path_stuff ~"/index.html", "w");
-      f.writeln("");
+      f.writeln(format_html_blank_page_guide_home(
+        "../../css/html_scroll.css",
+        "https://sisudoc.org",
+        "../../index.html",
+      ));
     }
   } catch (ErrnoException ex) {
     // handle error
@@ -282,9 +288,25 @@ void writeOutputLaTeXstyStatic(
         auto f = File(pth_latex.latex_document_header_sty(filename), "w");
         f.writeln(latex_sty);
       }
+      if (!exists(pth_latex.base ~ "/index.html")) {
+        import doc_reform.io_out.html_snippet;
+        mixin htmlSnippet;
+        auto f = File(pth_latex.base ~"/index.html", "w");
+        f.writeln(format_html_blank_page_guide_home(
+          "../css/html_scroll.css",
+          "https://sisudoc.org",
+          "../index.html",
+        ));
+      }
       if (!exists(pth_latex.base_sty ~ "/index.html")) {
+        import doc_reform.io_out.html_snippet;
+        mixin htmlSnippet;
         auto f = File(pth_latex.base_sty ~"/index.html", "w");
-        f.writeln("");
+        f.writeln(format_html_blank_page_guide_home(
+          "../../css/html_scroll.css",
+          "https://sisudoc.org",
+          "../../index.html",
+        ));
       }
     } catch (ErrnoException ex) {
       // handle error
diff --git a/org/out_odt.org b/org/out_odt.org
index 2f24159..54c0545 100644
--- a/org/out_odt.org
+++ b/org/out_odt.org
@@ -973,8 +973,14 @@ void writeOutputODT(W,I)(
       }
     }
     if (!exists(pth_odt.base_pth ~ "/index.html")) {
+      import doc_reform.io_out.html_snippet;
+      mixin htmlSnippet;
       auto f = File(pth_odt.base_pth ~"/index.html", "w");
-      f.writeln("");
+      f.writeln(format_html_blank_page_guide_home(
+        "../../css/html_scroll.css",
+        "https://sisudoc.org",
+        "../../index.html",
+      ));
     }
   } catch (ErrnoException ex) {
     // Handle error
@@ -1070,8 +1076,14 @@ void dirtree(I)(
     pth_odt.base_pth.mkdirRecurse;
   }
   if (!exists(pth_odt.base_pth ~ "/index.html")) {
+    import doc_reform.io_out.html_snippet;
+    mixin htmlSnippet;
     auto f = File(pth_odt.base_pth ~"/index.html", "w");
-    f.writeln("");
+    f.writeln(format_html_blank_page_guide_home(
+      "../../css/html_scroll.css",
+      "https://sisudoc.org",
+      "../../index.html",
+    ));
   }
   // return 0;
 }
diff --git a/org/out_src_pod.org b/org/out_src_pod.org
index b59b217..8a6193a 100644
--- a/org/out_src_pod.org
+++ b/org/out_src_pod.org
@@ -144,8 +144,14 @@ if (doc_matters.opt.action.source_or_pod) {
   }
 }
 if (!exists(pths_pod.pod_dir_() ~ "/index.html")) {
+  import doc_reform.io_out.html_snippet;
+  mixin htmlSnippet;
   auto f = File(pths_pod.pod_dir_() ~"/index.html", "w");
-  f.writeln("");
+  f.writeln(format_html_blank_page_guide_home(
+    "../../css/html_scroll.css",
+    "https://sisudoc.org",
+    "../../index.html",
+  ));
 }
 #+END_SRC
 
diff --git a/org/out_xmls.org b/org/out_xmls.org
index febee54..33f2213 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -23,6 +23,52 @@
 2023
 #+END_SRC
 
+* html snippet
+** _module template_ :module:
+
+#+HEADER: :tangle "../src/doc_reform/io_out/html_snippet.d"
+#+HEADER: :noweb yes
+#+BEGIN_SRC d
+<<doc_header_including_copyright_and_license>>
+module doc_reform.io_out.html_snippet;
+template htmlSnippet() {
+  import
+    std.file,
+    std.outbuffer,
+    std.format,
+    std.uri,
+    std.conv : to;
+  import
+    doc_reform.io_out.rgx,
+    doc_reform.meta.rgx_files,
+    doc_reform.io_out.rgx_xhtml;
+  auto format_html_blank_page_guide_home()(
+    string css_style,
+    string home_url,
+    string collection_home_path
+  ) {
+    auto html_blank_default = format(q"┃<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/plain; charset=UTF-8" />
+    <link href="%s" rel="stylesheet" />
+  </head>
+  <body>
+    <p class="heading">
+      <a href="%s">⟰&nbsp;</a>&nbsp;
+      <a href="%s">&nbsp;≅&nbsp;</a>
+    </p>
+  </body>
+</html>┃",
+      css_style,
+      home_url,
+      collection_home_path
+    );
+    return html_blank_default;
+  }
+}
+#+END_SRC
+
 * xml offspring (xhtml html epub)
 ** format xhtml objects :format:
 *** _module template_ :module:
diff --git a/src/doc_reform/io_out/html_snippet.d b/src/doc_reform/io_out/html_snippet.d
new file mode 100644
index 0000000..fea78a8
--- /dev/null
+++ b/src/doc_reform/io_out/html_snippet.d
@@ -0,0 +1,86 @@
+/+
+- Name: Spine, Doc Reform [a part of]
+  - Description: documents, structuring, processing, publishing, search
+    - static content generator
+
+  - Author: Ralph Amissah
+    [ralph.amissah@gmail.com]
+
+  - Copyright: (C) 2015 - 2023 Ralph Amissah, All Rights Reserved.
+
+  - License: AGPL 3 or later:
+
+    Spine (SiSU), a framework for document structuring, publishing and
+    search
+
+    Copyright (C) Ralph Amissah
+
+    This program is free software: you can redistribute it and/or modify it
+    under the terms of the GNU AFERO General Public License as published by the
+    Free Software Foundation, either version 3 of the License, or (at your
+    option) any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along with
+    this program. If not, see [https://www.gnu.org/licenses/].
+
+    If you have Internet connection, the latest version of the AGPL should be
+    available at these locations:
+    [https://www.fsf.org/licensing/licenses/agpl.html]
+    [https://www.gnu.org/licenses/agpl.html]
+
+  - Spine (by Doc Reform, related to SiSU) uses standard:
+    - docReform markup syntax
+      - standard SiSU markup syntax with modified headers and minor modifications
+    - docReform object numbering
+      - standard SiSU object citation numbering & system
+
+  - Homepages:
+    [https://www.doc_reform.org]
+    [https://www.sisudoc.org]
+
+  - Git
+    [https://git.sisudoc.org/projects/?p=software/spine.git;a=summary]
+
++/
+module doc_reform.io_out.html_snippet;
+template htmlSnippet() {
+  import
+    std.file,
+    std.outbuffer,
+    std.format,
+    std.uri,
+    std.conv : to;
+  import
+    doc_reform.io_out.rgx,
+    doc_reform.meta.rgx_files,
+    doc_reform.io_out.rgx_xhtml;
+  auto format_html_blank_page_guide_home()(
+    string css_style,
+    string home_url,
+    string collection_home_path
+  ) {
+    auto html_blank_default = format(q"┃<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/plain; charset=UTF-8" />
+    <link href="%s" rel="stylesheet" />
+  </head>
+  <body>
+    <p class="heading">
+      <a href="%s">⟰&nbsp;</a>&nbsp;
+      <a href="%s">&nbsp;≅&nbsp;</a>
+    </p>
+  </body>
+</html>┃",
+      css_style,
+      home_url,
+      collection_home_path
+    );
+    return html_blank_default;
+  }
+}
diff --git a/src/doc_reform/io_out/latex.d b/src/doc_reform/io_out/latex.d
index 231d0c5..b09eec8 100644
--- a/src/doc_reform/io_out/latex.d
+++ b/src/doc_reform/io_out/latex.d
@@ -1363,8 +1363,14 @@ template outputLaTeX() {
         }
       }
       if (!exists(pth_latex.latex_path_stuff ~ "/index.html")) {
+        import doc_reform.io_out.html_snippet;
+        mixin htmlSnippet;
         auto f = File(pth_latex.latex_path_stuff ~"/index.html", "w");
-        f.writeln("");
+        f.writeln(format_html_blank_page_guide_home(
+          "../../css/html_scroll.css",
+          "https://sisudoc.org",
+          "../../index.html",
+        ));
       }
     } catch (ErrnoException ex) {
       // handle error
@@ -1409,9 +1415,25 @@ template outputLaTeXstyInit() {
           auto f = File(pth_latex.latex_document_header_sty(filename), "w");
           f.writeln(latex_sty);
         }
+        if (!exists(pth_latex.base ~ "/index.html")) {
+          import doc_reform.io_out.html_snippet;
+          mixin htmlSnippet;
+          auto f = File(pth_latex.base ~"/index.html", "w");
+          f.writeln(format_html_blank_page_guide_home(
+            "../css/html_scroll.css",
+            "https://sisudoc.org",
+            "../index.html",
+          ));
+        }
         if (!exists(pth_latex.base_sty ~ "/index.html")) {
+          import doc_reform.io_out.html_snippet;
+          mixin htmlSnippet;
           auto f = File(pth_latex.base_sty ~"/index.html", "w");
-          f.writeln("");
+          f.writeln(format_html_blank_page_guide_home(
+            "../../css/html_scroll.css",
+            "https://sisudoc.org",
+            "../../index.html",
+          ));
         }
       } catch (ErrnoException ex) {
         // handle error
diff --git a/src/doc_reform/io_out/odt.d b/src/doc_reform/io_out/odt.d
index df52149..f4a5c49 100644
--- a/src/doc_reform/io_out/odt.d
+++ b/src/doc_reform/io_out/odt.d
@@ -1000,8 +1000,14 @@ template outputODT() {
       pth_odt.base_pth.mkdirRecurse;
     }
     if (!exists(pth_odt.base_pth ~ "/index.html")) {
+      import doc_reform.io_out.html_snippet;
+      mixin htmlSnippet;
       auto f = File(pth_odt.base_pth ~"/index.html", "w");
-      f.writeln("");
+      f.writeln(format_html_blank_page_guide_home(
+        "../../css/html_scroll.css",
+        "https://sisudoc.org",
+        "../../index.html",
+      ));
     }
     // return 0;
   }
@@ -2099,8 +2105,14 @@ template outputODT() {
         }
       }
       if (!exists(pth_odt.base_pth ~ "/index.html")) {
+        import doc_reform.io_out.html_snippet;
+        mixin htmlSnippet;
         auto f = File(pth_odt.base_pth ~"/index.html", "w");
-        f.writeln("");
+        f.writeln(format_html_blank_page_guide_home(
+          "../../css/html_scroll.css",
+          "https://sisudoc.org",
+          "../../index.html",
+        ));
       }
     } catch (ErrnoException ex) {
       // Handle error
diff --git a/src/doc_reform/io_out/paths_output.d b/src/doc_reform/io_out/paths_output.d
index dc35618..b9da41d 100644
--- a/src/doc_reform/io_out/paths_output.d
+++ b/src/doc_reform/io_out/paths_output.d
@@ -602,6 +602,9 @@ template spinePathsLaTeXsty() {
       auto out_pth() {
         return spineOutPaths!()(output_dir);
       }
+      string base() {
+        return (((out_pth.output_root).chainPath("latex")).asNormalizedPath).array;
+      }
       string base_sty() {
         return (((out_pth.output_root).chainPath("latex").chainPath("sty")).asNormalizedPath).array;
       }
diff --git a/src/doc_reform/io_out/source_pod.d b/src/doc_reform/io_out/source_pod.d
index f61721c..23017ff 100644
--- a/src/doc_reform/io_out/source_pod.d
+++ b/src/doc_reform/io_out/source_pod.d
@@ -129,8 +129,14 @@ template spinePod() {
         }
       }
       if (!exists(pths_pod.pod_dir_() ~ "/index.html")) {
+        import doc_reform.io_out.html_snippet;
+        mixin htmlSnippet;
         auto f = File(pths_pod.pod_dir_() ~"/index.html", "w");
-        f.writeln("");
+        f.writeln(format_html_blank_page_guide_home(
+          "../../css/html_scroll.css",
+          "https://sisudoc.org",
+          "../../index.html",
+        ));
       }
       if (doc_matters.opt.action.debug_do_pod
       && doc_matters.opt.action.vox_gt1) {
-- 
cgit v1.2.3