From e95c49b76f4ac7bf72c383ee43a0567dfcbf1603 Mon Sep 17 00:00:00 2001 From: Ralph Amissah 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() { - <> + <> } #+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; <> <> <> @@ -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; <> <> <> @@ -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
- read config files
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; <> <> <> @@ -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; <> <> <> 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 { <> <> @@ -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 { <> <> 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; <> #+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; +<> +import std.algorithm; +import std.parallelism; +<> +<> +/++ +name "doc_reform" +description "A SiSU inspired document parser writen in D." +homepage "http://sisudoc.org" ++/ +void main(string[] args) { + <> + <> + <> + if (_manifests.length > 1) { // _manifests[0] initialized dummy element + foreach(manifest; parallel(_manifests[1..$])) { + if (!empty(manifest.src.filename)) { + <> + <> + <> + <> + <> + } else { + <> + } + } + } +} +#+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() { + <> + <> + 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 + ){ + <> + <> + <> + <> + <> + 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, + ) { + <> + mixin InternalMarkup; + <> + if (doc_matters.opt.action.verbose) { + <> + } + } +} +#+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; <> #+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; <> #+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 +/ <> @@ -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 +/ <> 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; <> #+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
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
@@ -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() { <> 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
check & generate output types requested +/ -module sdp.output.hub; +module doc_reform.output.hub; template outputHub() { <> 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() { <> 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; <> 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() { <> 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"¶ @@ -380,7 +379,7 @@ auto epub3_seg_head(M)( - + @@ -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() { <> 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() { <> 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; -<> -import std.algorithm; -import std.parallelism; -<> -<> -/++ -name "sdp" -description "A SiSU inspired document parser writen in D." -homepage "http://sisudoc.org" -+/ -void main(string[] args) { - <> - <> - <> - if (_manifests.length > 1) { // _manifests[0] initialized dummy element - foreach(manifest; parallel(_manifests[1..$])) { - if (!empty(manifest.src.filename)) { - <> - <> - <> - <> - <> - } else { - <> - } - } - } -} -#+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() { - <> - <> - 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 - ){ - <> - <> - <> - <> - <> - 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, - ) { - <> - mixin InternalMarkup; - <> - if (doc_matters.opt.action.verbose) { - <> - } - } -} -#+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
- read config files
meta_config_files.d +/ -module sdp.source.read_config_files; +module doc_reform.source.read_config_files; <> <> <> @@ -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;
- open markup files
- 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; <> 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