From e95c49b76f4ac7bf72c383ee43a0567dfcbf1603 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph.amissah@gmail.com>
Date: Mon, 10 Sep 2018 18:15:02 -0400
Subject: 0.1.0 renamed doc-reform, doc_reform (& rad)

- from sdp
---
 org/compile_time_info.org   |   25 +-
 org/default_misc.org        |   25 +-
 org/default_paths.org       |   29 +-
 org/default_regex.org       |   31 +-
 org/default_shared.org      |   19 +-
 org/doc_reform.org          | 1524 ++++++++++++++++++++++++++++++++++++++++++
 org/imports.org             |   31 +-
 org/meta_abstraction.org    |   51 +-
 org/meta_conf_make_meta.org |   67 +-
 org/meta_debugs.org         |   21 +-
 org/output_hub.org          |   33 +-
 org/output_sisupod.org      |   23 +-
 org/output_sqlite.org       |   37 +-
 org/output_xmls.org         |   43 +-
 org/output_xmls_css.org     |   17 +-
 org/output_zip.org          |   14 +-
 org/sdp.org                 | 1525 -------------------------------------------
 org/source_files_read.org   |   40 +-
 18 files changed, 1769 insertions(+), 1786 deletions(-)
 create mode 100644 org/doc_reform.org
 delete mode 100644 org/sdp.org

(limited to 'org')

diff --git a/org/compile_time_info.org b/org/compile_time_info.org
index 281bfe1..49702a2 100644
--- a/org/compile_time_info.org
+++ b/org/compile_time_info.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp compile time info
+#+TITLE:       doc_reform compile time info
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:compile:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,26 +11,25 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:niu:compile:info:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* compilation info                             :module:sdp:compile_time_info:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* compilation info                      :module:doc_reform:compile_time_info:
 [[../maker.org][maker.org makefile]]
-[[./sdp.org][sdp hub]]  [[./][org/]]
+[[./doc_reform.org][doc_reform hub]]  [[./][org/]]
 
 e.g. do on linux bsd osx not windows:
 version(Windows) {} else { ... }
 
 ** 0. module template
 
-#+begin_src d  :tangle ../src/sdp/conf/compile_time_info.d
+#+begin_src d  :tangle ../src/doc_reform/conf/compile_time_info.d
 /++
   compile_time_info
 +/
-module sdp.conf.compile_time_info;
+module doc_reform.conf.compile_time_info;
 template CompileTimeInfo() {
-  <<sdp_compile_time_info>>
+  <<doc_reform_compile_time_info>>
 }
 #+end_src
 
@@ -39,7 +38,7 @@ OS type shows during compilation
 
 *** set os flags
 
-#+name: sdp_compile_time_info
+#+name: doc_reform_compile_time_info
 #+BEGIN_SRC d
 version(Windows) {
   pragma(msg, "[ Windows compilation ]");
@@ -97,7 +96,7 @@ static if(sysWindows) {
 
 ** 64 bit compilation?
 
-#+name: sdp_compile_time_info
+#+name: doc_reform_compile_time_info
 #+BEGIN_SRC d
 version(D_LP64) {
   enum bits = "64 bit";
diff --git a/org/default_misc.org b/org/default_misc.org
index 05496f1..55fa418 100644
--- a/org/default_misc.org
+++ b/org/default_misc.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp defaults misc
+#+TITLE:       doc_reform defaults misc
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:default:misc:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,19 +11,18 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* 0. meta defaults                                     :module:sdp:meta_defaults:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* 0. meta defaults                                              :module:meta:
 ** 0. module template
 
 #+name: tangle_defaults
-#+BEGIN_SRC d :tangle ../src/sdp/meta/defaults.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/defaults.d
 /++
   default settings
 +/
-module sdp.meta.defaults;
+module doc_reform.meta.defaults;
 <<meta_defaults_template_init_flags>>
 <<meta_defaults_template_node>>
 <<meta_defaults_template_biblio>>
@@ -169,15 +168,15 @@ template SiSUbiblio() {
 }
 #+END_SRC
 
-* 1. output defaults                                    :module:sdp:defaults:
+* 1. output defaults                                          :module:output:
 ** 0. module template
 
 #+name: tangle_defaults
-#+BEGIN_SRC d :tangle ../src/sdp/output/defaults.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/defaults.d
 /++
   default settings
 +/
-module sdp.output.defaults;
+module doc_reform.output.defaults;
 <<defaults_template_init_flags>>
 <<defaults_template_markup>>
 <<defaults_template_language_codes>>
@@ -209,7 +208,7 @@ import
 #+END_SRC
 
 ** defaults shared by meta & output (generic)
-*** template: internal markup                                        :markup:
+*** template: internal markup                                      :markup:
 
 21 special characters used:
 
diff --git a/org/default_paths.org b/org/default_paths.org
index a37b542..9859758 100644
--- a/org/default_paths.org
+++ b/org/default_paths.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp default paths
+#+TITLE:       doc_reform default paths
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:paths:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,27 +11,26 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:path:file:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* 0. source paths                                   :module:sdp:paths_source:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* 0. source paths                            :module:doc_reform:paths_source:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/source/paths_source.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/source/paths_source.d
 /++
   read configuration files<BR>
   - read config files<BR>
   meta_config_files.d
 +/
-module sdp.source.paths_source;
+module doc_reform.source.paths_source;
 import std.array,
   std.file,
   std.path,
   std.regex,
   std.stdio,
   std.conv : to;
-import sdp.meta.rgx;
+import doc_reform.meta.rgx;
 <<template_paths_src>>
 <<template_paths_sisupod>>
 <<template_paths_sisupod_shallow>>
@@ -91,7 +90,7 @@ template PodManifest() {
 }
 #+END_SRC
 
-** _path matters (pod, manifest and source files)_             :manifest:
+** _path matters (pod, manifest and source files)_                  :manifest:
 
 tree sisupod
 sisupod
@@ -902,19 +901,19 @@ template SiSUpathsSisupods() {
 }
 #+END_SRC
 
-* 1. output paths                                   :module:sdp:paths_output:
+* 1. output paths                            :module:doc_reform:paths_output:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/paths_output.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/paths_output.d
 /++
   default settings
 +/
-module sdp.output.paths_output;
+module doc_reform.output.paths_output;
 import std.array,
   std.path,
   std.regex,
   std.stdio;
-import sdp.meta.rgx;
+import doc_reform.meta.rgx;
 <<template_paths_out>>
 <<template_paths_html>>
 <<template_paths_epub>>
diff --git a/org/default_regex.org b/org/default_regex.org
index 939aa8a..933a1b1 100644
--- a/org/default_regex.org
+++ b/org/default_regex.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp regex defaults
+#+TITLE:       doc_reform regex defaults
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:regex:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,12 +11,11 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* 0. meta ctRegex                                           :module:sdp:meta_rgx:
-[[./sdp.org][sdp]]  [[./][org/]]
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* 0. meta ctRegex                                                    :module:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
 http://dlang.org/phobos/std_regex.html
 - Plain string, in which case it's compiled to bytecode before matching.
 - Regex!char (wchar/dchar) that contains a pattern in the form of compiled bytecode.
@@ -31,13 +30,13 @@ http://dlang.org/phobos/std_regex.html
 ** 0. module template
 
 #+name: tangle_meta_rgx
-#+BEGIN_SRC d :tangle ../src/sdp/meta/rgx.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/rgx.d
 /++
   regex: regular expressions used in sisu document parser
 +/
-module sdp.meta.rgx;
+module doc_reform.meta.rgx;
 static template SiSUrgxInit() {
-  import sdp.meta.defaults;
+  import doc_reform.meta.defaults;
   static struct Rgx {
     <<meta_rgx>>
     <<prgmkup_rgx>>
@@ -369,8 +368,8 @@ auto language_code_and_filename                                    =
    ctRegex!("(?:^|[/])(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)/[A-Za-z0-9._-].+?[.](?:sst|ssm)$");
 #+END_SRC
 
-* 1. output ctRegex                                   :module:sdp:output_rgx:
-[[./sdp.org][sdp]]  [[./][org/]]
+* 1. output ctRegex                            :module:doc_reform:output_rgx:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
 http://dlang.org/phobos/std_regex.html
 - Plain string, in which case it's compiled to bytecode before matching.
 - Regex!char (wchar/dchar) that contains a pattern in the form of compiled bytecode.
@@ -379,13 +378,13 @@ http://dlang.org/phobos/std_regex.html
 ** 0. module template
 
 #+name: tangle_meta_rgx
-#+BEGIN_SRC d :tangle ../src/sdp/output/rgx.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/rgx.d
 /++
   regex: regular expressions used in sisu document parser
 +/
-module sdp.output.rgx;
+module doc_reform.output.rgx;
 static template SiSUoutputRgxInit() {
-  import sdp.output.defaults;
+  import doc_reform.output.defaults;
   static struct Rgx {
     <<prgmkup_rgx>>
     <<sp_ch_xhtml_rgx>>
diff --git a/org/default_shared.org b/org/default_shared.org
index 113b98b..e94ab60 100644
--- a/org/default_shared.org
+++ b/org/default_shared.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp shared
+#+TITLE:       doc_reform shared
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:default:shared:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,22 +11,21 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* 0. shared                                     :module:sdp:shared:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* 0. shared                                        :module:doc_reform:shared:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/share/defaults.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/share/defaults.d
 /++
   shared default settings
 +/
-module sdp.share.defaults;
+module doc_reform.share.defaults;
 <<shared_messages>>
 #+END_SRC
 
-** template: messages                                          :messages:
+** template: messages                                             :messages:
 #+name: shared_messages
 #+BEGIN_SRC d
 template Msg() {
diff --git a/org/doc_reform.org b/org/doc_reform.org
new file mode 100644
index 0000000..eb10646
--- /dev/null
+++ b/org/doc_reform.org
@@ -0,0 +1,1524 @@
+#+TITLE:       doc_reform hub
+#+DESCRIPTION: documents - structuring, various output representations & search
+#+FILETAGS:    :doc_reform:hub:
+#+AUTHOR:      Ralph Amissah
+#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+LANGUAGE:    en
+#+STARTUP:     indent content
+#+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+OPTIONS:     TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
+#+OPTIONS:     author:nil email:nil creator:nil timestamp:nil
+#+PROPERTY:    header-args :padline no :exports code :noweb yes
+#+EXPORT_SELECT_TAGS:  export
+#+EXPORT_EXCLUDE_TAGS: noexport
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
+
+[[../maker.org][maker.org makefile]]  [[./][org/]]
+* 0. version.txt (set version)                                      :version:
+** set program version
+
+#+BEGIN_SRC d  :tangle ../views/version.txt
+/+ obt - org generated file +/
+struct Version {
+  int major;
+  int minor;
+  int patch;
+}
+enum ver = Version(0, 1, 0);
+#+END_SRC
+
+** compilation restrictions (supported compilers)
+
+http://dlang.org/spec/version.html#predefined-versions
+
+#+BEGIN_SRC d  :tangle ../views/version.txt
+version (Posix) {
+  version (DigitalMars) {
+  } else version (LDC) {
+  } else version (GNU) {
+  } else {
+    static assert (0, "Unsupported D compiler");
+  }
+} else {
+  static assert (0, "Unsupported D compiler");
+}
+#+END_SRC
+
+* 1. doc_reform (sisu document parser)                           :doc_reform:
+** notes
+- deal with imports
+- get options
+  - get command line instructions
+  - read config instructions
+- process files as instructed by options
+  - read in file
+  - process file
+  - output
+
+** 0. sdp src/sdp                                                 :template:
+
+- process files (act according to requirements of each type)
+  - by sourcefilename
+  - by sourcefiles contents identifier
+  - by zip filename
+
+#+BEGIN_SRC d  :tangle ../src/doc_reform/doc_reform.d :shebang #!/usr/bin/env rdmd
+module doc_reform.sisu_document_parser;
+import
+  doc_reform.conf.compile_time_info,
+  doc_reform.meta.metadoc;
+<<imports_doc_reform>>
+import std.algorithm;
+import std.parallelism;
+<<mixin_doc_reform_version>>
+<<mixin_pre_main>>
+/++
+name        "doc_reform"
+description "A SiSU inspired document parser writen in D."
+homepage    "http://sisudoc.org"
++/
+void main(string[] args) {
+  <<doc_reform_mixin>>
+  <<doc_reform_args>>
+  <<doc_reform_do_selected>>
+  if (_manifests.length > 1) {                            // _manifests[0] initialized dummy element
+    foreach(manifest; parallel(_manifests[1..$])) {
+      if (!empty(manifest.src.filename)) {
+        <<doc_reform_each_file_do_scope>>
+        <<doc_reform_each_file_do_abstraction>>
+        <<doc_reform_each_file_do_debugs_checkdoc>>
+        <<doc_reform_each_file_do_selected_output>>
+        <<doc_reform_each_file_do_scope_exit>>
+      } else {
+        <<doc_reform_no_filename_provided>>
+      }
+    }
+  }
+}
+#+END_SRC
+
+** 1. pre-loop init                                                   :init:
+*** init
+**** imports                                                      :import:
+***** doc_reform                                             :doc_reform:
+
+#+NAME: imports_doc_reform
+#+BEGIN_SRC d
+import
+  std.getopt,
+  std.file,
+  std.path,
+  std.process;
+import
+  doc_reform.meta,
+  doc_reform.meta.metadoc_summary,
+  doc_reform.meta.metadoc_from_src,
+  doc_reform.meta.conf_make_meta_structs,
+  doc_reform.meta.conf_make_meta_toml,
+  doc_reform.meta.conf_make_meta_json,
+  doc_reform.meta.defaults,
+  doc_reform.meta.doc_debugs,
+  doc_reform.meta.rgx,
+  doc_reform.source.paths_source,
+  doc_reform.source.read_config_files,
+  doc_reform.source.read_source_files,
+  doc_reform.output.hub;
+#+END_SRC
+
+****** notes
+├── src
+│   ├── doc_reform.d
+│   └── doc_reform
+│       ├── conf
+│       ├── meta
+│       └── output
+└── views
+    └── version.txt
+
+[[./meta_abstraction.org][meta_abstraction]]
+[[./meta_conf_make_meta.org][meta_conf_make_meta]]
+[[./meta_defaults.org][meta_defaults]]
+[[./meta_output_debugs.org][meta_output_debugs]]
+[[./source_read_files.org][source_read_files]]
+[[./compile_time_info.org][compile time info]]
+[[./output.org][output]]
+[[./doc_reform.org][doc_reform]]
+
+keep up to date, configuration in ../maker.org
+
+check:
+- http://github.com/Abscissa/SDLang-D
+- https://github.com/abscissa/libInputVisitor
+
+std.conv,
+std.variant,
+
+- https://code.dlang.org/packages/toml
+- https://github.com/toml-lang/toml
+- https://github.com/toml-lang/toml/blob/master/README.md
+
+**** mixins                                                        :mixin:
+***** version.txt                                               :version:
+
+#+NAME: mixin_doc_reform_version
+#+BEGIN_SRC d
+mixin(import("version.txt"));
+#+END_SRC
+
+***** pre main mixins
+#+NAME: mixin_pre_main
+#+BEGIN_SRC d
+mixin CompileTimeInfo;
+#+END_SRC
+
+***** doc_reform "main" mixins                               :doc_reform:
+
+#+NAME: doc_reform_mixin
+#+BEGIN_SRC d
+mixin SiSUrgxInit;
+mixin contentJSONtoSiSUstruct;
+mixin SiSUbiblio;
+mixin SiSUrgxInitFlags;
+mixin outputHub;
+#+END_SRC
+
+**** init                                                           :init:
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+string flag_action;
+string arg_unrecognized;
+enum dAM { abstraction, matters }
+static auto rgx = Rgx();
+#+END_SRC
+
+*** scope (run complete)                                            :scope:
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+scope(success) {
+  debug(checkdoc) {
+    writefln(
+      "~ run complete, ok ~ (doc_reform-%s.%s.%s, %s D:%s, %s %s)",
+      ver.major, ver.minor, ver.patch,
+      __VENDOR__, __VERSION__,
+      bits, os,
+    );
+  }
+}
+scope(failure) {
+  debug(checkdoc) {
+    stderr.writefln(
+      "run failure",
+    );
+  }
+}
+#+END_SRC
+
+*** getopt args for loop                                      :args:getopt:
+
+look into using getopt
+[[http://dlang.org/phobos/std_getopt.html][getopt]]
+[[http://dlang.org/library/std/getopt.html][getopt]]
+
+**** getopt
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+bool[string] opts = [
+  "abstraction"        : false,
+  "assertions"         : false,
+  "concordance"        : false,
+  "debug"              : false,
+  "digest"             : false,
+  "epub"               : false,
+  "html"               : false,
+  "html-seg"           : false,
+  "html-scroll"        : false,
+  "manifest"           : false,
+  "ocn"                : true,
+  "pp2"                : false,
+  "quiet"              : false,
+  "sisupod"            : false,
+  "source"             : false,
+  "sqlite-discrete"    : false,
+  "sqlite-db-create"   : false,
+  "sqlite-db-drop"     : false,
+  "sqlite-db-recreate" : false,
+  "sqlite-delete"      : false,
+  "sqlite-insert"      : false,
+  "sqlite-update"      : false,
+  "text"               : false,
+  "verbose"            : false,
+  "very-verbose"        : false,
+  "xhtml"              : false,
+  "section_toc"        : true,
+  "section_body"       : true,
+  "section_endnotes"   : true,
+  "section_glossary"   : true,
+  "section_biblio"     : true,
+  "section_bookindex"  : true,
+  "section_blurb"      : true,
+  "backmatter"         : true,
+  "skip-output"        : false,
+];
+string[string] settings = [
+  "output-dir"         : "",
+  "site-config-dir"    : "",
+  "lang"               : "all",
+  "sqlite-filename"    : "documents",
+];
+auto helpInfo = getopt(args,
+  std.getopt.config.passThrough,
+  "abstraction",        "--abstraction document abstraction ",                                      &opts["abstraction"],
+  "assert",             "--assert set optional assertions on",                                      &opts["assertions"],
+  "concordance",        "--concordance file for document",                                          &opts["concordance"],
+  "debug",              "--debug",                                                                  &opts["debug"],
+  "digest",             "--digest hash digest for each object",                                     &opts["digest"],
+  "epub",               "--epub process epub output",                                               &opts["epub"],
+  "html",               "--html process html output",                                               &opts["html"],
+  "html-seg",           "--html-seg process html output",                                           &opts["html-seg"],
+  "html-scroll",        "--html-seg process html output",                                           &opts["html-scroll"],
+  "manifest",           "--manifest process manifest output",                                       &opts["manifest"],
+  "ocn",                "--ocn object cite numbers (default)",                                      &opts["ocn"],
+  "pp2",                "--pp2 nested parallelisation",                                             &opts["pp2"],
+  "quiet",              "--quiet output to terminal",                                               &opts["quiet"],
+  "sisupod",            "--sisupod sisupod source content bundled",                                 &opts["sisupod"],
+  "source",             "--source markup source text content",                                      &opts["source"],
+  "sqlite-discrete",    "--sqlite process discrete sqlite output",                                  &opts["sqlite-discrete"],
+  "sqlite-db-create",   "--sqlite-db-create create db, create tables",                              &opts["sqlite-db-create"],
+  "sqlite-db-drop",     "--sqlite-db-drop drop tables & db",                                        &opts["sqlite-db-drop"],
+  "sqlite-db-recreate", "--sqlite-db-recreate create db, create tables",                            &opts["sqlite-db-recreate"],
+ // "sqlite-db-populate", "--sqlite-db-populate create db & tables, insert specified",  &opts["sqlite-db-populate"],
+  "sqlite-delete",      "--sqlite process sqlite output",                                           &opts["sqlite-delete"],
+  "sqlite-insert",      "--sqlite process sqlite output",                                           &opts["sqlite-insert"],
+  "sqlite-update",      "--sqlite process sqlite output",                                           &opts["sqlite-update"],
+  "text",               "--text process text output",                                               &opts["text"],
+  "txt",                "--txt process text output",                                                &opts["text"],
+  "verbose|v",          "--verbose output to terminal",                                             &opts["verbose"],
+  "very-verbose",       "--very-verbose output to terminal",                                        &opts["very-verbose"],
+  "xhtml",              "--xhtml process xhtml output",                                             &opts["xhtml"],
+  "section-toc",        "--section-toc process table of contents (default)",                        &opts["section_toc"],
+  "section-body",       "--section-body process document body (default)",                           &opts["section_body"],
+  "section-endnotes",   "--section-endnotes process document endnotes (default)",                   &opts["section_endnotes"],
+  "section-glossary",   "--section-glossary process document glossary (default)",                   &opts["section_glossary"],
+  "section-biblio",     "--section-biblio process document biblio (default)",                       &opts["section_biblio"],
+  "section-bookindex",  "--section-bookindex process document bookindex (default)",                 &opts["section_bookindex"],
+  "section-blurb",      "--section-blurb process document blurb (default)",                         &opts["section_blurb"],
+  "backmatter",         "--section-backmatter process document backmatter (default)",               &opts["backmatter"],
+  "skip-output",        "--skip-output",                                                            &opts["skip-output"],
+  "output-dir",         "--output-dir=[dir path]",                                                  &settings["output-dir"],
+  "site-config-dir",    "--site-config-dir=[dir path]",                                             &settings["site-config-dir"],
+  "sqlite-filename",    "--sqlite-filename=[filename].sqlite",                                      &settings["sqlite-filename"],
+  "lang",               "--lang=[lang code e.g. =en or =en,es]",                                    &settings["lang"],
+);
+if (helpInfo.helpWanted) {
+  defaultGetoptPrinter("Some information about the program.", helpInfo.options);
+}
+#+END_SRC
+
+**** getopt hash to struct
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+enum outTask { sisupod, source, sqlite, sqlite_multi, epub, html_scroll, html_seg, html_stuff }
+struct OptActions {
+  auto assertions() {
+    return opts["assertions"];
+  }
+  auto concordance() {
+    return opts["concordance"];
+  }
+  auto debug_do() {
+    return opts["debug"];
+  }
+  auto digest() {
+    return opts["digest"];
+  }
+  auto epub() {
+    return opts["epub"];
+  }
+  auto html() {
+    bool _is = (
+      opts["html"]
+      || opts["html-seg"]
+      || opts["html-scroll"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto html_seg() {
+    bool _is = (
+      opts["html"]
+      || opts["html-seg"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto html_scroll() {
+    bool _is = (
+      opts["html"]
+      || opts["html-scroll"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto html_stuff() {
+    bool _is = (
+      opts["html"]
+      || opts["html-scroll"]
+      || opts["html-seg"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto manifest() {
+    return opts["manifest"];
+  }
+  auto ocn() {
+    return opts["ocn"];
+  }
+  auto quiet() {
+    return opts["quiet"];
+  }
+  auto sisupod() {
+    return opts["sisupod"];
+  }
+  auto source() {
+    return opts["source"];
+  }
+  auto sqlite_discrete() {
+    return opts["sqlite-discrete"];
+  }
+  auto sqlite_db_drop() {
+    bool _is = (
+      opts["sqlite-db-recreate"]
+      || opts["sqlite-db-drop"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto sqlite_db_create() {
+    bool _is = (
+      opts["sqlite-db-recreate"]
+      || opts["sqlite-db-create"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto sqlite_insert() {
+    return opts["sqlite-insert"];
+  }
+  auto sqlite_delete() {
+    return opts["sqlite-delete"];
+  }
+  auto sqlite_update() {
+    return opts["sqlite-update"];
+  }
+  auto text() {
+    return opts["text"];
+  }
+  auto verbose() {
+    bool _is = (
+      opts["verbose"]
+      || opts["very-verbose"]
+    )
+    ? true
+    : false;
+    return _is;
+  }
+  auto very_verbose() {
+    return opts["very-verbose"];
+  }
+  auto xhtml() {
+    return opts["xhtml"];
+  }
+  auto section_toc() {
+    return opts["section_toc"];
+  }
+  auto section_body() {
+    return opts["section_body"];
+  }
+  auto section_endnotes() {
+    return opts["section_endnotes"];
+  }
+  auto section_glossary() {
+    return opts["section_glossary"];
+  }
+  auto section_biblio() {
+    return opts["section_biblio"];
+  }
+  auto section_bookindex() {
+    return opts["section_bookindex"];
+  }
+  auto section_blurb() {
+    return opts["section_blurb"];
+  }
+  auto backmatter() {
+    return opts["backmatter"];
+  }
+  auto skip_output() {
+    return opts["skip-output"];
+  }
+  auto languages_set() {
+    return settings["lang"].split(",");
+  }
+  auto output_dir_set() {
+    return settings["output-dir"];
+  }
+  auto sqlite_filename() {
+    return settings["sqlite-filename"];
+  }
+  auto pp2() {
+    return opts["pp2"];
+  }
+  auto output_task_scheduler() {
+    int[] schedule;
+    if (sisupod) {
+      schedule ~= outTask.sisupod;
+    }
+    if (source) {
+      schedule ~= outTask.source;
+    }
+    if (sqlite_discrete) {
+      schedule ~= outTask.sqlite;
+    }
+    if (epub) {
+      schedule ~= outTask.epub;
+    }
+    if (html_scroll) {
+      schedule ~= outTask.html_scroll;
+    }
+    if (html_seg) {
+      schedule ~= outTask.html_seg;
+    }
+    if (html_stuff) {
+      schedule ~= outTask.html_stuff;
+    }
+    return schedule.sort().uniq;
+  }
+  auto abstraction() {
+    bool _is = (
+      opts["abstraction"]
+      || concordance
+      || epub
+      || html
+      || manifest
+      || sisupod
+      || source
+      || sqlite_discrete
+      || sqlite_delete
+      || sqlite_insert
+      || sqlite_update
+    )
+    ? true
+    : false;
+    return _is;
+  }
+}
+auto _opt_action = OptActions();
+#+END_SRC
+
+**** env
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+auto _env = [
+  "pwd" : environment["PWD"],
+  "home" : environment["HOME"],
+];
+#+END_SRC
+
+*** opt actions on processing files & file paths (pods, src etc.)
+
+#+NAME: doc_reform_args
+#+BEGIN_SRC d
+auto _manifest_start = PodManifest!()("");
+auto _manifest_matter = PathMatters!()(_opt_action, _env, "");
+auto _manifests = [ _manifest_matter ];
+foreach(arg; args[1..$]) {
+  _manifest_start = PodManifest!()(arg);
+  if (arg.match(rgx.flag_action)) {
+    flag_action ~= " " ~ arg;   // flags not taken by getopt
+  } else if (
+    !(arg.match(rgx.src_pth_sst_or_ssm))
+    && _manifest_start.pod_manifest_file_with_path
+    && _opt_action.abstraction
+  ) {
+    string contents_location_raw_;
+    string contents_location_;
+    string sisudoc_txt_ = _manifest_start.pod_manifest_file_with_path;
+    enforce(
+      exists(sisudoc_txt_)!=0,
+      "file not found: «" ~
+      sisudoc_txt_ ~ "»"
+    );
+    if (exists(sisudoc_txt_)) {
+      try {
+        if (exists(sisudoc_txt_)) {
+          contents_location_raw_ = sisudoc_txt_.readText;
+        }
+      } catch (ErrnoException ex) {
+      } catch (FileException ex) {
+        // Handle errors
+      }
+      if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
+        foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
+          foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
+            contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
+          }
+        }
+      } else {
+        contents_location_ = contents_location_raw_;
+      }
+    } else {
+      writeln("manifest not found: ", sisudoc_txt_);
+    }
+    auto contents_locations_arr
+      = (cast(char[]) contents_location_).split;
+    auto tmp_dir_ = (sisudoc_txt_).dirName.array;
+    foreach (contents_location; contents_locations_arr) {
+      assert(contents_location.match(rgx.src_pth_sst_or_ssm),
+        "not a recognised file: «" ~
+        contents_location ~ "»"
+      );
+      auto contents_location_pth_ = (contents_location).to!string;
+      auto lang_rgx_ = regex(r"/(" ~ _opt_action.languages_set.join("|") ~ ")/");
+      if (_opt_action.languages_set[0] == "all"
+        || (contents_location_pth_).match(lang_rgx_)
+      ) {
+        auto _fns = (((tmp_dir_).chainPath(contents_location_pth_)).array).to!string;
+        _manifest_matter = PathMatters!()(_opt_action, _env, arg, _fns, contents_locations_arr);
+        _manifests ~= _manifest_matter;
+      }
+    }
+  } else if (arg.match(rgx.src_pth_sst_or_ssm)) {
+    if (exists(arg)==0) {
+      writeln("ERROR >> Processing Skipped! File not found: ", arg);
+    } else {
+      _manifest_matter = PathMatters!()(_opt_action, _env, arg, arg);
+      _manifests ~= _manifest_matter;
+    }
+  } 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;
+  }
+}
+#+END_SRC
+
+*** config files load & read
+
+#+NAME: doc_reform_conf_files_in_toml
+#+BEGIN_SRC d
+auto _config_document_struct = readConfigDoc!()(_manifest, _env);    // document config file
+auto _config_local_site_struct = readConfigSite!()(_manifest, _env); // local site config
+ConfCompositePlus _make_and_meta_struct;
+_make_and_meta_struct = configParseTOMLreturnSiSUstruct!()(_make_and_meta_struct, _config_document_struct);
+_make_and_meta_struct = configParseTOMLreturnSiSUstruct!()(_make_and_meta_struct, _config_local_site_struct);
+#+END_SRC
+
+*** opt actions independent of processing files (no files no processing loop)
+
+#+NAME: doc_reform_do_selected
+#+BEGIN_SRC d
+if (!(_opt_action.skip_output)) {
+  debug(steps) {
+    writeln("step0 commence → (without processing files)");
+  }
+  outputHubOp!()(_env, _opt_action);
+  debug(steps) {
+    writeln("- step0 complete");
+  }
+}
+#+END_SRC
+
+** _2. processing: (loop each file)_ [+2]                         :loop:files:
+*** scope (loop)                                                    :scope:
+
+#+NAME: doc_reform_each_file_do_scope
+#+BEGIN_SRC d
+scope(success) {
+  if (!(_opt_action.quiet)) {
+    writefln(
+      "%s\n%s",
+      "~ document complete, ok ~",
+      "------------------------------------------------------------------",
+    );
+  }
+}
+scope(failure) {
+  debug(checkdoc) {
+    stderr.writefln(
+      "~ document run failure ~ (%s  v%s)\n\t%s\n%s",
+      __VENDOR__, __VERSION__,
+      manifest.src.filename,
+      "------------------------------------------------------------------",
+    );
+  }
+}
+enforce(
+  manifest.src.filename.match(rgx.src_pth_types),
+  "not a sisu markup filename: «" ~
+  manifest.src.filename ~ "»"
+);
+#+END_SRC
+
+*** 1. _document abstraction_ [#A]
+
+- return tuple of:
+  - doc_abstraction (the document)
+  - doc_matters
+
+#+NAME: doc_reform_each_file_do_abstraction
+#+BEGIN_SRC d
+debug(steps) {
+  writeln("--->\nstepX commence → (document abstraction)");
+}
+auto t = SiSUabstraction!()(_env, _opt_action, manifest);
+static assert(!isTypeTuple!(t));
+static assert(t.length==2);
+auto doc_abstraction = t[dAM.abstraction];
+auto doc_matters = t[dAM.matters];
+debug(steps) {
+  writeln("- stepX complete");
+}
+#+END_SRC
+
+*** 2. _output processing_ (post abstraction processing)
+**** 0. abstraction _print summary_                    :abstraction:summary:
+
+#+NAME: doc_reform_each_file_do_debugs_checkdoc
+#+BEGIN_SRC d
+/+ ↓ debugs +/
+if (doc_matters.opt.action.verbose) {
+  SiSUabstractionSummary!()(doc_abstraction, doc_matters);
+}
+#+END_SRC
+
+**** 1. _debug_ (document parts, checkdoc)                  :debug:checkdoc:
+- [[./meta_output_debugs.org][meta_output_debugs]]
+
+#+NAME: doc_reform_each_file_do_debugs_checkdoc
+#+BEGIN_SRC d
+/+ ↓ debugs +/
+if ((doc_matters.opt.action.debug_do)
+|| (doc_matters.opt.action.verbose)
+) {
+  SiSUdebugs!()(doc_abstraction, doc_matters);
+}
+#+END_SRC
+
+**** 2. _process outputs_                                          :outputs:
+- [[./output_hub.org][output_hub]]
+
+#+NAME: doc_reform_each_file_do_selected_output
+#+BEGIN_SRC d
+/+ ↓ output hub +/
+if (!(doc_matters.opt.action.skip_output)) {
+  debug(steps) {
+    writeln("step5 commence → (process outputs)");
+  }
+  outputHub!()(doc_abstraction, doc_matters);
+  debug(steps) {
+    writeln("- step5 complete");
+  }
+}
+#+END_SRC
+
+*** scope (on loop exit)                                       :scope:exit:
+
+#+NAME: doc_reform_each_file_do_scope_exit
+#+BEGIN_SRC d
+scope(exit) {
+  if (!(_opt_action.quiet)) {
+    writefln(
+      "processed file: %s",
+      manifest.src.filename
+    );
+  }
+  destroy(manifest);
+}
+#+END_SRC
+
+** +2c. no valid filename provided+
+#+NAME: doc_reform_no_filename_provided
+#+BEGIN_SRC d
+/+ no recognized filename provided +/
+writeln("no recognized filename");
+break; // terminate, stop
+#+END_SRC
+
+* 2. _document abstraction functions_           :module:doc_reform:abstraction:
+** 0. module template
+
+#+BEGIN_SRC d  :tangle ../src/doc_reform/meta/metadoc.d
+module doc_reform.meta.metadoc;
+template SiSUabstraction() {
+  <<imports_doc_reform>>
+  <<doc_reform_mixin>>
+  enum headBody { header, body_content, insert_file_list, image_list }
+  enum makeMeta { make, meta }
+  enum docAbst  { doc_abstraction, section_keys, segnames, segnames_0_4, images }
+  static auto rgx = Rgx();
+  auto SiSUabstraction(E,O,M)(
+    E _env,
+    O _opt_action,
+    M _manifest
+  ){
+    <<doc_reform_conf_files_in_toml>>
+    <<doc_reform_each_file_do_read_and_split_sisu_markup_file_content_into_header_and_body>>
+    <<doc_reform_each_file_do_split_sisu_markup_file_header_into_make_and_meta_structs>>
+    <<doc_reform_each_file_do_document_abstraction>>
+    <<doc_reform_each_file_do_document_matters>>
+    auto t = tuple(doc_abstraction, doc_matters);
+    static assert(t.length==2);
+    return t;
+  }
+}
+#+END_SRC
+
+** 1. raw file content split, doc: _header_, _content_ +(lists: subdocs? images?)
+- [[./source_read_files.org][source_read_files]]
+
+- read in the _marked up source document_ and
+  - split the document into:
+    - document header
+    - document body
+      - from markup source
+      - if master document from sub documents content
+  - if a master document
+    - make a list of insert files
+  - if build source pod requested
+    - scan for list of images
+      (action avoided if not needed at this stage)
+
+- _return a tuple of_:
+  - header
+  - body
+  - insert file list
+  - image list (if build source pod requested)
+
+if build source pod requested all information needed to build it available at this point
+  - manifest related information  _manifest
+  - insert file list              _header_body_insertfilelist_imagelist[headBody.insert_file_list]
+  - image list                    _header_body_insertfilelist_imagelist[headBody.image_list]
+
+#+NAME: doc_reform_each_file_do_read_and_split_sisu_markup_file_content_into_header_and_body
+#+BEGIN_SRC d
+/+ ↓ read file (filename with path) +/
+/+ ↓ file tuple of header and content +/
+debug(steps) {
+  writeln("step1 commence → (get document header & body & insert file list & if needed image list)"
+  );
+}
+auto _header_body_insertfilelist_imagelist
+  = SiSUrawMarkupContent!()(_opt_action, _manifest.src.path_and_fn);
+static assert(!isTypeTuple!(_header_body_insertfilelist_imagelist));
+static assert(_header_body_insertfilelist_imagelist.length==4);
+debug(steps) {
+  writeln("- step1 complete");
+}
+debug(header_and_body) {
+  writeln(header);
+  writeln(_header_body_insertfilelist_imagelist.length);
+  writeln(_header_body_insertfilelist_imagelist.length[headBody.body_content][0]);
+}
+#+END_SRC
+
+** 2. _document metadata_ & _make instructions_ (struct from toml)
+- [[./meta_conf_make_meta.org][meta_conf_make_meta]]
+
+- read _document header_, split into:
+  - metadata
+  - make instructions
+- read config files
+  - consolidate make instructions
+- _return tuple of_:
+  - document metadata
+  - make instructions (from configuration files & document header make
+    instructions)
+
+#+NAME: doc_reform_each_file_do_split_sisu_markup_file_header_into_make_and_meta_structs
+#+BEGIN_SRC d
+/+ ↓ split header into make and meta +/
+debug(steps) {
+  writeln("step2 commence → (read document header - toml, return struct)");
+}
+_make_and_meta_struct =
+docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct!()(
+  _make_and_meta_struct,
+  _header_body_insertfilelist_imagelist[headBody.header]
+);
+debug(steps) {
+  writeln("- step2 complete");
+}
+#+END_SRC
+
+** 3. _document abstraction, tuple_ (output-pre-processing) [#A]
+- [[./meta_abstraction.org][meta_abstraction]]
+
+- prepare the document abstraction used in downstream processing
+
+- _return tuple of_:
+  - document abstraction (_the_document_ or doc_abstraction)
+  - document abstraction keys
+    - (head, toc, body, endnotes, glossary, bibliography, bookindex, blurb,
+      tail)
+    - (transfer to _doc_matters_)
+  - segnames for html epub (transfer to _doc_matters_)
+  - image list (transfer to _doc_matters_)
+
+#+NAME: doc_reform_each_file_do_document_abstraction
+#+BEGIN_SRC d
+/+ ↓ document abstraction: process document, return abstraction as tuple +/
+debug(steps) {
+  writeln("step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
+}
+auto da = SiSUdocAbstraction!()(
+  _header_body_insertfilelist_imagelist[headBody.body_content],
+  _make_and_meta_struct,
+  _opt_action,
+  _manifest,
+  true,
+);
+static assert(!isTypeTuple!(da));
+static assert(da.length==5);
+auto doc_abstraction = da[docAbst.doc_abstraction]; /+ head ~ toc ~ body ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~ blurb; +/
+auto _document_section_keys_sequenced = da[docAbst.section_keys];
+string[] _doc_html_segnames = da[docAbst.segnames];
+string[] _doc_epub_segnames_0_4 = da[docAbst.segnames_0_4];
+auto _images = da[docAbst.images];
+debug(steps) {
+  writeln("- step3 complete");
+}
+#+END_SRC
+
+** 4. _document matters_ (doc info gathered, various sources) [#A]
+
+- prepare document_matters, miscellany about processing and the document of use
+  in downstream processing
+
+#+NAME: doc_reform_each_file_do_document_matters
+#+BEGIN_SRC d
+debug(steps) {
+  writeln("step4 commence → (doc_matters)");
+}
+struct DocumentMatters {
+  auto conf_make_meta() { // TODO meld with all make instructions
+    return _make_and_meta_struct;
+  }
+  auto env() {
+    struct Env_ {
+      auto pwd() {
+        return _manifest.env.pwd;
+      }
+      auto home() {
+        return _manifest.env.home;
+      }
+    }
+    return Env_();
+  }
+  auto opt() {
+    struct Opt_ {
+      auto action() {
+        /+ getopt options, commandline instructions, raw
+         - processing instructions --epub --html etc.
+         - command line config instructions --output-path
+        +/
+        return _opt_action;
+      }
+    }
+    return Opt_();
+  }
+  auto src() {
+    return _manifest.src;
+  }
+  auto src_path_info() {
+    return SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
+  }
+  auto srcs() {
+    struct SRC_ {
+      auto file_insert_list() {
+        return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
+      }
+      auto image_list() {
+        return _images;
+      }
+    }
+    return SRC_();
+  }
+  auto pod() {
+    return _manifest.pod;
+  }
+  auto sqlite() {
+    struct SQLite_ {
+      string filename() {
+        return _opt_action.sqlite_filename;
+      }
+    }
+    return SQLite_();
+  }
+  auto xml() {
+    struct XML_ {
+      auto keys_seq() {
+        /+ contains .seg & .scroll sequences +/
+        return _document_section_keys_sequenced;
+      }
+      string[] segnames() {
+        return _doc_html_segnames;
+      }
+      string[] segnames_lv_0_to_4() {
+        return _doc_epub_segnames_0_4;
+      }
+    }
+    return XML_();
+  }
+  auto output_path() {
+    return _manifest.output.path;
+  }
+}
+auto doc_matters = DocumentMatters();
+debug(steps) {
+  writeln("- step4 complete");
+}
+#+END_SRC
+
+* 3. document abstraction _summary_         :module:doc_reform:metadoc_summary:
+** 0. module template
+
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/metadoc_summary.d
+module doc_reform.meta.metadoc_summary;
+template SiSUabstractionSummary() {
+  auto SiSUabstractionSummary(S,T)(
+    auto ref const S  doc_abstraction,
+    auto ref       T  doc_matters,
+  ) {
+    <<metadoc_summary_imports>>
+    mixin InternalMarkup;
+    <<metadoc_summary_initialize>>
+    if (doc_matters.opt.action.verbose) {
+      <<meta_metadoc_summary>>
+    }
+  }
+}
+#+END_SRC
+
+** init
+*** imports
+
+#+name: metadoc_summary_imports
+#+BEGIN_SRC d
+import
+  doc_reform.meta.defaults,
+  doc_reform.meta.rgx;
+import
+  std.array,
+  std.exception,
+  std.regex,
+  std.stdio,
+  std.string,
+  std.traits,
+  std.typecons,
+  std.uni,
+  std.utf,
+  std.conv : to;
+#+END_SRC
+
+*** initialize                                                     :report:
+
+#+name: metadoc_summary_initialize
+#+BEGIN_SRC d
+auto markup = InlineMarkup();
+#+END_SRC
+
+** (last ocn)
+
+#+name: meta_metadoc_summary
+#+BEGIN_SRC d
+string[string] check = [
+  "last_object_number" : "NA [debug \"checkdoc\" not run]",
+  "last_object_number_body"  : "0",
+  "last_object_number_book_index" : "0",
+];
+foreach (k; doc_matters.xml.keys_seq.seg) {
+  foreach (obj; doc_abstraction[k]) {
+    if (obj.metainfo.is_of_part != "empty") {
+      if (!empty(obj.metainfo.object_number)) {
+        if (k == "body") {
+          check["last_object_number_body"] = obj.metainfo.object_number;
+        }
+        if (!(obj.metainfo.object_number.empty)) {
+          check["last_object_number"] = obj.metainfo.object_number;
+        }
+      }
+      if (k == "bookindex_seg") {
+        if (obj.metainfo.object_number_type == 2) {
+          check["last_object_number_book_index"] = obj.metainfo.object_number_book_index;
+        }
+      }
+    }
+  }
+}
+#+END_SRC
+
+** summary
+
+#+name: meta_metadoc_summary
+#+BEGIN_SRC d
+auto min_repeat_number = 66;
+auto char_repeat_number = (doc_matters.conf_make_meta.meta.title_full.length
+  + doc_matters.conf_make_meta.meta.creator_author.length + 4);
+char_repeat_number = (char_repeat_number > min_repeat_number)
+? char_repeat_number
+: min_repeat_number;
+writefln(
+  "%s\n\"%s\", %s\n%s\n%s\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n(%s: %s)\n%s",
+  markup.repeat_character_by_number_provided("-", char_repeat_number),
+  doc_matters.conf_make_meta.meta.title_full,
+  doc_matters.conf_make_meta.meta.creator_author,
+  doc_matters.src.filename,
+  markup.repeat_character_by_number_provided("-", char_repeat_number),
+  "length toc arr:",
+  to!int(doc_abstraction["toc_seg"].length),
+  "length doc_abstraction arr:",
+  to!int(doc_abstraction["body"].length),
+  "last doc body ocn:",
+  to!int(check["last_object_number_body"]),
+  "last object_number:",
+  to!int(check["last_object_number"]),
+  "length endnotes:",                                // subtract headings
+  (doc_abstraction["endnotes"].length > 2)
+  ? (to!int(doc_abstraction["endnotes"].length - 2))
+  : 0,
+  "length glossary:",
+  (doc_abstraction["glossary"].length > 1)
+  ? (to!int(doc_abstraction["glossary"].length))
+  : 0,
+  "length biblio:",
+  (doc_abstraction["bibliography"].length > 1)
+  ? (to!int(doc_abstraction["bibliography"].length))
+  : 0,
+  "length bookindex:",
+  (doc_abstraction["bookindex_seg"].length > 1)
+  ? (to!int(doc_abstraction["bookindex_seg"].length))
+  : 0,
+  "  last book idx ocn:",
+  to!int(check["last_object_number_book_index"]),
+  "length blurb:",
+  (doc_abstraction["blurb"].length > 1)
+  ? (to!int(doc_abstraction["blurb"].length))
+  : 0,
+  "number of segments:",
+  (doc_matters.xml.segnames.length > 1)
+  ? (to!int(doc_matters.xml.segnames.length))
+  : 0,
+  __FILE__,
+  __LINE__,
+  markup.repeat_character_by_number_provided("-", min_repeat_number),
+);
+#+END_SRC
+
+* __END__
+dev notes
+
+** doc_reform glossary / terms
+
+|------+-------------------------------------|
+| doc_reform  | sisu document parser                |
+|------+-------------------------------------|
+| dmso | document markup, structure, objects |
+|------+-------------------------------------|
+| meta | meta document, document abstraction |
+| mda  | meta, meta document abstraction     |
+| adr  | abstract document representation    |
+| dar  | document abstract representation    |
+| (da) | (document abstraction)              |
+|      | (code representation of document)   |
+|------+-------------------------------------|
+| ao   | abstract objects                    |
+|      | (code representation of objects)    |
+|------+-------------------------------------|
+
+consider
+|-------+----------------------------------------------|
+| dao   | document abstraction, objects                |
+|-------+----------------------------------------------|
+| daso  | document abstraction, structure, objects     |
+|-------+----------------------------------------------|
+| drso  | document representation, structure, objects  |
+|-------+----------------------------------------------|
+| daows | document abstraction, objects with structure |
+|-------+----------------------------------------------|
+
+** the document notes
+*** document sections
+**** summary
+
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+| section      | part         | opt. |   | objects                                          | ocn                            |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+| front matter | head         | *    |   |                                                  | no                             |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+| toc          | toc          |      |   | generated from headings                          | no                             |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+| body         | body         | *    |   | default section                                  | yes                            |   |   |
+|              |              |      |   | - headings                                       |                                |   |   |
+|              |              |      |   | - paras                                          |                                |   |   |
+|              |              |      |   | - code                                           |                                |   |   |
+|              |              |      |   | - poem                                           |                                |   |   |
+|              |              |      |   | - group                                          |                                |   |   |
+|              |              |      |   | - block                                          |                                |   |   |
+|              |              |      |   | - quote                                          |                                |   |   |
+|              |              |      |   | - table                                          |                                |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+| back matter  | endnote      |      |   | generated from inline note markup                | no (each endnote belongs to    |   |   |
+|              |              |      |   |                                                  | a (body) object)               |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+|              | glossary     |      |   | identified section, limited markup               | possibly, to make searchable   |   |   |
+|              |              |      |   | - heading                                        | hidden                         |   |   |
+|              |              |      |   | - paras                                          |                                |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+|              | bibliography |      |   | generated from inline special markup             | possibly, to make searchable   |   |   |
+|              |              |      |   | appended to paragraphs contained in body section | hidden                         |   |   |
+|              |              |      |   | - heading                                        |                                |   |   |
+|              |              |      |   | - paras                                          |                                |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+|              | book index   |      |   | generated from inline special markup             | possibly, special numbering or |   |   |
+|              |              |      |   | - heading                                        | could use term as anchor?      |   |   |
+|              |              |      |   | - paras                                          | to make searchable             |   |   |
+|              |              |      |   |                                                  | hidden                         |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+|              | blurb        |      |   | identified section, limited markup               | no (unless non-substantive     |   |   |
+|              |              |      |   | - heading                                        | given special numbering)       |   |   |
+|              |              |      |   | - paras                                          |                                |   |   |
+|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
+
+**** on abstraction
+
+- abstract for downstream processing
+  - identify document structure and objects
+    - identify document structure (headings/levels/sections)
+    - identify objects (headings, paragraphs, tables, code blocks, verse ...)
+  - set document, generate common abstraction for downstream parsing
+    - set different _document sections_:
+      - _head_, toc, _body_, endnotes, glossary, bibliography, book index, blurb
+    - _object numbers_, heading/ chapter numbering etc, endnote numbers
+      - _regular ocn_
+        - body objects
+        - glossary objects
+        - bibliography objects
+      - _special ocn_
+        - non substantive text (provide special numbers)
+          - blurb objects
+        - book index
+      - special (_exceptions_)
+        - endnotes
+  - unify object representations
+    - multiple markups for same object type given single representation
+  - extract object attributes
+  - unify inline markup on objects
+    - inline markup made easier to identify
+
+- simplify downstream parsing
+
+*** objects
+**** summary
+
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+|       |              | identified by              | object notes             | attributes     | inline          | embedded       | special    |
+|       |              |                            |                          |                |                 | appended       | characters |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+| para  | heading      | level markers              |                          |                | - italics       | - endnotes     |            |
+|       |              | at start of line           |                          |                |                 | - bibliography |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+|       | paragraph    | delimited by two new lines | default object           | - indent       | - bold          | - endnotes     |            |
+|       |              |                            | [discard leading &       | - bullet       | - italics       | - bibliography |            |
+|       |              |                            | newline whitespace]      |                | - underscore    |                |            |
+|       |              |                            |                          |                | - strikethrough |                |            |
+|       |              |                            |                          |                | - superscript   |                |            |
+|       |              |                            |                          |                | - subscript     |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+| block |              | open and close tags        |                          |                |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+| TODO  | quote        |                            |                          | - language?    |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+| TODO  | group        |                            | - inline markup applied  | - language?    | as paragraph    | - endnotes     |            |
+|       |              |                            | - [discard leading &     |                |                 | - bibliography |            |
+|       |              |                            | newline whitespace]      |                |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+| TODO  | block        |                            | - inline markup applied  |                | as paragraph    | - endnotes     |            |
+|       |              |                            | - whitespace indentation |                |                 | - bibliography |            |
+|       |              |                            | & newlines               |                |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+|       | poem / verse | open and close tags        | verse is the object      |                |                 | - endnotes     |            |
+|       |              |                            | - inline markup applied  |                |                 | - bibliography |            |
+|       |              | (for poem)                 | - whitespace indentation |                |                 |                |            |
+|       |              |                            | & newlines               |                |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+|       | code         |                            | - contents untouched     | - syntax       |                 |                |            |
+|       |              |                            | - whitespace indentation | - numbered     |                 |                |            |
+|       |              |                            | & newlines               |                |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+|       | table        |                            |                          | - column width |                 |                |            |
+|       |              |                            |                          | - heading row  |                 |                |            |
+|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
+
+**** ocn
+
+|-------------+-----------------------+-----------------------+----------------+------|
+| objects     | section / part        | ocn described         | how used       | type |
+|-------------+-----------------------+-----------------------+----------------+------|
+| regular ocn |                       |                       |                |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | body objects          | seq. digit            | anchor         | ocn  |
+|             |                       | [0-9]+                | visible        |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | glossary objects      | seq. digit            | anchor         | ocn  |
+|             |                       | [0-9]+                | not-visible    |      |
+|             |                       |                       | (for search)   |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | bibliography objects  | seq. digit            | anchor         | ocn  |
+|             |                       | [0-9]+                | not-visible    |      |
+|             |                       |                       | (for search)   |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+| special ocn |                       |                       |                |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | non-substantive text  | x char + seq. digit   | anchor         | non  |
+|             | (within body & blurb) | x[0-9]+               | not-visible    |      |
+|             |                       |                       | (for search)   |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | book index            | i char + seq. digit   | anchor         | idx  |
+|             |                       | i[0-9]+               | not-visible    |      |
+|             |                       |                       | (for search)   |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+| without ocn |                       |                       |                |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+|             | endnotes              | ocn of parent object  | no ocn         | fn   |
+|             |                       | + footnote seq. digit | anchor visible |      |
+|-------------+-----------------------+-----------------------+----------------+------|
+
+** make config - _composite make_
+
+work on composite make a unification of make instructions for each document run
+
+extract instructions from all config files, unify the make instructions and
+provide the result as a single set of make instructions for each document parsed
+
+- 1. general, document_make config file (to be applied to all documents unless
+  overridden by document or command line instruction)
+- 2. local, site specific (site local instructions such as the site's url, cgi
+  location etc.)
+- 3. each document header, make (the document header contains metadata and may
+  include make instructions for that document)
+  - make
+  - meta
+- 4. command line instruction, make (some make instructions may be passed
+  through the command line)
+
+*** instruction sources
+
+|----+---------------------------------+----------------------------------------+---------------------+---|
+|    | make instruction source         |                                        | varies (applies to) |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+| 0. | unify the following as a single | take into account all the instructions |                     |   |
+|    | set of make instructions        | provided below, provide interface      |                     |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+| 1. | document_make file              | to be applied to all documents         | per directory       |   |
+|    | "config_document"               | (unless subsequently overridden)       | (all docs within)   |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+| 2. | config file                     | local site specific                    | per directory       |   |
+|    | "config_local_site"             |                                        | (all docs within)   |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+| 3. | document header make            | make instructions contained            | per document        |   |
+|    |                                 | in document header                     | (single doc)        |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+| 4. | command line instruction        | make instruction passed                | each command        |   |
+|    |                                 |                                        | (all docs within)   |   |
+|----+---------------------------------+----------------------------------------+---------------------+---|
+
+*** config & metadata (from instruction sources)
+
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     | 1. document make file    | 2. config file             | 3. document header     | 4. command line instruction |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+| comment, fixed:     | per dir (sisupod)        | per dir                    | per document (sisupod) | per command instruction     |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     | sdl_root_config_document | sdl_root_config_local_site |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+| local site specific |                          | *                          |                        | *?                          |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | webserv                    |                        |                             |
+|                     |                          | - url_root                 |                        |                             |
+|                     |                          | - path                     |                        |                             |
+|                     |                          | - images                   |                        |                             |
+|                     |                          | - cgi                      |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | webserv_cgi                |                        |                             |
+|                     |                          | - host                     |                        |                             |
+|                     |                          | - base_path                |                        |                             |
+|                     |                          | - port                     |                        |                             |
+|                     |                          | - user                     |                        |                             |
+|                     |                          | - file_links               |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | processing                 |                        |                             |
+|                     |                          | - path                     |                        |                             |
+|                     |                          | - dir                      |                        |                             |
+|                     |                          | - concord_max              |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | flag (configure)           |                        | (call)                      |
+|                     |                          | - act0                     |                        | act0                        |
+|                     |                          | - act1                     |                        | act1                        |
+|                     |                          | - act2                     |                        | act2                        |
+|                     |                          | - act3                     |                        | act3                        |
+|                     |                          | - act4                     |                        | act4                        |
+|                     |                          | - act5                     |                        | act5                        |
+|                     |                          | - act6                     |                        | act6                        |
+|                     |                          | - act7                     |                        | act7                        |
+|                     |                          | - act8                     |                        | act8                        |
+|                     |                          | - act9                     |                        | act9                        |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | default                    |                        |                             |
+|                     |                          | - papersize                |                        |                             |
+|                     |                          | - text_wrap                |                        |                             |
+|                     |                          | - emphasis                 |                        |                             |
+|                     |                          | - language                 |                        |                             |
+|                     |                          | - digest                   |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | permission                 |                        |                             |
+|                     |                          | - share_source             |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | program_select             |                        |                             |
+|                     |                          | - editor                   |                        |                             |
+|                     |                          | - epub_viewer              |                        |                             |
+|                     |                          | - html_viewer              |                        |                             |
+|                     |                          | - odf_viewer               |                        |                             |
+|                     |                          | - pdf_viewer               |                        |                             |
+|                     |                          | - xml_viewer               |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          | search                     |                        |                             |
+|                     |                          | - flag                     |                        |                             |
+|                     |                          | - action                   |                        |                             |
+|                     |                          | - db                       |                        |                             |
+|                     |                          | - title                    |                        |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+| make instruction    | **                       | omit or override share?    | **                     | *?                          |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     | make                     | make                       | make                   |                             |
+|                     | - bold                   | - bold                     | - bold                 |                             |
+|                     | - breaks                 | - breaks                   | - breaks               |                             |
+|                     | - cover_image            | - cover_image              | - cover_image          |                             |
+|                     | - css                    | - css                      | - css                  |                             |
+|                     | - emphasis               | - emphasis                 | - emphasis             |                             |
+|                     | - footer                 | - footer                   | - footer               |                             |
+|                     | - headings               | - headings                 | - headings             |                             |
+|                     | - home_button_image      | - home_button_image        | - home_button_image    |                             |
+|                     | - home_button_text       | - home_button_text         | - home_button_text     |                             |
+|                     | - italics                | - italics                  | - italics              |                             |
+|                     | - num_top                | - num_top                  | - num_top              |                             |
+|                     | - auto_num_depth         | - auto_num_depth           | - auto_num_depth       |                             |
+|                     | - substitute             | - substitute               | - substitute           |                             |
+|                     | - texpdf_font            | - texpdf_font              | - texpdf_font          |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+| actions             |                          |                            |                        | *                           |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            |                        | assertions                  |
+|                     |                          |                            |                        | concordance                 |
+|                     |                          |                            |                        | debug                       |
+|                     |                          |                            |                        | digest                      |
+|                     |                          |                            |                        | docbook                     |
+|                     |                          |                            |                        | epub                        |
+|                     |                          |                            |                        | html                        |
+|                     |                          |                            |                        | html-seg                    |
+|                     |                          |                            |                        | html-scroll                 |
+|                     |                          |                            |                        | manifest                    |
+|                     |                          |                            |                        | ocn                         |
+|                     |                          |                            |                        | odt                         |
+|                     |                          |                            |                        | pdf                         |
+|                     |                          |                            |                        | postgresql                  |
+|                     |                          |                            |                        | qrcode                      |
+|                     |                          |                            |                        | sisupod                     |
+|                     |                          |                            |                        | source                      |
+|                     |                          |                            |                        | sqlite                      |
+|                     |                          |                            |                        | sqlite-db-create            |
+|                     |                          |                            |                        | sqlite-db-drop              |
+|                     |                          |                            |                        | text                        |
+|                     |                          |                            |                        | verbose                     |
+|                     |                          |                            |                        | xhtml                       |
+|                     |                          |                            |                        | xml-dom                     |
+|                     |                          |                            |                        | xml-sax                     |
+|                     |                          |                            |                        | section_toc                 |
+|                     |                          |                            |                        | section_body                |
+|                     |                          |                            |                        | section_endnotes            |
+|                     |                          |                            |                        | section_glossary            |
+|                     |                          |                            |                        | section_biblio              |
+|                     |                          |                            |                        | section_bookindex           |
+|                     |                          |                            |                        | section_blurb               |
+|                     |                          |                            |                        | backmatter                  |
+|                     |                          |                            |                        | skip-output                 |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+| metadata            |                          |                            | *                      |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | classify               |                             |
+|                     |                          |                            | - dewey                |                             |
+|                     |                          |                            | - keywords             |                             |
+|                     |                          |                            | - loc                  |                             |
+|                     |                          |                            | - subject              |                             |
+|                     |                          |                            | - topic_register       |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | creator                |                             |
+|                     |                          |                            | - author               |                             |
+|                     |                          |                            | - author_email         |                             |
+|                     |                          |                            | - illustrator          |                             |
+|                     |                          |                            | - translator           |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | date                   |                             |
+|                     |                          |                            | - added_to_site        |                             |
+|                     |                          |                            | - available            |                             |
+|                     |                          |                            | - created              |                             |
+|                     |                          |                            | - issued               |                             |
+|                     |                          |                            | - modified             |                             |
+|                     |                          |                            | - published            |                             |
+|                     |                          |                            | - valid                |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | identifier             |                             |
+|                     |                          |                            | - isbn                 |                             |
+|                     |                          |                            | - oclc                 |                             |
+|                     |                          |                            | - pg                   |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | links                  |                             |
+|                     |                          |                            | - link                 |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | notes                  |                             |
+|                     |                          |                            | - abstract             |                             |
+|                     |                          |                            | - description          |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | original               |                             |
+|                     |                          |                            | - language             |                             |
+|                     |                          |                            | - source               |                             |
+|                     |                          |                            | - title                |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | publisher              |                             |
+|                     |                          |                            | - name                 |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | rights                 |                             |
+|                     |                          |                            | - copyright            |                             |
+|                     |                          |                            | - cover                |                             |
+|                     |                          |                            | - illustrations        |                             |
+|                     |                          |                            | - license              |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
+|                     |                          |                            | title                  |                             |
+|                     |                          |                            | - edition              |                             |
+|                     |                          |                            | - full                 |                             |
+|                     |                          |                            | - language             |                             |
+|                     |                          |                            | - main                 |                             |
+|                     |                          |                            | - note                 |                             |
+|                     |                          |                            | - sub                  |                             |
+|                     |                          |                            | - subtitle             |                             |
+|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
diff --git a/org/imports.org b/org/imports.org
index c9265cc..435c6b6 100644
--- a/org/imports.org
+++ b/org/imports.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp hub
+#+TITLE:       doc_reform hub
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:imports:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,14 +11,13 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:imports:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
 * 1. imports for meta
 ** package dir
 
-#+BEGIN_SRC d  :tangle ../src/sdp/meta/package.d
-module sdp.meta;
+#+BEGIN_SRC d  :tangle ../src/doc_reform/meta/package.d
+module doc_reform.meta;
 <<imports_for_meta_general>>
 #+END_SRC
 
@@ -27,8 +26,8 @@ module sdp.meta;
 #+NAME: imports_for_meta_general
 #+BEGIN_SRC d
 public import
-  sdp.meta.defaults,
-  sdp.meta.rgx;
+  doc_reform.meta.defaults,
+  doc_reform.meta.rgx;
 /+ std +/
 public import
   std.array,
@@ -48,8 +47,8 @@ public import
 
 ** package dir
 
-#+BEGIN_SRC d  :tangle ../src/sdp/output/package.d
-module sdp.output;
+#+BEGIN_SRC d  :tangle ../src/doc_reform/output/package.d
+module doc_reform.output;
 <<imports_for_output_general>>
 #+END_SRC
 
@@ -73,11 +72,11 @@ public import
   // std.uni,
   std.utf;
 public import
-  sdp.share.defaults,
-  sdp.source.paths_source,
-  sdp.output.defaults,
-  sdp.output.paths_output,
-  sdp.output.rgx;
+  doc_reform.share.defaults,
+  doc_reform.source.paths_source,
+  doc_reform.output.defaults,
+  doc_reform.output.paths_output,
+  doc_reform.output.rgx;
 #+END_SRC
 
 * __END__
diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org
index 87782d3..50a0e78 100644
--- a/org/meta_abstraction.org
+++ b/org/meta_abstraction.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp document abstraction
+#+TITLE:       doc_reform document abstraction
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:abstraction:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,23 +11,22 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 
-* 1. Document Abstraction                :module:sdp:metadoc_from_src:
+* 1. Document Abstraction                :module:doc_reform:metadoc_from_src:
 Process markup document, create document abstraction.
 
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/metadoc_from_src.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/metadoc_from_src.d
 /++
   document abstraction:
   abstraction of sisu markup for downstream processing
   metadoc_from_src.d
 +/
-module sdp.meta.metadoc_from_src;
+module doc_reform.meta.metadoc_from_src;
 template SiSUdocAbstraction() {
   /+ ↓ abstraction imports +/
   <<abs_top_imports>>
@@ -150,7 +149,7 @@ template SiSUdocAbstraction() {
 
 #+name: abs_top_imports
 #+BEGIN_SRC d
-import sdp.meta;
+import doc_reform.meta;
 import
   std.algorithm,
   std.container,
@@ -158,9 +157,9 @@ import
   std.json,
   std.path;
 import
-  sdp.meta.defaults,
-  sdp.meta.object_setter,
-  sdp.meta.rgx;
+  doc_reform.meta.defaults,
+  doc_reform.meta.object_setter,
+  doc_reform.meta.rgx;
 #+END_SRC
 
 *** mixins                                                         :mixins:
@@ -1177,7 +1176,7 @@ if ((obj_type_status["heading"] == State.on)
     segment_anchor_tag_that_object_belongs_to = anchor_tag_;
     segment_anchor_tag_that_object_belongs_to_uri = anchor_tag_ ~ ".fnSuffix#" ~ obj_cite_digits.on.to!string;
   } else if (an_object["lev_markup_number"].to!int < 4) {
-  string segn;
+    string segn;
     switch (an_object["lev_markup_number"].to!int) {
     case 0:
       segn = "_the_title";
@@ -2299,7 +2298,7 @@ if (the_table_of_contents_section["scroll"].length > 1) {
         if (obj.metainfo.heading_lev_markup == 4) {
           obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2328,7 +2327,7 @@ if (the_table_of_contents_section["scroll"].length > 1) {
         if (obj.metainfo.heading_lev_markup == 4) {
           obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       if ((opt_action.html)
@@ -2364,7 +2363,7 @@ if (the_document_body_section.length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2414,7 +2413,7 @@ if (the_endnotes_section.length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2456,7 +2455,7 @@ if (the_glossary_section.length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2501,7 +2500,7 @@ if (the_bibliography_section.length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2551,7 +2550,7 @@ if (the_bookindex_section["scroll"].length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2589,7 +2588,7 @@ if (the_bookindex_section["scroll"].length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -2637,7 +2636,7 @@ if (the_blurb_section.length > 1) {
             obj.tags.segname_next = html_segnames[obj.ptr.html_segnames + 1];
           }
           assert(obj.tags.segment_anchor_tag == html_segnames[obj.ptr.html_segnames],
-          obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
+            obj.tags.segment_anchor_tag ~ "!=" ~ html_segnames[obj.ptr.html_segnames]);
         }
       }
       /+ dom structure (marked up & collapsed) +/
@@ -7698,19 +7697,19 @@ template docSectKeysSeq() {
 }
 #+END_SRC
 
-* 2. Object Setter (Set Abstract Object)        :module:sdp:meta_object_setter:
+* 2. Object Setter (Set Abstract Object) :module:doc_reform:meta_object_setter:
 
 set abstracted objects for downstream processing
 
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/object_setter.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/object_setter.d
 /++
   object setter:
   setting of sisu objects for downstream processing
   meta_object_setter.d
 +/
-module sdp.meta.object_setter;
+module doc_reform.meta.object_setter;
 template ObjectSetter() {
   /+ structs +/
   <<meta_structs_init>>
diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org
index 22d07d8..240be44 100644
--- a/org/meta_conf_make_meta.org
+++ b/org/meta_conf_make_meta.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp config & header (make & meta) extract
+#+TITLE:       doc_reform config & header (make & meta) extract
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:config:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,10 +11,9 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
 * 0. generic
 ** imports
 
@@ -39,13 +38,13 @@ import
   std.uni,
   std.utf,
   std.conv : to;
-import sdp.meta.conf_make_meta_structs;
+import doc_reform.meta.conf_make_meta_structs;
 #+END_SRC
 
 ** struct ConfComposite
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_structs.d
-module sdp.meta.conf_make_meta_structs;
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/conf_make_meta_structs.d
+module doc_reform.meta.conf_make_meta_structs;
 <<meta_defaults_template_structs>>
 #+END_SRC
 
@@ -64,8 +63,8 @@ import
   std.utf,
   std.conv : to;
 import
-  sdp.meta.defaults,
-  sdp.meta.rgx;
+  doc_reform.meta.defaults,
+  doc_reform.meta.rgx;
 mixin SiSUrgxInit;
 static auto _rgx = Rgx();
 mixin InternalMarkup;
@@ -107,9 +106,9 @@ struct ConfCompositeMakeStr {
   string[] footer;
   string[] headings;
   string[] home_button_image;
-  string home_button_text = "{SiSU}http://www.sisudoc.org;"
-    ~ " {www.sisudoc.org}http://www.sisudoc.org;"
-    ~ " {sources / git}http://git.sisudoc.org/gitweb/";
+  string home_button_text = "{Doc Reform}http://www.doc-reform.org;"
+    ~ " {www.doc-reform.org}http://www.doc-reform.org;"
+    ~ " {sources / git}https://git.doc-reform.org/software/doc-reform";
   string italics;
   string auto_num_top_at_level;
   int auto_num_top_lv               = 9;
@@ -197,9 +196,9 @@ struct ConfCompositeMakeInit {
   string[] footer;
   string[] headings;
   string[] home_button_image;
-  string home_button_text = "{SiSU}http://www.sisudoc.org;"
-    ~ " {www.sisudoc.org}http://www.sisudoc.org;"
-    ~ " {sources / git}http://git.sisudoc.org/gitweb/";
+  string home_button_text = "{Doc Reform}http://www.doc-reform.org;"
+    ~ " {www.doc-reform.org}http://www.doc-reform.org;"
+    ~ " {sources / git}https://git.doc-reform.org/software/doc-reform";
   string[] italics;
   string auto_num_top_at_level;
   int auto_num_top_lv               = 9;
@@ -419,15 +418,15 @@ auto config_jsonstr = `{
 }`;
 #+END_SRC
 
-* 1. JSON to SiSUstruct                 :module:sdp:meta_conf_make_meta_json:
+* 1. JSON to SiSUstruct          :module:doc_reform:meta_conf_make_meta_json:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_json.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/conf_make_meta_json.d
 /++
   json headers<BR>
   extract json header return json
 +/
-module sdp.meta.conf_make_meta_json;
+module doc_reform.meta.conf_make_meta_json;
 static template contentJSONtoSiSUstruct() {
   import
     std.exception,
@@ -439,9 +438,9 @@ static template contentJSONtoSiSUstruct() {
     std.utf,
     std.conv : to;
   import
-    sdp.meta.conf_make_meta_structs,
-    sdp.meta.conf_make_meta_json,
-    sdp.meta.rgx;
+    doc_reform.meta.conf_make_meta_structs,
+    doc_reform.meta.conf_make_meta_json,
+    doc_reform.meta.rgx;
   ConfCompositePlus _struct_composite;
   auto contentJSONtoSiSUstruct(C, J)(C _struct_composite, J _json, string _identifier) {
     mixin SiSUrgxInit;
@@ -1051,10 +1050,10 @@ if (_struct_composite.meta.title_main.empty) {
 }
 #+END_SRC
 
-* 2. TOML returns SiSUstruct (via JSON)      :module:sdp:meta_conf_make_meta:
+* 2. TOML returns SiSUstruct (via JSON) :module:doc_reform:meta_conf_make_meta:
 ** 0. parse TOML config return JSON
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_toml.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/conf_make_meta_toml.d
 /++
   extract native/orig header return associative array<BR>
 
@@ -1065,7 +1064,7 @@ if (_struct_composite.meta.title_main.empty) {
   converting the metadata and make instructions to a common json format used by
   program internally. Moved to associative array.
 +/
-module sdp.meta.conf_make_meta_toml;
+module doc_reform.meta.conf_make_meta_toml;
 static template configParseTOMLreturnJSON() {
   import
     toml,
@@ -1083,14 +1082,14 @@ static template configParseTOMLreturnJSON() {
 
 ** 1. parse TOML config to JSON return SiSUstruct
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_toml.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/conf_make_meta_toml.d
 static template configParseTOMLreturnSiSUstruct() {
   import
     toml,
     toml.json;
   import
-    sdp.meta.conf_make_meta_structs,
-    sdp.meta.conf_make_meta_json;
+    doc_reform.meta.conf_make_meta_structs,
+    doc_reform.meta.conf_make_meta_json;
   mixin contentJSONtoSiSUstruct;
   auto configParseTOMLreturnSiSUstruct(CCm, T)(
     CCm     _make_and_meta_struct,
@@ -1106,7 +1105,7 @@ static template configParseTOMLreturnSiSUstruct() {
 
 ** 2. parse TOML header to JSON then Struct
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_toml.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/conf_make_meta_toml.d
 static template docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct() {
   import
     std.exception,
@@ -1120,9 +1119,9 @@ static template docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct() {
     toml,
     toml.json;
   import
-    sdp.meta.conf_make_meta_structs,
-    sdp.meta.conf_make_meta_json,
-    sdp.meta.rgx;
+    doc_reform.meta.conf_make_meta_structs,
+    doc_reform.meta.conf_make_meta_json,
+    doc_reform.meta.rgx;
   mixin SiSUrgxInit;
   mixin contentJSONtoSiSUstruct;
   static auto rgx = Rgx();
@@ -1152,7 +1151,7 @@ static template docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct() {
   /+
     unify internal representation of header info for native & sdlang document headers
     represent either using struct, hashes or possibly json
-    sdp internal representation should be identical for native & sdlang variants
+    doc_reform internal representation should be identical for native & sdlang variants
   +/
 header.
   ├── make                         // make instructions
diff --git a/org/meta_debugs.org b/org/meta_debugs.org
index 1d5bb14..fc77271 100644
--- a/org/meta_debugs.org
+++ b/org/meta_debugs.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp abstraction summary and debugs
+#+TITLE:       doc_reform abstraction summary and debugs
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:debugs:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,18 +11,17 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
-* 1. abstraction debugs                            :module:sdp:meta_doc_debugs:
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
+* 1. abstraction debugs                   :module:doc_reform:meta_doc_debugs:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/meta/doc_debugs.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/meta/doc_debugs.d
 /++
   output debugs
 +/
-module sdp.meta.doc_debugs;
+module doc_reform.meta.doc_debugs;
 template SiSUdebugs() {
   <<debug_imports>>
   auto SiSUdebugs(S,T)(
@@ -48,8 +47,8 @@ template SiSUdebugs() {
 #+name: debug_imports
 #+BEGIN_SRC d
 import
-  sdp.meta.defaults,
-  sdp.meta.rgx;
+  doc_reform.meta.defaults,
+  doc_reform.meta.rgx;
 import
   std.algorithm,
   std.array,
diff --git a/org/output_hub.org b/org/output_hub.org
index 9731029..b6e526c 100644
--- a/org/output_hub.org
+++ b/org/output_hub.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp output hub
+#+TITLE:       doc_reform output hub
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:output:hub:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,20 +11,19 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:output:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 
-* 0. output hub [#A]                                  :module:sdp:output_hub:
+* 0. output hub [#A]                           :module:doc_reform:output_hub:
 ** module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/hub.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/hub.d
 /++
   output hub<BR>
   check & generate output types requested
 +/
-module sdp.output.hub;
+module doc_reform.output.hub;
 template outputHub() {
   <<output_imports>>
   import std.parallelism;
@@ -64,14 +63,14 @@ template outputHubOp() {
 
 #+name: output_imports
 #+BEGIN_SRC d
-import sdp.output,
-  sdp.output.epub3,
-  sdp.output.html,
-  sdp.output.sqlite,
-  sdp.output.xmls,
-  sdp.output.source_sisupod,
-  sdp.output.create_zip_file,
-  sdp.output.paths_output;
+import doc_reform.output,
+  doc_reform.output.epub3,
+  doc_reform.output.html,
+  doc_reform.output.sqlite,
+  doc_reform.output.xmls,
+  doc_reform.output.source_sisupod,
+  doc_reform.output.create_zip_file,
+  doc_reform.output.paths_output;
 #+END_SRC
 
 #+name: output_scheduled_task
diff --git a/org/output_sisupod.org b/org/output_sisupod.org
index d6fbc5d..5022d24 100644
--- a/org/output_sisupod.org
+++ b/org/output_sisupod.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp output sisupod
+#+TITLE:       doc_reform output sisupod
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:output:sisupod:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,17 +11,16 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:output:sisupod:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 - [[./output_hub.org][output_hub]]
 
-* sisupod                                         :module:sdp:source_sisupod:
+* sisupod                                  :module:doc_reform:source_sisupod:
 ** module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/source_sisupod.d
-module sdp.output.source_sisupod;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/source_sisupod.d
+module doc_reform.output.source_sisupod;
 template SiSUpod() {
   <<output_imports>>
   void SiSUpod(T)(T doc_matters) {
@@ -42,7 +41,7 @@ template SiSUpod() {
 
 #+name: output_imports
 #+BEGIN_SRC d
-import sdp.output;
+import doc_reform.output;
 import
   std.digest.sha,
   std.file,
@@ -50,8 +49,8 @@ import
   std.zip,
   std.conv : to;
 import
-  sdp.output.create_zip_file,
-  sdp.output.xmls;
+  doc_reform.output.create_zip_file,
+  doc_reform.output.xmls;
 #+END_SRC
 
 ** mkdir
diff --git a/org/output_sqlite.org b/org/output_sqlite.org
index 49cd3f6..fc22089 100644
--- a/org/output_sqlite.org
+++ b/org/output_sqlite.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp output sqlite
+#+TITLE:       doc_reform output sqlite
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:output:sqlite:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,10 +11,9 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:niu:output:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 - [[./output_hub.org][output_hub]]
 
 * sql
@@ -23,8 +22,8 @@
 *** hub
 **** collection
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
-module sdp.output.sqlite;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
+module doc_reform.output.sqlite;
 <<output_imports>>
 import d2sqlite3;
 import std.typecons : Nullable;
@@ -58,7 +57,7 @@ template SQLiteHubBuildTablesAndPopulate() {
 
 **** discrete
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteHubDiscreteBuildTablesAndPopulate() {
   void SQLiteHubDiscreteBuildTablesAndPopulate(D,I)(
     D    doc_abstraction,
@@ -86,7 +85,7 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() {
 
 *** db run
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteDbRun() {
   void SQLiteDbRun(Db,St,O)(
     Db       db,
@@ -124,7 +123,7 @@ template SQLiteDbRun() {
 
 *** munge
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLinsertDelimiter() {
   auto SQLinsertDelimiter(string _txt) {
     _txt = _txt
@@ -152,7 +151,7 @@ template SQLiteFormatAndLoadObject() {
 *** sqlite instructions
 **** create
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteTablesReCreate() {
   string SQLiteTablesReCreate()() {
     string _sql_instruct;
@@ -170,7 +169,7 @@ template SQLiteTablesReCreate() {
 
 **** delete
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteDeleteDocument() {
   string SQLiteDeleteDocument(I)(
     I doc_matters,
@@ -183,7 +182,7 @@ template SQLiteDeleteDocument() {
 
 **** insert
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteInsertMetadata() {
   string SQLiteInsertMetadata(I)(
     I doc_matters,
@@ -196,7 +195,7 @@ template SQLiteInsertMetadata() {
 
 **** insert doc objects loop
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteInsertDocObjectsLoop() {
   string SQLiteInsertDocObjectsLoop(D,I)(
     D    doc_abstraction,
@@ -214,7 +213,7 @@ template SQLiteInsertDocObjectsLoop() {
 
 **** tables create
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteTablesCreate() {
   void SQLiteTablesCreate(E,O)(E env, O opt_action) {
     import d2sqlite3;
@@ -247,7 +246,7 @@ template SQLiteTablesCreate() {
 
 **** tables drop
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/sqlite.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/sqlite.d
 template SQLiteDbDrop() {
   void SQLiteDbDrop(O)(O opt_action) {
     writeln("db drop");
@@ -282,7 +281,7 @@ template SQLiteDbDrop() {
       _db_statement ~= SQLiteDeleteDocument!()(doc_matters);
       SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document");
     }
-    if (doc_matters.opt.action.sqlite_update) { // sqlite_update is .opt.action sqlite_delete & sqlite_insert (set in sdp)
+    if (doc_matters.opt.action.sqlite_update) {
       _db_statement ~= SQLiteDeleteDocument!()(doc_matters);
       SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document");
       _db_statement ~= SQLiteInsertMetadata!()(doc_matters);
@@ -316,7 +315,7 @@ template SQLiteDbDrop() {
 
 #+name: output_imports
 #+BEGIN_SRC d
-import sdp.output;
+import doc_reform.output;
 import
   std.file,
   std.conv : to;
diff --git a/org/output_xmls.org b/org/output_xmls.org
index 6be553f..78f7bfb 100644
--- a/org/output_xmls.org
+++ b/org/output_xmls.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp output xmls
+#+TITLE:       doc_reform output xmls
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:output:xmls:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,18 +11,17 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:output:xmls:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 - [[./output_hub.org][output_hub]]
 
-* xml offspring (xhtml html epub)                    :module:sdp:output_xmls:
+* xml offspring (xhtml html epub)                                    :module:
 ** format xhtml objects                                             :format:
 *** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/xmls.d
-module sdp.output.xmls;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/xmls.d
+module doc_reform.output.xmls;
 template outputXHTMLs() {
   <<output_imports>>
   mixin SiSUoutputRgxInit;
@@ -38,7 +37,7 @@ template outputXHTMLs() {
 
 #+name: output_imports
 #+BEGIN_SRC d
-import sdp.output;
+import doc_reform.output;
 import
   std.digest.sha,
   std.file,
@@ -46,9 +45,9 @@ import
   std.zip,
   std.conv : to;
 import
-  sdp.output.create_zip_file,
-  sdp.output.xmls,
-  sdp.output.xmls_css;
+  doc_reform.output.create_zip_file,
+  doc_reform.output.xmls,
+  doc_reform.output.xmls_css;
 #+END_SRC
 
 *** misc
@@ -186,7 +185,7 @@ auto header_metadata(M)(
   string _date_modified="Date";
   string _language="en";
   string _rights="Copyright: Copyright (C) year holder";
-  string _generator="sdp [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)";
+  string _generator="doc_reform [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)";
   string _generator_home="http://www.sisudoc.org";
   string o;
   o = format(q"¶<!-- SiSU header metadata -->
@@ -380,7 +379,7 @@ auto epub3_seg_head(M)(
   <meta name="dc.date.modified" content="year" />
   <meta name="dc.language" content="US" />
   <meta name="dc.rights" content="Copyright: Copyright (C) year holder" />
-  <meta name="generator" content="sdp [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
+  <meta name="generator" content="doc_reform [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
   <link rel="generator" href="http://www.sisudoc.org/" />
   <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
   <link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />
@@ -1333,11 +1332,11 @@ auto endnote(O)(
 }
 #+END_SRC
 
-* _html_ [#A]                                          :module:sdp:output_html:
+* _html_ [#A]                                   :module:doc_reform:output_html:
 ** module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/html.d
-module sdp.output.html;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/html.d
+module doc_reform.output.html;
 template outputHTML() {
   <<output_imports>>
   mixin outputXHTMLs;
@@ -1823,7 +1822,7 @@ void css(M)(
 }
 #+END_SRC
 
-** images                                                              :images:
+** images                                                           :images:
 
 #+name: copy_html_images
 #+BEGIN_SRC d
@@ -1852,7 +1851,7 @@ void images_cp(M)(
 }
 #+END_SRC
 
-* _epub_ [#B]                                         :module:sdp:output_epub3:
+* _epub_ [#B]                                  :module:doc_reform:output_epub3:
 
 |-----------------------+--------------------------+---------------------------+----------------------------------|
 | function              | filename                 | module                    | variable                         |
@@ -1872,8 +1871,8 @@ void images_cp(M)(
 
 ** module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/epub3.d
-module sdp.output.epub3;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/epub3.d
+module doc_reform.output.epub3;
 template outputEPub3() {
   <<output_imports>>
   mixin InternalMarkup;
diff --git a/org/output_xmls_css.org b/org/output_xmls_css.org
index a0511e8..e63ada0 100644
--- a/org/output_xmls_css.org
+++ b/org/output_xmls_css.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp defaults css
+#+TITLE:       doc_reform defaults css
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:output:xmls:css:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,20 +11,19 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:output:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 - [[./output_hub.org][output_hub]]
 
-* 0. output css defaults                             :module:sdp:output_xmls_css:
+* 0. output css defaults                  :module:doc_reform:output_xmls_css:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/xmls_css.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/xmls_css.d
 /++
   default css settings
 +/
-module sdp.output.xmls_css;
+module doc_reform.output.xmls_css;
 template SiSUcss() {
   auto SiSUcss() {
     string _css_html_seg="
diff --git a/org/output_zip.org b/org/output_zip.org
index 05faf74..43100d6 100644
--- a/org/output_zip.org
+++ b/org/output_zip.org
@@ -1,4 +1,4 @@
-#+TITLE:       sdp output zip
+#+TITLE:       doc_reform output zip
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
 #+DESCRIPTION: documents - structuring, publishing in multiple formats & search
@@ -11,17 +11,17 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:output:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+FILETAGS:            :doc_reform:rel:output:
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-- [[./sdp.org][sdp]]  [[./][org/]]
+- [[./doc_reform.org][doc_reform]]  [[./][org/]]
 - [[./output_hub.org][output_hub]]
 
-* _zip_                                            :module:sdp:create_zip_file:
+* _zip_                                     :module:doc_reform:create_zip_file:
 ** module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/output/create_zip_file.d
-module sdp.output.create_zip_file;
+#+BEGIN_SRC d :tangle ../src/doc_reform/output/create_zip_file.d
+module doc_reform.output.create_zip_file;
 template createZipFile() {
   import std.file;
   import std.outbuffer;
diff --git a/org/sdp.org b/org/sdp.org
deleted file mode 100644
index 97a9af0..0000000
--- a/org/sdp.org
+++ /dev/null
@@ -1,1525 +0,0 @@
-#+TITLE:       sdp hub
-#+AUTHOR:      Ralph Amissah
-#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
-#+LANGUAGE:    en
-#+STARTUP:     indent content
-#+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
-#+OPTIONS:     TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
-#+OPTIONS:     author:nil email:nil creator:nil timestamp:nil
-#+PROPERTY:    header-args :padline no :exports code :noweb yes
-#+EXPORT_SELECT_TAGS:  export
-#+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:hub:
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
-
-[[../maker.org][maker.org makefile]]  [[./][org/]]
-* 0. version.txt (set version)                                      :version:
-** set program version
-
-#+BEGIN_SRC d  :tangle ../views/version.txt
-/+ obt - org generated file +/
-struct Version {
-  int major;
-  int minor;
-  int patch;
-}
-enum ver = Version(0, 27, 1);
-#+END_SRC
-
-** compilation restrictions (supported compilers)
-
-http://dlang.org/spec/version.html#predefined-versions
-
-#+BEGIN_SRC d  :tangle ../views/version.txt
-version (Posix) {
-  version (DigitalMars) {
-  } else version (LDC) {
-  } else version (GNU) {
-  } else {
-    static assert (0, "Unsupported D compiler");
-  }
-} else {
-  static assert (0, "Unsupported D compiler");
-}
-#+END_SRC
-
-* 1. sdp (sisu document parser)                                         :sdp:
-** notes
-- deal with imports
-- get options
-  - get command line instructions
-  - read config instructions
-- process files as instructed by options
-  - read in file
-  - process file
-  - output
-
-** 0. sdp src/sdp                                                 :template:
-
-- process files (act according to requirements of each type)
-  - by sourcefilename
-  - by sourcefiles contents identifier
-  - by zip filename
-
-#+BEGIN_SRC d  :tangle ../src/sdp/sdp.d :shebang #!/usr/bin/env rdmd
-module sdp.sisu_document_parser;
-import
-  sdp.conf.compile_time_info,
-  sdp.meta.metadoc;
-<<imports_sdp>>
-import std.algorithm;
-import std.parallelism;
-<<mixin_sdp_version>>
-<<mixin_pre_main>>
-/++
-name        "sdp"
-description "A SiSU inspired document parser writen in D."
-homepage    "http://sisudoc.org"
-+/
-void main(string[] args) {
-  <<sdp_mixin>>
-  <<sdp_args>>
-  <<sdp_do_selected>>
-  if (_manifests.length > 1) {                            // _manifests[0] initialized dummy element
-    foreach(manifest; parallel(_manifests[1..$])) {
-      if (!empty(manifest.src.filename)) {
-        <<sdp_each_file_do_scope>>
-        <<sdp_each_file_do_abstraction>>
-        <<sdp_each_file_do_debugs_checkdoc>>
-        <<sdp_each_file_do_selected_output>>
-        <<sdp_each_file_do_scope_exit>>
-      } else {
-        <<sdp_no_filename_provided>>
-      }
-    }
-  }
-}
-#+END_SRC
-
-** 1. pre-loop init                                                   :init:
-*** init
-**** imports                                                      :import:
-***** sdp                                                           :sdp:
-
-#+NAME: imports_sdp
-#+BEGIN_SRC d
-import
-  std.getopt,
-  std.file,
-  std.path,
-  std.process;
-import
-  sdp.meta,
-  sdp.meta.metadoc_summary,
-  sdp.meta.metadoc_from_src,
-  sdp.meta.conf_make_meta_structs,
-  sdp.meta.conf_make_meta_toml,
-  sdp.meta.conf_make_meta_json,
-  sdp.meta.defaults,
-  sdp.meta.doc_debugs,
-  sdp.meta.rgx,
-  sdp.source.paths_source,
-  sdp.source.read_config_files,
-  sdp.source.read_source_files,
-  sdp.output.hub;
-#+END_SRC
-
-****** notes
-├── src
-│   ├── sdp.d
-│   └── sdp
-│       ├── conf
-│       ├── meta
-│       └── output
-└── views
-    └── version.txt
-
-[[./meta_abstraction.org][meta_abstraction]]
-[[./meta_conf_make_meta.org][meta_conf_make_meta]]
-[[./meta_defaults.org][meta_defaults]]
-[[./meta_output_debugs.org][meta_output_debugs]]
-[[./source_read_files.org][source_read_files]]
-[[./compile_time_info.org][compile time info]]
-[[./output.org][output]]
-[[./sdp.org][sdp]]
-
-keep up to date, configuration in ../maker.org
-
-check:
-- http://github.com/Abscissa/SDLang-D
-- https://github.com/abscissa/libInputVisitor
-
-std.conv,
-std.variant,
-
-- https://code.dlang.org/packages/toml
-- https://github.com/toml-lang/toml
-- https://github.com/toml-lang/toml/blob/master/README.md
-
-**** mixins                                                        :mixin:
-***** version.txt                                               :version:
-
-#+NAME: mixin_sdp_version
-#+BEGIN_SRC d
-mixin(import("version.txt"));
-#+END_SRC
-
-***** pre main mixins
-#+NAME: mixin_pre_main
-#+BEGIN_SRC d
-mixin CompileTimeInfo;
-#+END_SRC
-
-***** sdp "main" mixins                                             :sdp:
-
-#+NAME: sdp_mixin
-#+BEGIN_SRC d
-mixin SiSUrgxInit;
-mixin contentJSONtoSiSUstruct;
-mixin SiSUbiblio;
-mixin SiSUrgxInitFlags;
-mixin outputHub;
-#+END_SRC
-
-**** init                                                           :init:
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-string flag_action;
-string arg_unrecognized;
-enum dAM { abstraction, matters }
-static auto rgx = Rgx();
-#+END_SRC
-
-*** scope (run complete)                                            :scope:
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-scope(success) {
-  debug(checkdoc) {
-    writefln(
-      "~ run complete, ok ~ (sdp-%s.%s.%s, %s D:%s, %s %s)",
-      ver.major, ver.minor, ver.patch,
-      __VENDOR__, __VERSION__,
-      bits, os,
-    );
-  }
-}
-scope(failure) {
-  debug(checkdoc) {
-    stderr.writefln(
-      "run failure",
-    );
-  }
-}
-#+END_SRC
-
-*** getopt args for loop                                    :args:getopt:
-
-look into using getopt
-[[http://dlang.org/phobos/std_getopt.html][getopt]]
-[[http://dlang.org/library/std/getopt.html][getopt]]
-
-**** getopt
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-bool[string] opts = [
-  "abstraction"        : false,
-  "assertions"         : false,
-  "concordance"        : false,
-  "debug"              : false,
-  "digest"             : false,
-  "epub"               : false,
-  "html"               : false,
-  "html-seg"           : false,
-  "html-scroll"        : false,
-  "manifest"           : false,
-  "ocn"                : true,
-  "pp2"                : false,
-  "quiet"              : false,
-  "sisupod"            : false,
-  "source"             : false,
-  "sqlite-discrete"    : false,
-  "sqlite-db-create"   : false,
-  "sqlite-db-drop"     : false,
-  "sqlite-db-recreate" : false,
-  "sqlite-delete"      : false,
-  "sqlite-insert"      : false,
-  "sqlite-update"      : false,
-  "text"               : false,
-  "verbose"            : false,
-  "very-verbose"        : false,
-  "xhtml"              : false,
-  "section_toc"        : true,
-  "section_body"       : true,
-  "section_endnotes"   : true,
-  "section_glossary"   : true,
-  "section_biblio"     : true,
-  "section_bookindex"  : true,
-  "section_blurb"      : true,
-  "backmatter"         : true,
-  "skip-output"        : false,
-];
-string[string] settings = [
-  "output-dir"         : "",
-  "site-config-dir"    : "",
-  "lang"               : "all",
-  "sqlite-filename"    : "documents",
-];
-auto helpInfo = getopt(args,
-  std.getopt.config.passThrough,
-  "abstraction",        "--abstraction document abstraction ",                                      &opts["abstraction"],
-  "assert",             "--assert set optional assertions on",                                      &opts["assertions"],
-  "concordance",        "--concordance file for document",                                          &opts["concordance"],
-  "debug",              "--debug",                                                                  &opts["debug"],
-  "digest",             "--digest hash digest for each object",                                     &opts["digest"],
-  "epub",               "--epub process epub output",                                               &opts["epub"],
-  "html",               "--html process html output",                                               &opts["html"],
-  "html-seg",           "--html-seg process html output",                                           &opts["html-seg"],
-  "html-scroll",        "--html-seg process html output",                                           &opts["html-scroll"],
-  "manifest",           "--manifest process manifest output",                                       &opts["manifest"],
-  "ocn",                "--ocn object cite numbers (default)",                                      &opts["ocn"],
-  "pp2",                "--pp2 nested parallelisation",                                             &opts["pp2"],
-  "quiet",              "--quiet output to terminal",                                               &opts["quiet"],
-  "sisupod",            "--sisupod sisupod source content bundled",                                 &opts["sisupod"],
-  "source",             "--source markup source text content",                                      &opts["source"],
-  "sqlite-discrete",    "--sqlite process discrete sqlite output",                                  &opts["sqlite-discrete"],
-  "sqlite-db-create",   "--sqlite-db-create create db, create tables",                              &opts["sqlite-db-create"],
-  "sqlite-db-drop",     "--sqlite-db-drop drop tables & db",                                        &opts["sqlite-db-drop"],
-  "sqlite-db-recreate", "--sqlite-db-recreate create db, create tables",                            &opts["sqlite-db-recreate"],
- // "sqlite-db-populate", "--sqlite-db-populate create db & tables, insert specified",  &opts["sqlite-db-populate"],
-  "sqlite-delete",      "--sqlite process sqlite output",                                           &opts["sqlite-delete"],
-  "sqlite-insert",      "--sqlite process sqlite output",                                           &opts["sqlite-insert"],
-  "sqlite-update",      "--sqlite process sqlite output",                                           &opts["sqlite-update"],
-  "text",               "--text process text output",                                               &opts["text"],
-  "txt",                "--txt process text output",                                                &opts["text"],
-  "verbose|v",          "--verbose output to terminal",                                             &opts["verbose"],
-  "very-verbose",       "--very-verbose output to terminal",                                        &opts["very-verbose"],
-  "xhtml",              "--xhtml process xhtml output",                                             &opts["xhtml"],
-  "section-toc",        "--section-toc process table of contents (default)",                        &opts["section_toc"],
-  "section-body",       "--section-body process document body (default)",                           &opts["section_body"],
-  "section-endnotes",   "--section-endnotes process document endnotes (default)",                   &opts["section_endnotes"],
-  "section-glossary",   "--section-glossary process document glossary (default)",                   &opts["section_glossary"],
-  "section-biblio",     "--section-biblio process document biblio (default)",                       &opts["section_biblio"],
-  "section-bookindex",  "--section-bookindex process document bookindex (default)",                 &opts["section_bookindex"],
-  "section-blurb",      "--section-blurb process document blurb (default)",                         &opts["section_blurb"],
-  "backmatter",         "--section-backmatter process document backmatter (default)",               &opts["backmatter"],
-  "skip-output",        "--skip-output",                                                            &opts["skip-output"],
-  "output-dir",         "--output-dir=[dir path]",                                                  &settings["output-dir"],
-  "site-config-dir",    "--site-config-dir=[dir path]",                                             &settings["site-config-dir"],
-  "sqlite-filename",    "--sqlite-filename=[filename].sqlite",                                      &settings["sqlite-filename"],
-  "lang",               "--lang=[lang code e.g. =en or =en,es]",                                    &settings["lang"],
-);
-if (helpInfo.helpWanted) {
-  defaultGetoptPrinter("Some information about the program.", helpInfo.options);
-}
-#+END_SRC
-
-**** getopt hash to struct
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-enum outTask { sisupod, source, sqlite, sqlite_multi, epub, html_scroll, html_seg, html_stuff }
-struct OptActions {
-  auto assertions() {
-    return opts["assertions"];
-  }
-  auto concordance() {
-    return opts["concordance"];
-  }
-  auto debug_do() {
-    return opts["debug"];
-  }
-  auto digest() {
-    return opts["digest"];
-  }
-  auto epub() {
-    return opts["epub"];
-  }
-  auto html() {
-    bool _is = (
-      opts["html"]
-      || opts["html-seg"]
-      || opts["html-scroll"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto html_seg() {
-    bool _is = (
-      opts["html"]
-      || opts["html-seg"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto html_scroll() {
-    bool _is = (
-      opts["html"]
-      || opts["html-scroll"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto html_stuff() {
-    bool _is = (
-      opts["html"]
-      || opts["html-scroll"]
-      || opts["html-seg"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto manifest() {
-    return opts["manifest"];
-  }
-  auto ocn() {
-    return opts["ocn"];
-  }
-  auto quiet() {
-    return opts["quiet"];
-  }
-  auto sisupod() {
-    return opts["sisupod"];
-  }
-  auto source() {
-    return opts["source"];
-  }
-  auto sqlite_discrete() {
-    return opts["sqlite-discrete"];
-  }
-  auto sqlite_db_drop() {
-    bool _is = (
-      opts["sqlite-db-recreate"]
-      || opts["sqlite-db-drop"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto sqlite_db_create() {
-    bool _is = (
-      opts["sqlite-db-recreate"]
-      || opts["sqlite-db-create"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto sqlite_insert() {
-    return opts["sqlite-insert"];
-  }
-  auto sqlite_delete() {
-    return opts["sqlite-delete"];
-  }
-  auto sqlite_update() {
-    return opts["sqlite-update"];
-  }
-  auto text() {
-    return opts["text"];
-  }
-  auto verbose() {
-    bool _is = (
-      opts["verbose"]
-      || opts["very-verbose"]
-    )
-    ? true
-    : false;
-    return _is;
-  }
-  auto very_verbose() {
-    return opts["very-verbose"];
-  }
-  auto xhtml() {
-    return opts["xhtml"];
-  }
-  auto section_toc() {
-    return opts["section_toc"];
-  }
-  auto section_body() {
-    return opts["section_body"];
-  }
-  auto section_endnotes() {
-    return opts["section_endnotes"];
-  }
-  auto section_glossary() {
-    return opts["section_glossary"];
-  }
-  auto section_biblio() {
-    return opts["section_biblio"];
-  }
-  auto section_bookindex() {
-    return opts["section_bookindex"];
-  }
-  auto section_blurb() {
-    return opts["section_blurb"];
-  }
-  auto backmatter() {
-    return opts["backmatter"];
-  }
-  auto skip_output() {
-    return opts["skip-output"];
-  }
-  auto languages_set() {
-    return settings["lang"].split(",");
-  }
-  auto output_dir_set() {
-    return settings["output-dir"];
-  }
-  auto sqlite_filename() {
-    return settings["sqlite-filename"];
-  }
-  auto pp2() {
-    return opts["pp2"];
-  }
-  auto output_task_scheduler() {
-    int[] schedule;
-    if (sisupod) {
-      schedule ~= outTask.sisupod;
-    }
-    if (source) {
-      schedule ~= outTask.source;
-    }
-    if (sqlite_discrete) {
-      schedule ~= outTask.sqlite;
-    }
-    if (epub) {
-      schedule ~= outTask.epub;
-    }
-    if (html_scroll) {
-      schedule ~= outTask.html_scroll;
-    }
-    if (html_seg) {
-      schedule ~= outTask.html_seg;
-    }
-    if (html_stuff) {
-      schedule ~= outTask.html_stuff;
-    }
-    return schedule.sort().uniq;
-  }
-  auto abstraction() {
-    bool _is = (
-      opts["abstraction"]
-      || concordance
-      || epub
-      || html
-      || manifest
-      || sisupod
-      || source
-      || sqlite_discrete
-      || sqlite_delete
-      || sqlite_insert
-      || sqlite_update
-    )
-    ? true
-    : false;
-    return _is;
-  }
-}
-auto _opt_action = OptActions();
-#+END_SRC
-
-**** env
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-auto _env = [
-  "pwd" : environment["PWD"],
-  "home" : environment["HOME"],
-];
-#+END_SRC
-
-*** opt actions on processing files & file paths (pods, src etc.)
-
-#+NAME: sdp_args
-#+BEGIN_SRC d
-auto _manifest_start = PodManifest!()("");
-auto _manifest_matter = PathMatters!()(_opt_action, _env, "");
-auto _manifests = [ _manifest_matter ];
-foreach(arg; args[1..$]) {
-  _manifest_start = PodManifest!()(arg);
-  if (arg.match(rgx.flag_action)) {
-    flag_action ~= " " ~ arg;   // flags not taken by getopt
-  } else if (
-    !(arg.match(rgx.src_pth_sst_or_ssm))
-    && _manifest_start.pod_manifest_file_with_path
-    && _opt_action.abstraction
-  ) {
-    string contents_location_raw_;
-    string contents_location_;
-    string sisudoc_txt_ = _manifest_start.pod_manifest_file_with_path;
-    enforce(
-      exists(sisudoc_txt_)!=0,
-      "file not found: «" ~
-      sisudoc_txt_ ~ "»"
-    );
-    if (exists(sisudoc_txt_)) {
-      try {
-        if (exists(sisudoc_txt_)) {
-          contents_location_raw_ = sisudoc_txt_.readText;
-        }
-      } catch (ErrnoException ex) {
-      } catch (FileException ex) {
-        // Handle errors
-      }
-      if (contents_location_raw_.match(rgx.pod_content_location)) { // (file name followed by language codes \n)+
-        foreach (m; contents_location_raw_.matchAll(rgx.pod_content_location)) {
-          foreach (n; m.captures[2].matchAll(rgx.language_codes)) {
-            contents_location_ ~= "media/text/" ~ n.captures[1].to!string ~ "/" ~ m.captures[1].to!string ~ "\n";
-          }
-        }
-      } else {
-        contents_location_ = contents_location_raw_;
-      }
-    } else {
-      writeln("manifest not found: ", sisudoc_txt_);
-    }
-    auto contents_locations_arr
-      = (cast(char[]) contents_location_).split;
-    auto tmp_dir_ = (sisudoc_txt_).dirName.array;
-    foreach (contents_location; contents_locations_arr) {
-      assert(contents_location.match(rgx.src_pth_sst_or_ssm),
-        "not a recognised file: «" ~
-        contents_location ~ "»"
-      );
-      auto contents_location_pth_ = (contents_location).to!string;
-      auto lang_rgx_ = regex(r"/(" ~ _opt_action.languages_set.join("|") ~ ")/");
-      if (_opt_action.languages_set[0] == "all"
-        || (contents_location_pth_).match(lang_rgx_)
-      ) {
-        auto _fns = (((tmp_dir_).chainPath(contents_location_pth_)).array).to!string;
-        _manifest_matter = PathMatters!()(_opt_action, _env, arg, _fns, contents_locations_arr);
-        _manifests ~= _manifest_matter;
-      }
-    }
-  } else if (arg.match(rgx.src_pth_sst_or_ssm)) {
-    if (exists(arg)==0) {
-      writeln("ERROR >> Processing Skipped! File not found: ", arg);
-    } else {
-      _manifest_matter = PathMatters!()(_opt_action, _env, arg, arg);
-      _manifests ~= _manifest_matter;
-    }
-  } 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;
-  }
-}
-#+END_SRC
-
-*** config files load & read
-
-#+NAME: sdp_conf_files
-#+BEGIN_SRC d
-auto _config_document_struct = readConfigDoc!()(_manifest, _env);    // document config file
-auto _config_local_site_struct = readConfigSite!()(_manifest, _env); // local site config
-ConfCompositePlus _make_and_meta_struct;
-_make_and_meta_struct = configParseTOMLreturnSiSUstruct!()(_make_and_meta_struct, _config_document_struct);
-_make_and_meta_struct = configParseTOMLreturnSiSUstruct!()(_make_and_meta_struct, _config_local_site_struct);
-#+END_SRC
-
-*** opt actions independent of processing files (no files no processing loop)
-
-#+NAME: sdp_do_selected
-#+BEGIN_SRC d
-if (!(_opt_action.skip_output)) {
-  debug(steps) {
-    writeln("step0 commence → (without processing files)");
-  }
-  outputHubOp!()(_env, _opt_action);
-  debug(steps) {
-    writeln("- step0 complete");
-  }
-}
-#+END_SRC
-
-** _2. processing: (loop each file)_ [+2]                         :loop:files:
-*** scope (loop)                                                    :scope:
-
-#+NAME: sdp_each_file_do_scope
-#+BEGIN_SRC d
-scope(success) {
-  if (!(_opt_action.quiet)) {
-    writefln(
-      "%s\n%s",
-      "~ document complete, ok ~",
-      "------------------------------------------------------------------",
-    );
-  }
-}
-scope(failure) {
-  debug(checkdoc) {
-    stderr.writefln(
-      "~ document run failure ~ (%s  v%s)\n\t%s\n%s",
-      __VENDOR__, __VERSION__,
-      manifest.src.filename,
-      "------------------------------------------------------------------",
-    );
-  }
-}
-enforce(
-  manifest.src.filename.match(rgx.src_pth_types),
-  "not a sisu markup filename: «" ~
-  manifest.src.filename ~ "»"
-);
-#+END_SRC
-
-*** 1. _document abstraction_ [#A]                                                >>
-
-- return tuple of:
-  - doc_abstraction (the document)
-  - doc_matters
-
-#+NAME: sdp_each_file_do_abstraction
-#+BEGIN_SRC d
-debug(steps) {
-  writeln("--->\nstepX commence → (document abstraction)");
-}
-auto t = SiSUabstraction!()(_env, _opt_action, manifest);
-static assert(!isTypeTuple!(t));
-static assert(t.length==2);
-auto doc_abstraction = t[dAM.abstraction];
-auto doc_matters = t[dAM.matters];
-debug(steps) {
-  writeln("- stepX complete");
-}
-#+END_SRC
-
-*** 2. _output processing_ (post abstraction processing)                          >>
-**** 0. abstraction _print summary_                    :abstraction:summary:
-
-#+NAME: sdp_each_file_do_debugs_checkdoc
-#+BEGIN_SRC d
-/+ ↓ debugs +/
-if (doc_matters.opt.action.verbose) {
-  SiSUabstractionSummary!()(doc_abstraction, doc_matters);
-}
-#+END_SRC
-
-**** 1. _debug_ (document parts, checkdoc)                  :debug:checkdoc:
-- [[./meta_output_debugs.org][meta_output_debugs]]
-
-#+NAME: sdp_each_file_do_debugs_checkdoc
-#+BEGIN_SRC d
-/+ ↓ debugs +/
-if ((doc_matters.opt.action.debug_do)
-|| (doc_matters.opt.action.verbose)
-) {
-  SiSUdebugs!()(doc_abstraction, doc_matters);
-}
-#+END_SRC
-
-**** 2. _process outputs_                                          :outputs:
-- [[./output_hub.org][output_hub]]
-
-#+NAME: sdp_each_file_do_selected_output
-#+BEGIN_SRC d
-/+ ↓ output hub +/
-if (!(doc_matters.opt.action.skip_output)) {
-  debug(steps) {
-    writeln("step5 commence → (process outputs)");
-  }
-  outputHub!()(doc_abstraction, doc_matters);
-  debug(steps) {
-    writeln("- step5 complete");
-  }
-}
-#+END_SRC
-
-*** scope (on loop exit)                                       :scope:exit:
-
-#+NAME: sdp_each_file_do_scope_exit
-#+BEGIN_SRC d
-scope(exit) {
-  if (!(_opt_action.quiet)) {
-    writefln(
-      "processed file: %s",
-      manifest.src.filename
-    );
-  }
-  destroy(manifest);
-}
-#+END_SRC
-
-** +2c. no valid filename provided+
-#+NAME: sdp_no_filename_provided
-#+BEGIN_SRC d
-/+ no recognized filename provided +/
-writeln("no recognized filename");
-break; // terminate, stop
-#+END_SRC
-
-* 2. _document abstraction functions_                  :module:sdp:abstraction:
-** 0. module template
-
-#+BEGIN_SRC d  :tangle ../src/sdp/meta/metadoc.d
-module sdp.meta.metadoc;
-template SiSUabstraction() {
-  <<imports_sdp>>
-  <<sdp_mixin>>
-  enum headBody { header, body_content, insert_file_list, image_list }
-  enum makeMeta { make, meta }
-  enum docAbst  { doc_abstraction, section_keys, segnames, segnames_0_4, images }
-  static auto rgx = Rgx();
-  auto SiSUabstraction(E,O,M)(
-    E _env,
-    O _opt_action,
-    M _manifest
-  ){
-    <<sdp_conf_files>>
-    <<sdp_each_file_do_read_and_split_sisu_markup_file_content_into_header_and_body>>
-    <<sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta>>
-    <<sdp_each_file_do_document_abstraction>>
-    <<sdp_each_file_do_document_matters>>
-    auto t = tuple(doc_abstraction, doc_matters);
-    static assert(t.length==2);
-    return t;
-  }
-}
-#+END_SRC
-
-** 1. raw file content split, doc: _header_, _content_ +(lists: subdocs? images?)   >>
-- [[./source_read_files.org][source_read_files]]
-
-- read in the _marked up source document_ and
-  - split the document into:
-    - document header
-    - document body
-      - from markup source
-      - if master document from sub documents content
-  - if a master document
-    - make a list of insert files
-  - if build source pod requested
-    - scan for list of images
-      (action avoided if not needed at this stage)
-
-- _return a tuple of_:
-  - header
-  - body
-  - insert file list
-  - image list (if build source pod requested)
-
-if build source pod requested all information needed to build it available at this point
-  - manifest related information  _manifest
-  - insert file list              _header_body_insertfilelist_imagelist[headBody.insert_file_list]
-  - image list                    _header_body_insertfilelist_imagelist[headBody.image_list]
-
-#+NAME: sdp_each_file_do_read_and_split_sisu_markup_file_content_into_header_and_body
-#+BEGIN_SRC d
-/+ ↓ read file (filename with path) +/
-/+ ↓ file tuple of header and content +/
-debug(steps) {
-  writeln("step1 commence → (get document header & body & insert file list & if needed image list)"
-  );
-}
-auto _header_body_insertfilelist_imagelist
-  = SiSUrawMarkupContent!()(_opt_action, _manifest.src.path_and_fn);
-static assert(!isTypeTuple!(_header_body_insertfilelist_imagelist));
-static assert(_header_body_insertfilelist_imagelist.length==4);
-debug(steps) {
-  writeln("- step1 complete");
-}
-debug(header_and_body) {
-  writeln(header);
-  writeln(_header_body_insertfilelist_imagelist.length);
-  writeln(_header_body_insertfilelist_imagelist.length[headBody.body_content][0]);
-}
-#+END_SRC
-
-** 2. _document metadata_ & _make instructions_ (struct from toml)                  >>
-- [[./meta_conf_make_meta.org][meta_conf_make_meta]]
-
-- read _document header_, split into:
-  - metadata
-  - make instructions
-- read config files
-  - consolidate make instructions
-- _return tuple of_:
-  - document metadata
-  - make instructions (from configuration files & document header make
-    instructions)
-
-#+NAME: sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta
-#+BEGIN_SRC d
-/+ ↓ split header into make and meta +/
-debug(steps) {
-  writeln("step2 commence → (read document header - toml, return struct)");
-}
-_make_and_meta_struct =
-docHeaderMakeAndMetaTupTomlExtractAndConvertToStruct!()(
-  _make_and_meta_struct,
-  _header_body_insertfilelist_imagelist[headBody.header]
-);
-debug(steps) {
-  writeln("- step2 complete");
-}
-#+END_SRC
-
-** 3. _document abstraction, tuple_ (output-pre-processing) [#A]                   >>
-- [[./meta_abstraction.org][meta_abstraction]]
-
-- prepare the document abstraction used in downstream processing
-
-- _return tuple of_:
-  - document abstraction (_the_document_ or doc_abstraction)
-  - document abstraction keys
-    - (head, toc, body, endnotes, glossary, bibliography, bookindex, blurb,
-      tail)
-    - (transfer to _doc_matters_)
-  - segnames for html epub (transfer to _doc_matters_)
-  - image list (transfer to _doc_matters_)
-
-#+NAME: sdp_each_file_do_document_abstraction
-#+BEGIN_SRC d
-/+ ↓ document abstraction: process document, return abstraction as tuple +/
-debug(steps) {
-  writeln("step3 commence → (document abstraction (da); da keys; segnames; doc_matters)");
-}
-auto da = SiSUdocAbstraction!()(
-  _header_body_insertfilelist_imagelist[headBody.body_content],
-  _make_and_meta_struct,
-  _opt_action,
-  _manifest,
-  true,
-);
-static assert(!isTypeTuple!(da));
-static assert(da.length==5);
-auto doc_abstraction = da[docAbst.doc_abstraction]; /+ head ~ toc ~ body ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~ blurb; +/
-auto _document_section_keys_sequenced = da[docAbst.section_keys];
-string[] _doc_html_segnames = da[docAbst.segnames];
-string[] _doc_epub_segnames_0_4 = da[docAbst.segnames_0_4];
-auto _images = da[docAbst.images];
-debug(steps) {
-  writeln("- step3 complete");
-}
-#+END_SRC
-
-** 4. _document matters_ (doc info gathered, various sources) [#A]                 >>
-
-- prepare document_matters, miscellany about processing and the document of use
-  in downstream processing
-
-#+NAME: sdp_each_file_do_document_matters
-#+BEGIN_SRC d
-debug(steps) {
-  writeln("step4 commence → (doc_matters)");
-}
-struct DocumentMatters {
-  auto conf_make_meta() { // TODO meld with all make instructions
-    return _make_and_meta_struct;
-  }
-  auto env() {
-    struct Env_ {
-      auto pwd() {
-        return _manifest.env.pwd;
-      }
-      auto home() {
-        return _manifest.env.home;
-      }
-    }
-    return Env_();
-  }
-  auto opt() {
-    struct Opt_ {
-      auto action() {
-        /+ getopt options, commandline instructions, raw
-         - processing instructions --epub --html etc.
-         - command line config instructions --output-path
-        +/
-        return _opt_action;
-      }
-    }
-    return Opt_();
-  }
-  auto src() {
-    return _manifest.src;
-  }
-  auto src_path_info() {
-    return SiSUpathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
-  }
-  auto srcs() {
-    struct SRC_ {
-      auto file_insert_list() {
-        return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
-      }
-      auto image_list() {
-        return _images;
-      }
-    }
-    return SRC_();
-  }
-  auto pod() {
-    return _manifest.pod;
-  }
-  auto sqlite() {
-    struct SQLite_ {
-      string filename() {
-        return _opt_action.sqlite_filename;
-      }
-    }
-    return SQLite_();
-  }
-  auto xml() {
-    struct XML_ {
-      auto keys_seq() {
-        /+ contains .seg & .scroll sequences +/
-        return _document_section_keys_sequenced;
-      }
-      string[] segnames() {
-        return _doc_html_segnames;
-      }
-      string[] segnames_lv_0_to_4() {
-        return _doc_epub_segnames_0_4;
-      }
-    }
-    return XML_();
-  }
-  auto output_path() {
-    return _manifest.output.path;
-  }
-}
-auto doc_matters = DocumentMatters();
-debug(steps) {
-  writeln("- step4 complete");
-}
-#+END_SRC
-
-* 3. document abstraction _summary_                :module:sdp:metadoc_summary:
-** 0. module template
-
-#+BEGIN_SRC d :tangle ../src/sdp/meta/metadoc_summary.d
-module sdp.meta.metadoc_summary;
-template SiSUabstractionSummary() {
-  auto SiSUabstractionSummary(S,T)(
-    auto ref const S  doc_abstraction,
-    auto ref       T  doc_matters,
-  ) {
-    <<metadoc_summary_imports>>
-    mixin InternalMarkup;
-    <<metadoc_summary_initialize>>
-    if (doc_matters.opt.action.verbose) {
-      <<meta_metadoc_summary>>
-    }
-  }
-}
-#+END_SRC
-
-** init
-*** imports
-
-#+name: metadoc_summary_imports
-#+BEGIN_SRC d
-import
-  sdp.meta.defaults,
-  sdp.meta.rgx;
-import
-  std.array,
-  std.exception,
-  std.regex,
-  std.stdio,
-  std.string,
-  std.traits,
-  std.typecons,
-  std.uni,
-  std.utf,
-  std.conv : to;
-#+END_SRC
-
-*** initialize                                                     :report:
-
-#+name: metadoc_summary_initialize
-#+BEGIN_SRC d
-auto markup = InlineMarkup();
-#+END_SRC
-
-** (last ocn)
-
-#+name: meta_metadoc_summary
-#+BEGIN_SRC d
-string[string] check = [
-  "last_object_number" : "NA [debug \"checkdoc\" not run]",
-  "last_object_number_body"  : "0",
-  "last_object_number_book_index" : "0",
-];
-foreach (k; doc_matters.xml.keys_seq.seg) {
-  foreach (obj; doc_abstraction[k]) {
-    if (obj.metainfo.is_of_part != "empty") {
-      if (!empty(obj.metainfo.object_number)) {
-        if (k == "body") {
-          check["last_object_number_body"] = obj.metainfo.object_number;
-        }
-        if (!(obj.metainfo.object_number.empty)) {
-          check["last_object_number"] = obj.metainfo.object_number;
-        }
-      }
-      if (k == "bookindex_seg") {
-        if (obj.metainfo.object_number_type == 2) {
-          check["last_object_number_book_index"] = obj.metainfo.object_number_book_index;
-        }
-      }
-    }
-  }
-}
-#+END_SRC
-
-** summary
-
-#+name: meta_metadoc_summary
-#+BEGIN_SRC d
-auto min_repeat_number = 66;
-auto char_repeat_number = (doc_matters.conf_make_meta.meta.title_full.length
-  + doc_matters.conf_make_meta.meta.creator_author.length + 4);
-char_repeat_number = (char_repeat_number > min_repeat_number)
-? char_repeat_number
-: min_repeat_number;
-writefln(
-  "%s\n\"%s\", %s\n%s\n%s\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n(%s: %s)\n%s",
-  markup.repeat_character_by_number_provided("-", char_repeat_number),
-  doc_matters.conf_make_meta.meta.title_full,
-  doc_matters.conf_make_meta.meta.creator_author,
-  doc_matters.src.filename,
-  markup.repeat_character_by_number_provided("-", char_repeat_number),
-  "length toc arr:",
-  to!int(doc_abstraction["toc_seg"].length),
-  "length doc_abstraction arr:",
-  to!int(doc_abstraction["body"].length),
-  "last doc body ocn:",
-  to!int(check["last_object_number_body"]),
-  "last object_number:",
-  to!int(check["last_object_number"]),
-  "length endnotes:",                                // subtract headings
-  (doc_abstraction["endnotes"].length > 2)
-  ? (to!int(doc_abstraction["endnotes"].length - 2))
-  : 0,
-  "length glossary:",
-  (doc_abstraction["glossary"].length > 1)
-  ? (to!int(doc_abstraction["glossary"].length))
-  : 0,
-  "length biblio:",
-  (doc_abstraction["bibliography"].length > 1)
-  ? (to!int(doc_abstraction["bibliography"].length))
-  : 0,
-  "length bookindex:",
-  (doc_abstraction["bookindex_seg"].length > 1)
-  ? (to!int(doc_abstraction["bookindex_seg"].length))
-  : 0,
-  "  last book idx ocn:",
-  to!int(check["last_object_number_book_index"]),
-  "length blurb:",
-  (doc_abstraction["blurb"].length > 1)
-  ? (to!int(doc_abstraction["blurb"].length))
-  : 0,
-  "number of segments:",
-  (doc_matters.xml.segnames.length > 1)
-  ? (to!int(doc_matters.xml.segnames.length))
-  : 0,
-  __FILE__,
-  __LINE__,
-  markup.repeat_character_by_number_provided("-", min_repeat_number),
-);
-#+END_SRC
-
-* __END__
-dev notes
-
-** sdp glossary / terms
-
-|------+-------------------------------------|
-| sdp  | sisu document parser                |
-|------+-------------------------------------|
-| dmso | document markup, structure, objects |
-|------+-------------------------------------|
-| meta | meta document, document abstraction |
-| mda  | meta, meta document abstraction     |
-| adr  | abstract document representation    |
-| dar  | document abstract representation    |
-| (da) | (document abstraction)              |
-|      | (code representation of document)   |
-|------+-------------------------------------|
-| ao   | abstract objects                    |
-|      | (code representation of objects)    |
-|------+-------------------------------------|
-
-consider
-|-------+----------------------------------------------|
-| dao   | document abstraction, objects                |
-|-------+----------------------------------------------|
-| daso  | document abstraction, structure, objects     |
-|-------+----------------------------------------------|
-| drso  | document representation, structure, objects  |
-|-------+----------------------------------------------|
-| daows | document abstraction, objects with structure |
-|-------+----------------------------------------------|
-
-** the document notes
-*** document sections
-**** summary
-
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-| section      | part         | opt. |   | objects                                          | ocn                            |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-| front matter | head         | *    |   |                                                  | no                             |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-| toc          | toc          |      |   | generated from headings                          | no                             |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-| body         | body         | *    |   | default section                                  | yes                            |   |   |
-|              |              |      |   | - headings                                       |                                |   |   |
-|              |              |      |   | - paras                                          |                                |   |   |
-|              |              |      |   | - code                                           |                                |   |   |
-|              |              |      |   | - poem                                           |                                |   |   |
-|              |              |      |   | - group                                          |                                |   |   |
-|              |              |      |   | - block                                          |                                |   |   |
-|              |              |      |   | - quote                                          |                                |   |   |
-|              |              |      |   | - table                                          |                                |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-| back matter  | endnote      |      |   | generated from inline note markup                | no (each endnote belongs to    |   |   |
-|              |              |      |   |                                                  | a (body) object)               |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-|              | glossary     |      |   | identified section, limited markup               | possibly, to make searchable   |   |   |
-|              |              |      |   | - heading                                        | hidden                         |   |   |
-|              |              |      |   | - paras                                          |                                |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-|              | bibliography |      |   | generated from inline special markup             | possibly, to make searchable   |   |   |
-|              |              |      |   | appended to paragraphs contained in body section | hidden                         |   |   |
-|              |              |      |   | - heading                                        |                                |   |   |
-|              |              |      |   | - paras                                          |                                |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-|              | book index   |      |   | generated from inline special markup             | possibly, special numbering or |   |   |
-|              |              |      |   | - heading                                        | could use term as anchor?      |   |   |
-|              |              |      |   | - paras                                          | to make searchable             |   |   |
-|              |              |      |   |                                                  | hidden                         |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-|              | blurb        |      |   | identified section, limited markup               | no (unless non-substantive     |   |   |
-|              |              |      |   | - heading                                        | given special numbering)       |   |   |
-|              |              |      |   | - paras                                          |                                |   |   |
-|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---|
-
-**** on abstraction
-
-- abstract for downstream processing
-  - identify document structure and objects
-    - identify document structure (headings/levels/sections)
-    - identify objects (headings, paragraphs, tables, code blocks, verse ...)
-  - set document, generate common abstraction for downstream parsing
-    - set different _document sections_:
-      - _head_, toc, _body_, endnotes, glossary, bibliography, book index, blurb
-    - _object numbers_, heading/ chapter numbering etc, endnote numbers
-      - _regular ocn_
-        - body objects
-        - glossary objects
-        - bibliography objects
-      - _special ocn_
-        - non substantive text (provide special numbers)
-          - blurb objects
-        - book index
-      - special (_exceptions_)
-        - endnotes
-  - unify object representations
-    - multiple markups for same object type given single representation
-  - extract object attributes
-  - unify inline markup on objects
-    - inline markup made easier to identify
-
-- simplify downstream parsing
-
-*** objects
-**** summary
-
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-|       |              | identified by              | object notes             | attributes     | inline          | embedded       | special    |
-|       |              |                            |                          |                |                 | appended       | characters |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-| para  | heading      | level markers              |                          |                | - italics       | - endnotes     |            |
-|       |              | at start of line           |                          |                |                 | - bibliography |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-|       | paragraph    | delimited by two new lines | default object           | - indent       | - bold          | - endnotes     |            |
-|       |              |                            | [discard leading &       | - bullet       | - italics       | - bibliography |            |
-|       |              |                            | newline whitespace]      |                | - underscore    |                |            |
-|       |              |                            |                          |                | - strikethrough |                |            |
-|       |              |                            |                          |                | - superscript   |                |            |
-|       |              |                            |                          |                | - subscript     |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-| block |              | open and close tags        |                          |                |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-| TODO  | quote        |                            |                          | - language?    |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-| TODO  | group        |                            | - inline markup applied  | - language?    | as paragraph    | - endnotes     |            |
-|       |              |                            | - [discard leading &     |                |                 | - bibliography |            |
-|       |              |                            | newline whitespace]      |                |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-| TODO  | block        |                            | - inline markup applied  |                | as paragraph    | - endnotes     |            |
-|       |              |                            | - whitespace indentation |                |                 | - bibliography |            |
-|       |              |                            | & newlines               |                |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-|       | poem / verse | open and close tags        | verse is the object      |                |                 | - endnotes     |            |
-|       |              |                            | - inline markup applied  |                |                 | - bibliography |            |
-|       |              | (for poem)                 | - whitespace indentation |                |                 |                |            |
-|       |              |                            | & newlines               |                |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-|       | code         |                            | - contents untouched     | - syntax       |                 |                |            |
-|       |              |                            | - whitespace indentation | - numbered     |                 |                |            |
-|       |              |                            | & newlines               |                |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-|       | table        |                            |                          | - column width |                 |                |            |
-|       |              |                            |                          | - heading row  |                 |                |            |
-|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------|
-
-**** ocn
-
-|-------------+-----------------------+-----------------------+----------------+------|
-| objects     | section / part        | ocn described         | how used       | type |
-|-------------+-----------------------+-----------------------+----------------+------|
-| regular ocn |                       |                       |                |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | body objects          | seq. digit            | anchor         | ocn  |
-|             |                       | [0-9]+                | visible        |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | glossary objects      | seq. digit            | anchor         | ocn  |
-|             |                       | [0-9]+                | not-visible    |      |
-|             |                       |                       | (for search)   |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | bibliography objects  | seq. digit            | anchor         | ocn  |
-|             |                       | [0-9]+                | not-visible    |      |
-|             |                       |                       | (for search)   |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-| special ocn |                       |                       |                |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | non-substantive text  | x char + seq. digit   | anchor         | non  |
-|             | (within body & blurb) | x[0-9]+               | not-visible    |      |
-|             |                       |                       | (for search)   |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | book index            | i char + seq. digit   | anchor         | idx  |
-|             |                       | i[0-9]+               | not-visible    |      |
-|             |                       |                       | (for search)   |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-| without ocn |                       |                       |                |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-|             | endnotes              | ocn of parent object  | no ocn         | fn   |
-|             |                       | + footnote seq. digit | anchor visible |      |
-|-------------+-----------------------+-----------------------+----------------+------|
-
-** make config - _composite make_
-
-work on composite make a unification of make instructions for each document run
-
-extract instructions from all config files, unify the make instructions and
-provide the result as a single set of make instructions for each document parsed
-
-- 1. general, document_make config file (to be applied to all documents unless
-  overridden by document or command line instruction)
-- 2. local, site specific (site local instructions such as the site's url, cgi
-  location etc.)
-- 3. each document header, make (the document header contains metadata and may
-  include make instructions for that document)
-  - make
-  - meta
-- 4. command line instruction, make (some make instructions may be passed
-  through the command line)
-
-*** instruction sources
-
-|----+---------------------------------+----------------------------------------+---------------------+---|
-|    | make instruction source         |                                        | varies (applies to) |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-| 0. | unify the following as a single | take into account all the instructions |                     |   |
-|    | set of make instructions        | provided below, provide interface      |                     |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-| 1. | document_make file              | to be applied to all documents         | per directory       |   |
-|    | "config_document"               | (unless subsequently overridden)       | (all docs within)   |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-| 2. | config file                     | local site specific                    | per directory       |   |
-|    | "config_local_site"             |                                        | (all docs within)   |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-| 3. | document header make            | make instructions contained            | per document        |   |
-|    |                                 | in document header                     | (single doc)        |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-| 4. | command line instruction        | make instruction passed                | each command        |   |
-|    |                                 |                                        | (all docs within)   |   |
-|----+---------------------------------+----------------------------------------+---------------------+---|
-
-*** config & metadata (from instruction sources)
-
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     | 1. document make file    | 2. config file             | 3. document header     | 4. command line instruction |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-| comment, fixed:     | per dir (sisupod)        | per dir                    | per document (sisupod) | per command instruction     |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     | sdl_root_config_document | sdl_root_config_local_site |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-| local site specific |                          | *                          |                        | *?                          |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | webserv                    |                        |                             |
-|                     |                          | - url_root                 |                        |                             |
-|                     |                          | - path                     |                        |                             |
-|                     |                          | - images                   |                        |                             |
-|                     |                          | - cgi                      |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | webserv_cgi                |                        |                             |
-|                     |                          | - host                     |                        |                             |
-|                     |                          | - base_path                |                        |                             |
-|                     |                          | - port                     |                        |                             |
-|                     |                          | - user                     |                        |                             |
-|                     |                          | - file_links               |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | processing                 |                        |                             |
-|                     |                          | - path                     |                        |                             |
-|                     |                          | - dir                      |                        |                             |
-|                     |                          | - concord_max              |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | flag (configure)           |                        | (call)                      |
-|                     |                          | - act0                     |                        | act0                        |
-|                     |                          | - act1                     |                        | act1                        |
-|                     |                          | - act2                     |                        | act2                        |
-|                     |                          | - act3                     |                        | act3                        |
-|                     |                          | - act4                     |                        | act4                        |
-|                     |                          | - act5                     |                        | act5                        |
-|                     |                          | - act6                     |                        | act6                        |
-|                     |                          | - act7                     |                        | act7                        |
-|                     |                          | - act8                     |                        | act8                        |
-|                     |                          | - act9                     |                        | act9                        |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | default                    |                        |                             |
-|                     |                          | - papersize                |                        |                             |
-|                     |                          | - text_wrap                |                        |                             |
-|                     |                          | - emphasis                 |                        |                             |
-|                     |                          | - language                 |                        |                             |
-|                     |                          | - digest                   |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | permission                 |                        |                             |
-|                     |                          | - share_source             |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | program_select             |                        |                             |
-|                     |                          | - editor                   |                        |                             |
-|                     |                          | - epub_viewer              |                        |                             |
-|                     |                          | - html_viewer              |                        |                             |
-|                     |                          | - odf_viewer               |                        |                             |
-|                     |                          | - pdf_viewer               |                        |                             |
-|                     |                          | - xml_viewer               |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          | search                     |                        |                             |
-|                     |                          | - flag                     |                        |                             |
-|                     |                          | - action                   |                        |                             |
-|                     |                          | - db                       |                        |                             |
-|                     |                          | - title                    |                        |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-| make instruction    | **                       | omit or override share?    | **                     | *?                          |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     | make                     | make                       | make                   |                             |
-|                     | - bold                   | - bold                     | - bold                 |                             |
-|                     | - breaks                 | - breaks                   | - breaks               |                             |
-|                     | - cover_image            | - cover_image              | - cover_image          |                             |
-|                     | - css                    | - css                      | - css                  |                             |
-|                     | - emphasis               | - emphasis                 | - emphasis             |                             |
-|                     | - footer                 | - footer                   | - footer               |                             |
-|                     | - headings               | - headings                 | - headings             |                             |
-|                     | - home_button_image      | - home_button_image        | - home_button_image    |                             |
-|                     | - home_button_text       | - home_button_text         | - home_button_text     |                             |
-|                     | - italics                | - italics                  | - italics              |                             |
-|                     | - num_top                | - num_top                  | - num_top              |                             |
-|                     | - auto_num_depth         | - auto_num_depth           | - auto_num_depth       |                             |
-|                     | - substitute             | - substitute               | - substitute           |                             |
-|                     | - texpdf_font            | - texpdf_font              | - texpdf_font          |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-| actions             |                          |                            |                        | *                           |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            |                        | assertions                  |
-|                     |                          |                            |                        | concordance                 |
-|                     |                          |                            |                        | debug                       |
-|                     |                          |                            |                        | digest                      |
-|                     |                          |                            |                        | docbook                     |
-|                     |                          |                            |                        | epub                        |
-|                     |                          |                            |                        | html                        |
-|                     |                          |                            |                        | html-seg                    |
-|                     |                          |                            |                        | html-scroll                 |
-|                     |                          |                            |                        | manifest                    |
-|                     |                          |                            |                        | ocn                         |
-|                     |                          |                            |                        | odt                         |
-|                     |                          |                            |                        | pdf                         |
-|                     |                          |                            |                        | postgresql                  |
-|                     |                          |                            |                        | qrcode                      |
-|                     |                          |                            |                        | sisupod                     |
-|                     |                          |                            |                        | source                      |
-|                     |                          |                            |                        | sqlite                      |
-|                     |                          |                            |                        | sqlite-db-create            |
-|                     |                          |                            |                        | sqlite-db-drop              |
-|                     |                          |                            |                        | text                        |
-|                     |                          |                            |                        | verbose                     |
-|                     |                          |                            |                        | xhtml                       |
-|                     |                          |                            |                        | xml-dom                     |
-|                     |                          |                            |                        | xml-sax                     |
-|                     |                          |                            |                        | section_toc                 |
-|                     |                          |                            |                        | section_body                |
-|                     |                          |                            |                        | section_endnotes            |
-|                     |                          |                            |                        | section_glossary            |
-|                     |                          |                            |                        | section_biblio              |
-|                     |                          |                            |                        | section_bookindex           |
-|                     |                          |                            |                        | section_blurb               |
-|                     |                          |                            |                        | backmatter                  |
-|                     |                          |                            |                        | skip-output                 |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-| metadata            |                          |                            | *                      |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | classify               |                             |
-|                     |                          |                            | - dewey                |                             |
-|                     |                          |                            | - keywords             |                             |
-|                     |                          |                            | - loc                  |                             |
-|                     |                          |                            | - subject              |                             |
-|                     |                          |                            | - topic_register       |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | creator                |                             |
-|                     |                          |                            | - author               |                             |
-|                     |                          |                            | - author_email         |                             |
-|                     |                          |                            | - illustrator          |                             |
-|                     |                          |                            | - translator           |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | date                   |                             |
-|                     |                          |                            | - added_to_site        |                             |
-|                     |                          |                            | - available            |                             |
-|                     |                          |                            | - created              |                             |
-|                     |                          |                            | - issued               |                             |
-|                     |                          |                            | - modified             |                             |
-|                     |                          |                            | - published            |                             |
-|                     |                          |                            | - valid                |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | identifier             |                             |
-|                     |                          |                            | - isbn                 |                             |
-|                     |                          |                            | - oclc                 |                             |
-|                     |                          |                            | - pg                   |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | links                  |                             |
-|                     |                          |                            | - link                 |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | notes                  |                             |
-|                     |                          |                            | - abstract             |                             |
-|                     |                          |                            | - description          |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | original               |                             |
-|                     |                          |                            | - language             |                             |
-|                     |                          |                            | - source               |                             |
-|                     |                          |                            | - title                |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | publisher              |                             |
-|                     |                          |                            | - name                 |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | rights                 |                             |
-|                     |                          |                            | - copyright            |                             |
-|                     |                          |                            | - cover                |                             |
-|                     |                          |                            | - illustrations        |                             |
-|                     |                          |                            | - license              |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
-|                     |                          |                            | title                  |                             |
-|                     |                          |                            | - edition              |                             |
-|                     |                          |                            | - full                 |                             |
-|                     |                          |                            | - language             |                             |
-|                     |                          |                            | - main                 |                             |
-|                     |                          |                            | - note                 |                             |
-|                     |                          |                            | - sub                  |                             |
-|                     |                          |                            | - subtitle             |                             |
-|---------------------+--------------------------+----------------------------+------------------------+-----------------------------|
diff --git a/org/source_files_read.org b/org/source_files_read.org
index 8f5430a..db066fe 100644
--- a/org/source_files_read.org
+++ b/org/source_files_read.org
@@ -1,8 +1,8 @@
-#+TITLE:       sdp markup source raw
+#+TITLE:       doc_reform markup source raw
+#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
+#+FILETAGS:    :doc_reform:sourcefile:read:
 #+AUTHOR:      Ralph Amissah
 #+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
-#+KEYWORDS
 #+LANGUAGE:    en
 #+STARTUP:     indent content
 #+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
@@ -11,31 +11,30 @@
 #+PROPERTY:    header-args :padline no :exports code :noweb yes
 #+EXPORT_SELECT_TAGS:  export
 #+EXPORT_EXCLUDE_TAGS: noexport
-#+FILETAGS:            :sdp:rel:meta:read:file
-#+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n)
+#+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n)
 
-[[./sdp.org][sdp]]  [[./][org/]]
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
 * imports
 
 #+name: imports_std
 #+BEGIN_SRC d
 import
-  sdp.meta,
-  sdp.source.paths_source,
+  doc_reform.meta,
+  doc_reform.source.paths_source,
   std.file,
   std.path;
 #+END_SRC
 
-* A. get _config file_ (read in)            :module:sdp:source_read_config_files:
+* A. get _config file_ (read in)                          :module:config_files:
 ** 0. module template
 
-#+BEGIN_SRC d :tangle ../src/sdp/source/read_config_files.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/source/read_config_files.d
 /++
   read configuration files<BR>
   - read config files<BR>
   meta_config_files.d
 +/
-module sdp.source.read_config_files;
+module doc_reform.source.read_config_files;
 <<meta_config_file_in>>
 <<meta_config_file_toml>>
 <<meta_config_file_hub>>
@@ -264,19 +263,19 @@ static template configReadDocTOML() {
 }
 #+END_SRC
 
-* B. get _markup source_, read file         :module:sdp:source_read_source_files:
+* B. get _markup source_, read file                       :module:source_files:
 ** 0. module template (includes tuple)
 
-#+BEGIN_SRC d :tangle ../src/sdp/source/read_source_files.d
+#+BEGIN_SRC d :tangle ../src/doc_reform/source/read_source_files.d
 /++
   module source_read_source_files;<BR>
   - open markup files<BR>
   - if master file scan for addional files to import/insert
 +/
-module sdp.source.read_source_files;
+module doc_reform.source.read_source_files;
 static template SiSUrawMarkupContent() {
   import
-    sdp.meta.rgx;
+    doc_reform.meta.rgx;
   <<imports_std>>
   mixin SiSUrgxInit;
   static auto rgx = Rgx();
@@ -503,7 +502,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray(
 #+END_SRC
 
 ** get markup source, master file & inserts             :masterfile:inserts:
-[[./sdp.org][sdp]]  [[./][org/]]
+[[./doc_reform.org][doc_reform]]  [[./][org/]]
 
 *** scan inserts (sub-document) source                    :scan_insert_src:
 **** scan subdoc source
@@ -567,9 +566,8 @@ if (type1["curly_code"] == 1) {
   auto markup_sourcesubfile_insert_content
     = raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
   debug(insert_file) {
-    tell_l("red", line);
-    tell_l("red", fn_src_insert);
-    tell_l("fuchsia", "ERROR");
+    writeln(line);
+    writeln(fn_src_insert);
     writeln(
       "  length contents insert array: ",
       markup_sourcesubfile_insert_content.length
@@ -658,8 +656,8 @@ if (type["curly_code"] == 1) {
   auto markup_sourcefile_insert_content
     = raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts);
   debug(insert_file) {
-    tell_l("red", line);
-    tell_l("red", fn_src_insert);
+    writeln(line);
+    writeln(fn_src_insert);
     writeln(
       "  length contents insert array: ",
       markup_sourcefile_insert_content.length
-- 
cgit v1.2.3