aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2020-10-16 19:16:18 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2020-10-19 13:26:15 -0400
commit0c693b23c4ff8f98a151884a24f150a5ff746dd4 (patch)
treef638d7942cab5b20adc3761ad7fcb62283eeefd8
parentcgi.d arsd update (diff)
org mode, unique code-block names & adjust headers
- avoid org-mode undefined behavior, provide unique code-block names
-rw-r--r--.gitignore3
-rw-r--r--COPYRIGHT104
-rw-r--r--README.md (renamed from README)1
-rw-r--r--makefile6
-rw-r--r--org/compile_time_info.org8
-rw-r--r--org/default_misc.org1
-rw-r--r--org/default_paths.org41
-rw-r--r--org/default_regex.org116
-rw-r--r--org/default_shared.org1
-rw-r--r--org/imports.org1
-rw-r--r--org/in_source_files.org11
-rw-r--r--org/meta_conf_make_meta.org33
-rw-r--r--org/meta_debugs.org1
-rw-r--r--org/metaverse.org497
-rw-r--r--org/out_cgi_search_sqlite.org53
-rw-r--r--org/out_harvest_metadata.org11
-rw-r--r--org/out_latex.org238
-rw-r--r--org/out_metadata.org8
-rw-r--r--org/out_odt.org177
-rw-r--r--org/out_sqlite.org141
-rw-r--r--org/out_src_pod.org8
-rw-r--r--org/out_xmls.org217
-rw-r--r--org/out_xmls_css.org141
-rw-r--r--org/out_zip.org1
-rw-r--r--org/output_hub.org39
-rw-r--r--org/output_show.org1
-rw-r--r--org/spine.org83
-rw-r--r--org/spine_build_scaffold.org242
-rw-r--r--org/spine_doc.org4548
-rw-r--r--org/spine_info.org5
-rw-r--r--org/util_cgi_d_sqlite_search.org60
-rw-r--r--org/util_cgi_rb_fcgi_sqlite_search.org1
-rw-r--r--org/util_spine_markup_conversion_from_sisu.org11
-rw-r--r--org/util_spine_syntax_highlighting_emacs.org1
-rw-r--r--org/util_spine_syntax_highlighting_vim.org1
-rw-r--r--src/doc_reform/io_out/epub3.d4
-rw-r--r--src/doc_reform/io_out/html.d2
-rw-r--r--src/doc_reform/io_out/odt.d4
-rw-r--r--src/doc_reform/io_out/source_pod.d2
-rw-r--r--src/doc_reform/meta/conf_make_meta_yaml.d2
-rw-r--r--src/doc_reform/meta/metadoc_from_src.d2
41 files changed, 1530 insertions, 5297 deletions
diff --git a/.gitignore b/.gitignore
index f9f3687..2dec148 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,9 @@
#./.dub/**
*
!.gitignore
+!README.md
!COPYRIGHT
-!README
+!CHANGELOG
!makefile
!version.txt
!dub.json
diff --git a/COPYRIGHT b/COPYRIGHT
index 05e171f..b3ef5a8 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -43,6 +43,110 @@
- Hompages:
[http://www.sisudoc.org]
+- Dependencies [check dub.json or dub.sdl]
+
+ - Name: d2sqlite3
+ - Description:
+ This is a small wrapper around SQLite for the D programming language.
+
+ - Author:
+ [Nicolas Sicard]
+ [https://github.com/dlang-community/d2sqlite3/graphs/contributors]
+
+ - Copyright: (C) 2011-2018, Nicolas Sicard
+
+ - code:
+ - License: BSL-1.0
+ Boost Software License 1.0
+ [http://www.boost.org/LICENSE_1_0.txt]
+
+ - Hompages:
+ [https://github.com/dlang-community/d2sqlite3]
+ [https://code.dlang.org/packages/d2sqlite3]
+
+ - Name: dyaml
+ - Description:
+ D:YAML is an open source YAML parser and emitter library for the D programming language.
+
+ - Author:
+ [Ferdinand Majerech]
+
+ - Copyright: (C) 2011-2018, Ferdinand Majerech
+
+ - code:
+ - License: BSL-1.0
+ Boost Software License 1.0
+ [http://www.boost.org/LICENSE_1_0.txt]
+
+ - Hompages:
+ [https://github.com/dlang-community/D-YAML]
+ [https://code.dlang.org/packages/dyaml]
+
+ - Name: imageformats
+ - Description:
+
+ - Author:
+ [Tero Hänninen]
+
+ - Copyright: (C) Tero Hänninen
+
+ - code:
+ - License: BSL-1.0
+ Boost Software License 1.0
+ [http://www.boost.org/LICENSE_1_0.txt]
+
+ - Hompages:
+ [https://github.com/lgvz/imageformats]
+ [https://code.dlang.org/packages/imageformats]
+
+ - Name: tinyendian (dyaml dependency)
+ - Description:
+ TinyEndian is a minimal endianness library for the D programming language.
+
+ - Author:
+ [Ferdinand Majerech]
+
+ - Copyright: (C) 2014, Ferdinand Majerech
+
+ - code:
+ - License: BSL-1.0
+ Boost Software License 1.0
+ [http://www.boost.org/LICENSE_1_0.txt]
+
+ - Hompages:
+ [https://github.com/dlang-community/tinyendian]
+ [http://code.dlang.org/packages/tinyendian]
+
+- Name: cgi.d
+ - Description:
+
+ - Author:
+ [Adam D. Ruppe]
+
+ - Copyright: (C) Adam D. Ruppe 2008 - 2020
+
+ - code: cgi.d (copy in ./misc/ext_lib/src/arsd/)
+ aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d
+
+ - License: BSL-1.0
+ Boost Software License 1.0
+ [http://www.boost.org/LICENSE_1_0.txt]
+ (Check the bottom of the file for details)
+
+ - Hompages:
+ [https://github.com/adamdruppe/arsd]
+
+
+- Name: dub2nix
+ - Description:
+
+ - Author:
+ []
+
+ - Copyright: (C)
+
+ - code: mkDub.nix (modified as needed)
+ - License:
- Spine, Doc Reform (SiSU) markup samples
Individual document content Copyright (Author) [as stated in document header]
diff --git a/README b/README.md
index 203ee70..ac35e9f 100644
--- a/README
+++ b/README.md
@@ -1,4 +1,5 @@
project_name: Spine, Doc Reform
+
description: [
"documents, structuring, processing, publishing",
search,
diff --git a/makefile b/makefile
index 90cc29b..60cb557 100644
--- a/makefile
+++ b/makefile
@@ -78,9 +78,6 @@ data/sisudir/media/text/through_the_looking_glass.lewis_carroll.sst \
data/sisudir/media/text/two_bits.christopher_kelty.sst \
data/sisudir/media/text/un_contracts_international_sale_of_goods_convention_1980.sst \
data/sisudir/media/text/viral_spiral.david_bollier.sst
-dub_upgrade:
- $(DUB) upgrade
-default: ldc
markup_samples:
find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
find data/sisudir/media/text -name *.ss[tm] | sort
@@ -88,6 +85,9 @@ markup_pod_samples:
find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
markup_dir_samples:
find data/sisudir/media/text -name *.ss[tm] | sort
+dub_upgrade:
+ $(DUB) upgrade
+default: ldc
all: dmd ldc gdc
all_ver: dmd_ver ldc_ver gdc_ver
all_debug: dmd_debug gdc_debug ldc_debug
diff --git a/org/compile_time_info.org b/org/compile_time_info.org
index e09409e..59ea6a4 100644
--- a/org/compile_time_info.org
+++ b/org/compile_time_info.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -30,7 +31,8 @@ version(Windows) {} else { ... }
+/
module doc_reform.conf.compile_time_info;
template CompileTimeInfo() {
- <<spine_compile_time_info>>
+ <<spine_compile_time_info_0>>
+ <<spine_compile_time_info_1>>
}
#+END_SRC
@@ -39,7 +41,7 @@ OS type shows during compilation
*** set os flags
-#+NAME: spine_compile_time_info
+#+NAME: spine_compile_time_info_0
#+BEGIN_SRC d
version(Windows) {
pragma(msg, "[ Windows compilation ]");
@@ -97,7 +99,7 @@ static if(sysWindows) {
** 64 bit compilation?
-#+NAME: spine_compile_time_info
+#+NAME: spine_compile_time_info_1
#+BEGIN_SRC d
version(D_LP64) {
enum bits = "64 bit";
diff --git a/org/default_misc.org b/org/default_misc.org
index 615f480..eb58fb2 100644
--- a/org/default_misc.org
+++ b/org/default_misc.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/default_paths.org b/org/default_paths.org
index f0881da..5c4e15e 100644
--- a/org/default_paths.org
+++ b/org/default_paths.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -35,7 +36,10 @@ import
import
doc_reform.meta.defaults,
doc_reform.meta.rgx;
-<<template_paths_src>>
+<<template_paths_src_0>>
+<<template_paths_src_1>>
+<<template_paths_src_2>>
+<<template_paths_src_3>>
<<template_paths_pod>>
<<template_paths_pod_shallow>>
<<template_paths_pods>>
@@ -43,7 +47,7 @@ import
** _manifest_ :manifest:
-#+NAME: template_paths_src
+#+NAME: template_paths_src_0
#+BEGIN_SRC d
template PodManifest() {
mixin spineRgxIn;
@@ -118,7 +122,7 @@ pod
│   └── video
└── pod.manifest
-#+NAME: template_paths_src
+#+NAME: template_paths_src_1
#+BEGIN_SRC d
template PathMatters() {
mixin spineRgxIn;
@@ -466,7 +470,7 @@ template PathMatters() {
** _config_ (dr_document_make & config_local_site) :config:
-#+NAME: template_paths_src
+#+NAME: template_paths_src_2
#+BEGIN_SRC d
template configFilePaths() {
mixin spineRgxIn;
@@ -639,7 +643,7 @@ filelist for processing [things to ponder]
*** manual source
-#+NAME: template_paths_src
+#+NAME: template_paths_src_3
#+BEGIN_SRC d
template spinePathsSRC() {
mixin spineRgxIn;
@@ -971,13 +975,18 @@ import
std.regex,
std.stdio;
import doc_reform.meta.rgx;
-<<template_paths_out>>
+<<template_paths_out_0>>
+<<template_paths_out_1>>
<<template_paths_url>>
-<<template_paths_html>>
+<<template_paths_html_0>>
+<<template_paths_html_1>>
+<<template_paths_html_2>>
<<template_paths_epub>>
<<template_paths_odf>>
<<template_paths_latex>>
-<<template_paths_sqlite>>
+<<template_paths_sqlite_0>>
+<<template_paths_sqlite_1>>
+<<template_paths_sqlite_2>>
#+END_SRC
** shared out path, base directory :out:
@@ -990,7 +999,7 @@ import doc_reform.meta.rgx;
- if pod and file have same name, keep name (makes no sense to repeat pod
name) NO dr_markup.sisu_markup should be sisu_markup
-#+NAME: template_paths_out
+#+NAME: template_paths_out_0
#+BEGIN_SRC d
template spineOutPaths() {
auto spineOutPaths()(
@@ -1048,7 +1057,7 @@ template spineOutPathSQLiteCGI() {
** set
-#+NAME: template_paths_out
+#+NAME: template_paths_out_1
#+BEGIN_SRC d
template spineOutPathsFnPd() {
/+ TODO stuff to work out here +/
@@ -1092,7 +1101,7 @@ template spineOutPathsFnPd() {
** _html_ :html:
*** relative
-#+NAME: template_paths_html
+#+NAME: template_paths_html_0
#+BEGIN_SRC d
template spineDocRootTreeHTML() {
mixin spineRgxIn;
@@ -1158,7 +1167,7 @@ template spineDocRootTreeHTML() {
*** absolute disk path
-#+NAME: template_paths_html
+#+NAME: template_paths_html_1
#+BEGIN_SRC d
template spinePathsHTML() {
mixin spineRgxIn;
@@ -1224,7 +1233,7 @@ template spinePathsHTML() {
*** urls
-#+NAME: template_paths_html
+#+NAME: template_paths_html_2
#+BEGIN_SRC d
template spineUrlsHTML() {
import std.format;
@@ -1553,7 +1562,7 @@ template spinePathsLaTeX() {
** _sqlite_ :sqlite:
*** discrete
-#+NAME: template_paths_sqlite
+#+NAME: template_paths_sqlite_0
#+BEGIN_SRC d
template spinePathsSQLiteDiscrete() {
mixin spineRgxIn;
@@ -1585,7 +1594,7 @@ template spinePathsSQLiteDiscrete() {
*** TODO collection
-#+NAME: template_paths_sqlite
+#+NAME: template_paths_sqlite_1
#+BEGIN_SRC d
template spinePathsSQLite() {
mixin spineRgxIn;
@@ -1614,7 +1623,7 @@ template spinePathsSQLite() {
*** TODO cgi search form
-#+NAME: template_paths_sqlite
+#+NAME: template_paths_sqlite_2
#+BEGIN_SRC d
template spinePathsSQLiteCGI() {
mixin spineRgxIn;
diff --git a/org/default_regex.org b/org/default_regex.org
index d9020d4..d78409e 100644
--- a/org/default_regex.org
+++ b/org/default_regex.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -37,15 +38,45 @@ http://dlang.org/phobos/std_regex.html
module doc_reform.meta.rgx;
static template spineRgxIn() {
static struct RgxI {
- <<meta_rgx>>
- <<prgmkup_rgx>>
+ <<meta_rgx_0>>
+ <<meta_rgx_1>>
+ <<meta_rgx_2>>
+ <<meta_rgx_3>>
+ <<meta_rgx_4>>
+ <<meta_rgx_5>>
+ <<meta_rgx_6>>
+ <<meta_rgx_7>>
+ <<meta_rgx_8>>
+ <<meta_rgx_9>>
+ <<meta_rgx_10>>
+ <<meta_rgx_11>>
+ <<meta_rgx_12>>
+ <<meta_rgx_13>>
+ <<meta_rgx_14>>
+ <<meta_rgx_15>>
+ <<meta_rgx_16>>
+ <<meta_rgx_17>>
+ <<meta_rgx_18>>
+ <<meta_rgx_19>>
+ <<meta_rgx_20>>
+ <<meta_rgx_21>>
+ <<meta_rgx_22>>
+ <<prgmkup_rgx_0>>
+ <<prgmkup_rgx_1>>
+ <<prgmkup_rgx_2>>
+ <<prgmkup_rgx_3>>
+ <<prgmkup_rgx_4>>
+ <<prgmkup_rgx_5>>
+ <<prgmkup_rgx_6>>
+ <<prgmkup_rgx_7>>
+ <<prgmkup_rgx_8>>
}
}
#+END_SRC
** misc :misc:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_0
#+BEGIN_SRC d
/+ misc +/
// static true_dollar = ctRegex!(`\$`, "gm");
@@ -84,7 +115,7 @@ static numeric_col = ctRegex!(`^[ 0-9,.%$£
** comments :comment:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_1
#+BEGIN_SRC d
/+ comments +/
static comment = ctRegex!(`^%+ `);
@@ -92,7 +123,7 @@ static comment = ctRegex!(`^%+ `);
** config
-#+NAME: meta_rgx
+#+NAME: meta_rgx_2
#+BEGIN_SRC d
/+ header +/
#+END_SRC
@@ -100,7 +131,7 @@ static comment = ctRegex!(`^%+ `);
** native headers
*** native header :native:header:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_3
#+BEGIN_SRC d
/+ header +/
static variable_doc_title = ctRegex!(`@title`);
@@ -112,7 +143,7 @@ static yaml_config = ctRegex!(`^[a-z]+\s*:\s*
** heading & paragraph operators :paragraph:operator:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_4
#+BEGIN_SRC d
/+ heading & paragraph operators +/
static heading_a = ctRegex!(`^:?[A][~] `, "m");
@@ -141,7 +172,7 @@ static para_inline_link_anchor = ctRegex!(`\*[~](?P<ancho
** blocked markup
*** blocked markup curly & tic :block:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_5
#+BEGIN_SRC d
/+ blocked markup +/
static block_open = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^`{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]");
@@ -150,7 +181,7 @@ static block_poem_open = ctRegex!("^((poem(?:[(][
*** blocked markup tic :block:tic:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_6
#+BEGIN_SRC d
/+ blocked markup tics +/
static block_tic_code_open = ctRegex!("^`{3} code(?:[.](?P<syntax>[a-z][0-9a-z#+_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?");
@@ -164,7 +195,7 @@ static block_tic_close = ctRegex!("^(`{3})$","m")
*** blocked markup curly :block:curly:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_7
#+BEGIN_SRC d
/+ blocked markup curly +/
static block_curly_code_open = ctRegex!(`^(?:code(?:[.](?P<syntax>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?[{][ ]*$)`);
@@ -185,14 +216,14 @@ static block_curly_table_special_markup = ctRegex!(`^[{]table[(](?
*** block sub-matches :block:
**** code
-#+NAME: meta_rgx
+#+NAME: meta_rgx_8
#+BEGIN_SRC d
static code_numbering = ctRegex!(`(?P<number>\blinenumber\b|\bnumber\b|\blnr\b)`);
#+END_SRC
**** table
-#+NAME: meta_rgx
+#+NAME: meta_rgx_9
#+BEGIN_SRC d
static table_head_instructions = ctRegex!(`(?:(?P<c_heading>h);)?(?:[ ]+c(?P<c_num>[0-9]):)?(?P<c_widths>(?:[, ]+[0-9]+[lr]?)+)`);
static table_col_widths_and_alignment = ctRegex!(`(?P<width>[0-9]+)(?P<align>[lr]?)`);
@@ -206,7 +237,7 @@ static table_col_separator_nl = ctRegex!(`[┊]$`, "mg")
** inline markup :inline:footnote:
*** footnotes & endnotes
-#+NAME: meta_rgx
+#+NAME: meta_rgx_10
#+BEGIN_SRC d
/+ inline markup footnotes endnotes +/
static inline_notes_curly_gen = ctRegex!(`~\{.+?\}~`, "m");
@@ -224,7 +255,7 @@ static note_ref = ctRegex!(`^\S+?noteref_(
*** links/ urls :inline:footnote:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_11
#+BEGIN_SRC d
static webserv_url_doc_root = ctRegex!(`(?P<url>(?P<domain>https?:\/\/[^ /]+)\/(?P<path>\S*))`, "mg");
static smid_inline_url_generic = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg");
@@ -237,7 +268,7 @@ static smid_inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(?P<co
*** images :images:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_12
#+BEGIN_SRC d
static image = ctRegex!(`([a-zA-Z0-9._-]+?\.(?:png|gif|jpg))`, "mg");
static smid_image = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[{┥](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))(?P<post>(?:.*?)\s*[}┝](?:image|┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg");
@@ -250,7 +281,7 @@ static smid_image_delimit = ctRegex!(`(?P<pre>^|[ ]
*** inline markup book index :inline:bookindex:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_13
#+BEGIN_SRC d
/+ inline markup book index +/
static book_index_item = ctRegex!(`^=\{\s*(?P<bookindex>.+?)\}$`, "m");
@@ -261,7 +292,7 @@ static book_index_item_close = ctRegex!(`^(.*?)\}$`, "m
** switch
*** switch off auto-heading number
-#+NAME: meta_rgx
+#+NAME: meta_rgx_14
#+BEGIN_SRC d
static auto_heading_numbering_lv1 = ctRegex!(`^1~`, "m");
static auto_heading_numbering_lv2 = ctRegex!(`^2~`, "m");
@@ -276,7 +307,7 @@ static auto_heading_numbering_off_lv4 = ctRegex!(`^4~\S*?-\s`, "m
** no object_number object :ocn:off:object:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_15
#+BEGIN_SRC d
/+ no object_number object +/
static object_number_off = ctRegex!(`~#[ ]*$`, "m");
@@ -287,7 +318,7 @@ static repeated_character_line_separator = ctRegex!(`^(?:[ ]*(?:(?:[.
** no object_number block :ocn:off:block:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_16
#+BEGIN_SRC d
/+ no object_number block +/
static object_number_off_block = ctRegex!(`^--~#$`);
@@ -298,7 +329,7 @@ static object_number_block_marks = ctRegex!(`^--[+~-]#$`);
** ignore outside code blocks :block:code:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_17
#+BEGIN_SRC d
/+ ignore outside code blocks +/
static skip_from_regular_parse = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`);
@@ -306,7 +337,7 @@ static skip_from_regular_parse = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`
** line & page breaks :break:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_18
#+BEGIN_SRC d
/+ line & page breaks +/
static break_string = ctRegex!(`』`);
@@ -314,7 +345,7 @@ static break_string = ctRegex!(`』`);
** biblio tags :biblio:tags:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_19
#+BEGIN_SRC d
/+ biblio tags +/
static biblio_tags = ctRegex!(`^(is|au|author_raw|author|author_arr|editor_raw|ed|editor_arr|ti|title|subtitle|fulltitle|lng|language|trans|src|jo|journal|in|vol|volume|edn|edition|yr|year|pl|place|pb|pub|publisher|url|pg|pages|note|short_name|id):\s+(.+)`);
@@ -323,7 +354,7 @@ static biblio_abbreviations = ctRegex!(`^(au|ed|ti|lng
** bookindex split :bookindex:split:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_20
#+BEGIN_SRC d
/+ bookindex split +/
static bi_main_terms_split = ctRegex!(`\s*;\s*`);
@@ -334,7 +365,7 @@ static bi_term_and_object_numbers_match = ctRegex!(`^(.+?)\+(\d+)`
** topic register split (document classify)
-#+NAME: meta_rgx
+#+NAME: meta_rgx_21
#+BEGIN_SRC d
static topic_register_main_terms_split = ctRegex!(`\s*;\s*`);
static topic_register_main_term_plus_rest_split = ctRegex!(`\s*:\s*`);
@@ -344,7 +375,7 @@ static topic_register_multiple_sub_terms_split = ctRegex!(`␣([^|␣]+(?
** language codes :language:codes:
-#+NAME: meta_rgx
+#+NAME: meta_rgx_22
#+BEGIN_SRC d
/+ language codes +/
auto language_code_and_filename =
@@ -367,8 +398,17 @@ http://dlang.org/phobos/std_regex.html
module doc_reform.io_out.rgx;
static template spineRgxOut() {
static struct RgxO {
- <<prgmkup_rgx>>
- <<sp_ch_xhtml_rgx>>
+ <<prgmkup_rgx_0>>
+ <<prgmkup_rgx_1>>
+ <<prgmkup_rgx_2>>
+ <<prgmkup_rgx_3>>
+ <<prgmkup_rgx_4>>
+ <<prgmkup_rgx_5>>
+ <<prgmkup_rgx_6>>
+ <<prgmkup_rgx_7>>
+ <<prgmkup_rgx_8>>
+ <<sp_ch_xhtml_rgx_0>>
+ <<sp_ch_xhtml_rgx_1>>
}
}
#+END_SRC
@@ -376,7 +416,7 @@ static template spineRgxOut() {
** special characters
*** xhtml special characters
-#+NAME: sp_ch_xhtml_rgx
+#+NAME: sp_ch_xhtml_rgx_0
#+BEGIN_SRC d
static xhtml_ampersand = ctRegex!(`[&]`, "m"); // &amp;
static xhtml_quotation = ctRegex!(`["]`, "m"); // &quot;
@@ -387,7 +427,7 @@ static xhtml_line_break = ctRegex!(` [\\]{2}`, "m"); /
*** latex special characters
-#+NAME: sp_ch_xhtml_rgx
+#+NAME: sp_ch_xhtml_rgx_1
#+BEGIN_SRC d
static latex_special_char = ctRegex!(`([%${}_#&\\])`);
static latex_special_char_for_escape = ctRegex!(`([%${}_#\\])`);
@@ -404,7 +444,7 @@ static latex_clean_bookindex_linebreak = ctRegex!(`\s*\\\\\\\\\s*`, "
* 2. ctRegex defaults shared by meta & output (generic)
** misc generic
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_0
#+BEGIN_SRC d
static newline = ctRegex!("\n", "mg");
static space = ctRegex!(`[ ]`, "mg");
@@ -415,7 +455,7 @@ static nbsp_char = ctRegex!(`░`, "mg");
** filename (& path) (including insert file) :insert:file:path:filename:
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_1
#+BEGIN_SRC d
static src_pth_sst_or_ssm = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.](?P<extension>ss[tm]))$`);
static src_pth_pod_sst_or_ssm = ctRegex!(`^(?P<podpath>[/]?(?:[a-zA-Z0-9._-]+/)*)media/text/[a-z]{2}/(?P<filename>[a-zA-Z0-9][a-zA-Z0-9._-]*?[.]ss[tm])$`);
@@ -436,7 +476,7 @@ static src_formalised_file_path_parts = ctRegex!(`(?P<pth>(?:[/a
*** inline breaks
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_2
#+BEGIN_SRC d
/+ line breaks +/
static br_empty_line = ctRegex!(`\n[ ]*\n`, "mg");
@@ -447,7 +487,7 @@ static br_nl = ctRegex!(`┙`, "mg");
*** inline (internal program) markup footnotes endnotes :inline:footnote:
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_3
#+BEGIN_SRC d
/+ inline markup footnotes endnotes +/
static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");
@@ -467,7 +507,7 @@ static inline_text_and_note_al_ = ctRegex!(`(.+?(?:【[*+]
*** inline links
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_4
#+BEGIN_SRC d
/+ inline markup links +/
static inline_image = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");
@@ -495,7 +535,7 @@ static quotation_mark_sql_insert_delimiter = ctRegex!("[']", "mg");
*** inline markup font face mod :inline:font:face:
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_5
#+BEGIN_SRC d
/+ inline markup font face mod +/
static inline_mark_emphasis = ctRegex!(`(?P<mark>[*])\{(?P<text>.+?)\}[*]`, "mg");
@@ -510,7 +550,7 @@ static inline_mark_mono = ctRegex!(`(?P<mark>[#])\{(
static inline_mark_cite = ctRegex!(`(?P<mark>["])\{(?P<text>.+?)\}["]`, "mg");
#+END_SRC
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_6
#+BEGIN_SRC d
static inline_faces_line = ctRegex!(`^[*!/_]_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`);
static inline_emphasis_line = ctRegex!(`^\*_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);
@@ -519,7 +559,7 @@ static inline_italics_line = ctRegex!(`^/_ (?P<text>.
static inline_underscore_line = ctRegex!(`^__ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);
#+END_SRC
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_7
#+BEGIN_SRC d
/+ inline markup font face mod +/
static inline_emphasis = ctRegex!(`[*]┨(?P<text>.+?)┣[*]`, "mg");
@@ -538,7 +578,7 @@ static inline_fontface_clean = ctRegex!(`[*!_/^,+■‖
*** table related
-#+NAME: prgmkup_rgx
+#+NAME: prgmkup_rgx_8
#+BEGIN_SRC d
/+ table delimiters +/
static table_delimiter_col = ctRegex!("[ ]*[┊][ ]*", "mg");
diff --git a/org/default_shared.org b/org/default_shared.org
index c776725..5b81f84 100644
--- a/org/default_shared.org
+++ b/org/default_shared.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/imports.org b/org/imports.org
index 0d8e20f..06ea0ff 100644
--- a/org/imports.org
+++ b/org/imports.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/in_source_files.org b/org/in_source_files.org
index db433b0..86b0607 100644
--- a/org/in_source_files.org
+++ b/org/in_source_files.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -47,13 +48,15 @@ import
<<imports_spine>>,
doc_reform.meta.rgx;
<<meta_config_file_in>>
-<<meta_config_file_hub>>
+<<meta_config_file_hub_0>>
+<<meta_config_file_hub_1>>
+<<meta_config_file_hub_2>>
#+END_SRC
*** 0. read config files (config local site & dr document make) (yaml)
**** 1. site configuration
-#+NAME: meta_config_file_hub
+#+NAME: meta_config_file_hub_0
#+BEGIN_SRC d
template readConfigSite() {
@system final auto readConfigSite(C,O)(C _conf_file_details, O _opt_action) {
@@ -167,7 +170,7 @@ webserv:
**** 2. document make/config
-#+NAME: meta_config_file_hub
+#+NAME: meta_config_file_hub_1
#+BEGIN_SRC d
static template readConfigDoc() {
import
@@ -223,7 +226,7 @@ static template readConfigDoc() {
*** YAML config (config local site & dr document make) :file:config:hub:
-#+NAME: meta_config_file_hub
+#+NAME: meta_config_file_hub_2
#+BEGIN_SRC d
static template configReadSiteYAML() {
import
diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org
index dbe3cc9..d1e21bc 100644
--- a/org/meta_conf_make_meta.org
+++ b/org/meta_conf_make_meta.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -84,12 +85,18 @@ import doc_reform.meta.conf_make_meta_structs;
#+BEGIN_SRC d :tangle "../src/doc_reform/meta/conf_make_meta_structs.d"
module doc_reform.meta.conf_make_meta_structs;
-<<meta_defaults_template_structs>>
+<<meta_defaults_template_structs_0>>
+<<meta_defaults_template_structs_1>>
+<<meta_defaults_template_structs_2>>
+<<meta_defaults_template_structs_3>>
+<<meta_defaults_template_structs_4>>
+<<meta_defaults_template_structs_5>>
+<<meta_defaults_template_structs_6>>
#+END_SRC
** initialize, imports etc.
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_0
#+BEGIN_SRC d
import
std.exception,
@@ -112,7 +119,7 @@ static auto mkup = InlineMarkup();
** struct Generic ConfComposite
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_1
#+BEGIN_SRC d
@safe string url_markup(string line) {
string line_ = line
@@ -224,7 +231,7 @@ struct confCompositeMakeBuild {
** initialize make & meta
*** composite make
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_2
#+BEGIN_SRC d
struct ConfCompositeMakeInit {
string[] bold;
@@ -249,7 +256,7 @@ struct ConfCompositeMakeInit {
*** struct: conf site local
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_3
#+BEGIN_SRC d
struct ConfCompositeSiteLocal {
string w_srv_http;
@@ -308,7 +315,7 @@ struct ConfCompositeSiteLocal {
*** struct: composite meta
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_4
#+BEGIN_SRC d
struct MetaComposite {
string classify_dewey;
@@ -368,7 +375,7 @@ struct MetaComposite {
*** composite structs
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_5
#+BEGIN_SRC d
struct ConfComposite {
MetaComposite meta;
@@ -380,7 +387,7 @@ struct ConfComposite {
*** JSONValue
-#+NAME: meta_defaults_template_structs
+#+NAME: meta_defaults_template_structs_6
#+BEGIN_SRC d
JSONValue config_jsonstr = `{
}`;
@@ -1451,7 +1458,9 @@ static template contentJSONtoSpineStruct() {
writeln("<< --------------------------- <<");
}
confCompositeMakeBuild _mk;
- <<json_objects>>
+ <<json_objects_0>>
+ <<json_objects_1>>
+ <<json_objects_2>>
return _struct_composite;
}
}
@@ -1459,7 +1468,7 @@ static template contentJSONtoSpineStruct() {
** make
-#+NAME: json_objects
+#+NAME: json_objects_0
#+BEGIN_SRC d
/+ make ------------------------------------------------------------------- +/
if ("make" in _json.object) {
@@ -1624,7 +1633,7 @@ if ("make" in _json.object) {
** conf
-#+NAME: json_objects
+#+NAME: json_objects_1
#+BEGIN_SRC d
/+ conf ------------------------------------------------------------------- +/
if ("webserv" in _json.object) {
@@ -1795,7 +1804,7 @@ if ("search" in _json.object) {
** meta
-#+NAME: json_objects
+#+NAME: json_objects_2
#+BEGIN_SRC d
/+ meta ------------------------------------------------------------------- +/
if (_struct_composite.meta.creator_author.empty) {
diff --git a/org/meta_debugs.org b/org/meta_debugs.org
index 6dc2ecf..7a2247f 100644
--- a/org/meta_debugs.org
+++ b/org/meta_debugs.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/metaverse.org b/org/metaverse.org
index 697dd5e..668ac15 100644
--- a/org/metaverse.org
+++ b/org/metaverse.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -34,7 +35,12 @@ template docAbstraction() {
/+ ↓ abstraction mixins +/
<<abs_top_mixins>>
/+ ↓ abstraction struct init +/
- <<abs_top_init_struct>>
+ <<abs_top_init_struct_0>>
+ <<abs_top_init_struct_1>>
+ <<abs_top_init_struct_2>>
+ <<abs_top_init_struct_3>>
+ <<abs_top_init_struct_4>>
+ <<abs_top_init_struct_5>>
<<abs_inline_para_tag_associations>>
/+ ↓ abstract marked up document +/
@system auto docAbstraction(CMM,Opt,Mf) (
@@ -46,14 +52,16 @@ template docAbstraction() {
) {
static auto rgx = RgxI();
/+ ↓ abstraction init +/
- <<abs_init_rest>>
+ <<abs_init_rest_0>>
+ <<abs_init_rest_1>>
/+ abstraction init ↑ +/
<<make_tests>>
/+ ↓ ↻ loop markup document/text line by line +/
srcDocLoop:
foreach (line; markup_sourcefile_content) { /+ ↓ markup document/text line by line +/
// "line" variable can be empty but should never be null
- <<abs_in_loop_body_00>>
+ <<abs_in_loop_body_00_0>>
+ <<abs_in_loop_body_00_1>>
if ( pith["block_is"] == eN.blk_is.code
&& pith["block_state"] == eN.blk_state.on
) {
@@ -61,25 +69,76 @@ template docAbstraction() {
} else if (!matchFirst(line, rgx.skip_from_regular_parse)) { /+ object other than "code block" object +/
/+ (includes regular text paragraph, headings & blocks other than code) +/
/+ heading, glossary, blurb, poem, group, block, quote, table +/
- <<abs_in_loop_body_non_code_obj>>
+ <<abs_in_loop_body_non_code_obj_0>>
+ <<abs_in_loop_body_non_code_obj_1>>
+ <<abs_in_loop_body_non_code_obj_2>>
+ <<abs_in_loop_body_non_code_obj_3>>
+ <<abs_in_loop_body_non_code_obj_4>>
+ <<abs_in_loop_body_non_code_obj_5>>
+ <<abs_in_loop_body_non_code_obj_6>>
+ <<abs_in_loop_body_non_code_obj_7>>
+ <<abs_in_loop_body_non_code_obj_8>>
+ <<abs_in_loop_body_non_code_obj_9>>
} else { /+ not within a block group +/
<<abs_in_loop_body_open_block_obj_assert>>
if (line.matchFirst(rgx.block_open)) {
<<abs_in_loop_body_open_block_obj>>
} else if (!line.empty) { /+ line not empty +/
/+ non blocks (headings, paragraphs) & closed blocks +/
- <<abs_in_loop_body_not_block_obj>>
+ <<abs_in_loop_body_not_block_obj_0>>
+ <<abs_in_loop_body_not_block_obj_1>>
+ <<abs_in_loop_body_not_block_obj_2>>
+ <<abs_in_loop_body_not_block_obj_3>>
+ <<abs_in_loop_body_not_block_obj_4>>
+ <<abs_in_loop_body_not_block_obj_5>>
+ <<abs_in_loop_body_not_block_obj_6>>
} else if (pith["block_state"] == eN.blk_state.closing) { /+ line empty, with blocks flag +/
<<abs_in_loop_body_not_block_obj_line_empty_blocks_flags>>
} else { /+ line.empty, post contents, empty variables: +/
- <<abs_in_loop_body_not_block_obj_line_empty>>
+ <<abs_in_loop_body_not_block_obj_line_empty_0>>
+ <<abs_in_loop_body_not_block_obj_line_empty_1>>
+ <<abs_in_loop_body_not_block_obj_line_empty_2>>
} // close else for line empty
} // close else for not the above
} // close after non code, other blocks or regular text
<<abs_in_loop_body_01>>
} /+ ← srcDocLoop closed: loop markup document/text line by line +/
/+ ↓ post loop markup document/text +/
- <<abs_post>>
+ <<abs_post_0>>
+ <<abs_post_1>>
+ <<abs_post_2>>
+ <<abs_post_3>>
+ <<abs_post_4>>
+ <<abs_post_5>>
+ <<abs_post_6>>
+ <<abs_post_7>>
+ <<abs_post_8>>
+ <<abs_post_9>>
+ <<abs_post_10>>
+ <<abs_post_11>>
+ <<abs_post_12>>
+ <<abs_post_13>>
+ <<abs_post_14>>
+ <<abs_post_15>>
+ <<abs_post_16>>
+ <<abs_post_17>>
+ <<abs_post_18>>
+ <<abs_post_19>>
+ <<abs_post_20>>
+ <<abs_post_21>>
+ <<abs_post_22>>
+ <<abs_post_23>>
+ <<abs_post_24>>
+ <<abs_post_25>>
+ <<abs_post_26>>
+ <<abs_post_27>>
+ <<abs_post_28>>
+ <<abs_post_29>>
+ <<abs_post_30>>
+ <<abs_post_31>>
+ <<abs_post_32>>
+ <<abs_post_33>>
+ <<abs_post_34>>
<<abs_post_doc_reloop_processing>>
<<abs_struct_doc_has>>
<<abs_return_tuple>>
@@ -89,48 +148,117 @@ template docAbstraction() {
<<abs_functions_object_reset>>
<<abs_functions_header_set_common>>
<<abs_functions_ocn_status>>
- <<abs_functions_substitutions>>
- <<abs_functions_block>>
+ <<abs_functions_substitutions_0>>
+ <<abs_functions_substitutions_1>>
+ <<abs_functions_block_0>>
+ <<abs_functions_block_1>>
+ <<abs_functions_block_2>>
+ <<abs_functions_block_3>>
+ <<abs_functions_block_4>>
+ <<abs_functions_block_5>>
+ <<abs_functions_block_6>>
+ <<abs_functions_block_7>>
+ <<abs_functions_block_8>>
+ <<abs_functions_block_9>>
+ <<abs_functions_block_10>>
+ <<abs_functions_block_11>>
+ <<abs_functions_block_12>>
+ <<abs_functions_block_13>>
+ <<abs_functions_block_14>>
+ <<abs_functions_block_15>>
<<abs_functions_block_quote>>
<<abs_functions_block_group>>
<<abs_functions_block_block>>
<<abs_functions_block_poem>>
<<abs_functions_block_code>>
<<abs_functions_block_table>>
- <<abs_functions_block_biblio>>
- <<abs_functions_block_line_status_empty>>
+ <<abs_functions_block_biblio_0>>
+ <<abs_functions_block_biblio_1>>
+ <<abs_functions_block_line_status_empty_0>>
+ <<abs_functions_block_line_status_empty_1>>
+ <<abs_functions_block_line_status_empty_2>>
+ <<abs_functions_block_line_status_empty_3>>
+ <<abs_functions_block_line_status_empty_4>>
+ <<abs_functions_block_line_status_empty_5>>
+ <<abs_functions_block_line_status_empty_6>>
+ <<abs_functions_block_line_status_empty_7>>
+ <<abs_functions_block_line_status_empty_8>>
<<abs_functions_book_index>>
- <<abs_functions_heading>>
- <<abs_functions_para>>
- <<abs_functions_table>>
+ <<abs_functions_heading_0>>
+ <<abs_functions_heading_1>>
+ <<abs_functions_heading_2>>
+ <<abs_functions_para_0>>
+ <<abs_functions_para_1>>
+ <<abs_functions_table_0>>
+ <<abs_functions_table_1>>
+ <<abs_functions_table_2>>
+ <<abs_functions_table_3>>
/+ abstraction functions ↑ +/
/+ ↓ abstraction function emitters +/
<<meta_emitters_ocn>>
/+ +/
- <<meta_emitters_obj_inline_markup_munge>>
+ <<meta_emitters_obj_inline_markup_munge_0>>
+ <<meta_emitters_obj_inline_markup_munge_1>>
+ <<meta_emitters_obj_inline_markup_munge_2>>
+ <<meta_emitters_obj_inline_markup_munge_3>>
+ <<meta_emitters_obj_inline_markup_munge_4>>
+ <<meta_emitters_obj_inline_markup_munge_5>>
+ <<meta_emitters_obj_inline_markup_munge_6>>
+ <<meta_emitters_obj_inline_markup_munge_7>>
+ <<meta_emitters_obj_inline_markup_munge_8>>
+ <<meta_emitters_obj_inline_markup_munge_9>>
+ <<meta_emitters_obj_inline_markup_munge_10>>
+ <<meta_emitters_obj_inline_markup_munge_11>>
+ <<meta_emitters_obj_inline_markup_munge_12>>
+ <<meta_emitters_obj_inline_markup_munge_13>>
<<meta_emitters_obj_inline_markup>>
<<meta_emitters_obj_inline_markup_and_anchor_tags_and_misc>>
<<meta_emitters_obj_inline_markup_table_of_contents>>
<<meta_emitters_obj_inline_markup_private>>
- <<meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>>
+ <<meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_0>>
+ <<meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_1>>
<<meta_emitters_obj_inline_markup_close>>
/+ +/
<<meta_emitters_obj_attributes>>
<<meta_emitters_obj_attributes_public>>
<<meta_emitters_obj_attributes_private>>
- <<meta_emitters_obj_attributes_private_an_attribute>>
+ <<meta_emitters_obj_attributes_private_an_attribute_0>>
+ <<meta_emitters_obj_attributes_private_an_attribute_1>>
+ <<meta_emitters_obj_attributes_private_an_attribute_2>>
+ <<meta_emitters_obj_attributes_private_an_attribute_3>>
+ <<meta_emitters_obj_attributes_private_an_attribute_4>>
+ <<meta_emitters_obj_attributes_private_an_attribute_5>>
+ <<meta_emitters_obj_attributes_private_an_attribute_6>>
+ <<meta_emitters_obj_attributes_private_an_attribute_7>>
+ <<meta_emitters_obj_attributes_private_an_attribute_8>>
+ <<meta_emitters_obj_attributes_private_an_attribute_9>>
<<meta_emitters_obj_attributes_private_json>>
<<meta_emitters_obj_attributes_private_close>>
/+ +/
<<meta_emitters_book_index_nugget>>
<<meta_emitters_book_index_report_indented>>
- <<meta_emitters_book_index_report_section>>
+ <<meta_emitters_book_index_report_section_0>>
+ <<meta_emitters_book_index_report_section_1>>
+ <<meta_emitters_book_index_report_section_2>>
+ <<meta_emitters_book_index_report_section_3>>
/+ +/
- <<meta_emitters_endnotes>>
+ <<meta_emitters_endnotes_0>>
+ <<meta_emitters_endnotes_1>>
+ <<meta_emitters_endnotes_2>>
+ <<meta_emitters_endnotes_3>>
+ <<meta_emitters_endnotes_4>>
/+ +/
- <<meta_emitters_bibliography>>
+ <<meta_emitters_bibliography_0>>
+ <<meta_emitters_bibliography_1>>
+ <<meta_emitters_bibliography_2>>
+ <<meta_emitters_bibliography_3>>
+ <<meta_emitters_bibliography_4>>
+ <<meta_emitters_bibliography_5>>
/+ +/
- <<meta_emitters_metadata>>
+ <<meta_emitters_metadata_0>>
+ <<meta_emitters_metadata_1>>
+ <<meta_emitters_metadata_2>>
+ <<meta_emitters_metadata_3>>
/+ abstraction functions emitters ↑ +/
/+ ↓ abstraction functions assertions +/
<<abs_functions_assertions>>
@@ -170,7 +298,7 @@ mixin spineRgxIn;
*** initialize :initialize:
**** declare enum
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_0
#+BEGIN_SRC d
@safe static auto eN() {
struct _e {
@@ -228,7 +356,7 @@ mixin spineRgxIn;
**** initialize general
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_1
#+BEGIN_SRC d
/+ initialize +/
ObjGenericComposite[] the_table_of_contents_section;
@@ -320,7 +448,7 @@ enum DomTags { none, open, close, close_and_open, open_still, }
**** method heading ancestors
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_2
#+BEGIN_SRC d
@safe pure ObjGenericComposite obj_heading_ancestors()(
ObjGenericComposite obj,
@@ -379,7 +507,7 @@ enum DomTags { none, open, close, close_and_open, open_still, }
**** method dom markup tags
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_3
#+BEGIN_SRC d
@safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()(
ObjGenericComposite obj,
@@ -429,7 +557,7 @@ enum DomTags { none, open, close, close_and_open, open_still, }
**** method dom collapsed tags
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_4
#+BEGIN_SRC d
@safe pure ObjGenericComposite obj_dom_set_collapsed_tags()(
ObjGenericComposite obj,
@@ -479,7 +607,7 @@ enum DomTags { none, open, close, close_and_open, open_still, }
**** method ocn emit
-#+NAME: abs_top_init_struct
+#+NAME: abs_top_init_struct_5
#+BEGIN_SRC d
@safe static auto ocn_emit(int ocn_status_flag) {
return object_citation_number.ocn_emitter(ocn_status_flag);
@@ -568,7 +696,7 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio
*** scope
-#+NAME: abs_init_rest
+#+NAME: abs_init_rest_0
#+BEGIN_SRC d
scope(success) {
}
@@ -589,7 +717,7 @@ scope(exit) {
*** init rest
-#+NAME: abs_init_rest
+#+NAME: abs_init_rest_1
#+BEGIN_SRC d
mixin spineNode;
auto node_para_int_ = node_metadata_para_int;
@@ -747,7 +875,7 @@ debug (substitutions) {
** 2. ↻ *LOOP* _loop: process document body_ [+6] :loop:
*** Loop scope :scope:
-#+NAME: abs_in_loop_body_00
+#+NAME: abs_in_loop_body_00_0
#+BEGIN_SRC d
/+ scope +/
scope(exit) {
@@ -775,7 +903,7 @@ debug(srclines) {
*** check whether object number is on or turned off :ocn:
-#+NAME: abs_in_loop_body_00
+#+NAME: abs_in_loop_body_00_1
#+BEGIN_SRC d
if (!line.empty) {
pith = line._check_ocn_status_(pith);
@@ -795,7 +923,7 @@ continue;
**** _non code objects_ (non-code blocks & regular text: by line) [+4] :non_code:
***** inline fontface markup
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_0
#+BEGIN_SRC d
line = line.inline_markup_faces; // by text line (rather than by text object), linebreaks in para problematic
#+END_SRC
@@ -803,7 +931,7 @@ line = line.inline_markup_faces; // by text line (rather than by text object), l
***** in section (biblio, glossary, blurb) +(block group)+ [+1] :block:active:
****** in section: biblio :biblio:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_1
#+BEGIN_SRC d
if (line.matchFirst(rgx.heading_biblio)
|| (pith["section"] == eN.sect.bibliography
@@ -832,7 +960,7 @@ if there is a glossary section you need to:
- need indentation and regular paragraph inline markup
- reconstitute the document with the glossary section following the endnotes
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_2
#+BEGIN_SRC d
} else if (line.matchFirst(rgx.heading_glossary)
|| (pith["section"] == eN.sect.glossary
@@ -940,7 +1068,7 @@ if there is a blurb section you need to:
- need regular paragraph inline markup
- reconstitute the document with the blurb section at the very end of the doucment
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_3
#+BEGIN_SRC d
} else if (line.matchFirst(rgx.heading_blurb)
|| (pith["section"] == eN.sect.blurb
@@ -1093,14 +1221,14 @@ if there is a blurb section you need to:
***** in blocks [+1] :block:active:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_4
#+BEGIN_SRC d
} else if (pith["block_state"] == eN.blk_state.on) {
#+END_SRC
****** in block: quote :quote:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_5
#+BEGIN_SRC d
if (pith["block_is"] == eN.blk_is.quote) {
line = line
@@ -1112,7 +1240,7 @@ if there is a blurb section you need to:
****** in block: group :group:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_6
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.group) {
line = line
@@ -1125,7 +1253,7 @@ if there is a blurb section you need to:
****** in block: block :block:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_7
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.block) {
line = line
@@ -1141,7 +1269,7 @@ if there is a blurb section you need to:
****** in block: poem :poem:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_8
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.poem) {
an_object = line.flow_txt_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg);
@@ -1150,7 +1278,7 @@ if there is a blurb section you need to:
****** in block: table :table:
-#+NAME: abs_in_loop_body_non_code_obj
+#+NAME: abs_in_loop_body_non_code_obj_9
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.table) {
an_object = line.flow_txt_block_table(an_object, pith, conf_make_meta);
@@ -1186,7 +1314,7 @@ continue;
****** line not empty [+2]
******* asserts :assert:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_0
#+BEGIN_SRC d
assert(
!line.empty,
@@ -1214,7 +1342,7 @@ if (pith["block_state"] == eN.blk_state.closing) {
******* book index :bookindex:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_1
#+BEGIN_SRC d
if (line.matchFirst(rgx.book_index_item)
|| line.matchFirst(rgx.book_index_item_open)
@@ -1224,14 +1352,14 @@ if (line.matchFirst(rgx.book_index_item)
******* not book index [+1]
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_2
#+BEGIN_SRC d
} else { /+ not book_index +/
#+END_SRC
******** matched: comment :comment:match:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_3
#+BEGIN_SRC d
an_object_key = "body_nugget";
if (auto m = line.matchFirst(rgx.comment)) { /+ matched comment +/
@@ -1253,7 +1381,7 @@ if (line.matchFirst(rgx.book_index_item)
******** flag !set & line !exist: heading or para :heading:paragraph:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_4
#+BEGIN_SRC d
} else if ((line_occur["para"] == eN.bi.off
&& line_occur["heading"] == eN.bi.off)
@@ -1298,7 +1426,7 @@ if (line.matchFirst(rgx.book_index_item)
******** line exist: heading :heading:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_5
#+BEGIN_SRC d
} else if (line_occur["heading"] > eN.bi.off) { /+ heading +/
debug(heading) {
@@ -1310,7 +1438,7 @@ if (line.matchFirst(rgx.book_index_item)
******** line exist: para :para:
-#+NAME: abs_in_loop_body_not_block_obj
+#+NAME: abs_in_loop_body_not_block_obj_6
#+BEGIN_SRC d
} else if (line_occur["para"] > eN.bi.off) { /+ paragraph +/
debug(para) {
@@ -1347,7 +1475,7 @@ an_object = line.flow_block_flag_line_empty_(
****** line empty [+1]
******* assert line empty :assert:
-#+NAME: abs_in_loop_body_not_block_obj_line_empty
+#+NAME: abs_in_loop_body_not_block_obj_line_empty_0
#+BEGIN_SRC d
assert(
line.empty,
@@ -1362,7 +1490,7 @@ assert(
******* heading object :heading:object:
-#+NAME: abs_in_loop_body_not_block_obj_line_empty
+#+NAME: abs_in_loop_body_not_block_obj_line_empty_1
#+BEGIN_SRC d
if (_new_doc) {
tag_assoc = tag_assoc.init;
@@ -1496,7 +1624,7 @@ if (pith["txt_is"] == eN.txt_is.heading
******* paragraph object :paragraph:object:
-#+NAME: abs_in_loop_body_not_block_obj_line_empty
+#+NAME: abs_in_loop_body_not_block_obj_line_empty_2
#+BEGIN_SRC d
} else if (pith["txt_is"] == eN.txt_is.para
&& line_occur["para"] > eN.bi.off
@@ -1627,7 +1755,7 @@ if (the_document_body_section.length > 0) {
*** tie up preparation of document sections
**** endnotes section (scroll & seg) :endnotes:
-#+NAME: abs_post
+#+NAME: abs_post_0
#+BEGIN_SRC d
auto en_tuple
= note_section.endnote_objects(obj_cite_digits, opt_action);
@@ -1647,7 +1775,7 @@ debug(endnotes) {
**** no glossary section? :glossary:
-#+NAME: abs_post
+#+NAME: abs_post_1
#+BEGIN_SRC d
if (an_object["glossary_nugget"].length == 0) {
comp_obj_heading_ = comp_obj_heading_.init;
@@ -1676,7 +1804,7 @@ debug(glossary) {
**** bibliography section (objects) :bibliography:
-#+NAME: abs_post
+#+NAME: abs_post_2
#+BEGIN_SRC d
auto biblio_unsorted_incomplete = biblio_arr_json.dup;
auto biblio = Bibliography();
@@ -1684,7 +1812,7 @@ auto biblio_ordered
= biblio.flow_bibliography_(biblio_unsorted_incomplete, bib_arr_json);
#+END_SRC
-#+NAME: abs_post
+#+NAME: abs_post_3
#+BEGIN_SRC d
if (biblio_ordered.length > 0) {
{
@@ -1792,7 +1920,7 @@ if (biblio_ordered.length > 0) {
}
#+END_SRC
-#+NAME: abs_post
+#+NAME: abs_post_4
#+BEGIN_SRC d
debug(bibliosection) {
foreach (o; the_bibliography_section) {
@@ -1837,7 +1965,7 @@ JSONValue biblio_entry_tags_jsonstr = `{
**** bookindex section (scroll & seg) :book:index:
-#+NAME: abs_post
+#+NAME: abs_post_5
#+BEGIN_SRC d
auto bi = BookIndexReportSection();
auto bi_tuple
@@ -1858,7 +1986,7 @@ debug(bookindex) {
**** no blurb section? :blurb:
-#+NAME: abs_post
+#+NAME: abs_post_6
#+BEGIN_SRC d
if (an_object["blurb_nugget"].length == 0) {
comp_obj_heading_ = comp_obj_heading_.init;
@@ -1889,7 +2017,7 @@ debug(blurb) {
**** toc backmatter, table of contents backmatter (scroll & seg) :contents:
-#+NAME: abs_post
+#+NAME: abs_post_7
#+BEGIN_SRC d
indent = [
"hang_position" : 1,
@@ -1990,7 +2118,7 @@ debug(toc) {
**** doc head (separate document head from body, make space for toc)
-#+NAME: abs_post
+#+NAME: abs_post_8
#+BEGIN_SRC d
the_document_head_section ~= the_document_body_section[0];
the_document_body_section = the_document_body_section[1..$];
@@ -2014,7 +2142,7 @@ NOTE there are issues attempting to do this on first pass as:
***** Methods
****** get ancestors markup
-#+NAME: abs_post
+#+NAME: abs_post_9
#+BEGIN_SRC d
@safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) {
if (obj.metainfo.is_a == "heading") {
@@ -2107,7 +2235,7 @@ NOTE there are issues attempting to do this on first pass as:
****** get ancestors collapsed
-#+NAME: abs_post
+#+NAME: abs_post_10
#+BEGIN_SRC d
@safe int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) {
if (obj.metainfo.is_a == "heading") {
@@ -2200,7 +2328,7 @@ NOTE there are issues attempting to do this on first pass as:
- substantive object numbers already exist
- number un-numbered non-substantive text
-#+NAME: abs_post
+#+NAME: abs_post_11
#+BEGIN_SRC d
/+ multiple 1~ levels, loop through document body +/
if (the_document_body_section.length > 1) {
@@ -2228,7 +2356,7 @@ if (the_document_body_section.length > 1) {
***** ↻ Loop section: endnotes [en]
-#+NAME: abs_post
+#+NAME: abs_post_12
#+BEGIN_SRC d
if (the_endnotes_section.length > 1) {
segnames["html"] ~= "endnotes";
@@ -2249,7 +2377,7 @@ if (the_endnotes_section.length > 1) {
***** ↻ Loop section: glossary [gl]
-#+NAME: abs_post
+#+NAME: abs_post_13
#+BEGIN_SRC d
if (the_glossary_section.length > 1) {
segnames["html"] ~= "glossary";
@@ -2270,7 +2398,7 @@ if (the_glossary_section.length > 1) {
***** ↻ Loop section: bibliography [bb]
-#+NAME: abs_post
+#+NAME: abs_post_14
#+BEGIN_SRC d
if (the_bibliography_section.length > 1) {
segnames["html"] ~= "bibliography";
@@ -2291,7 +2419,7 @@ if (the_bibliography_section.length > 1) {
***** ↻ Loop section: book index [bi]
-#+NAME: abs_post
+#+NAME: abs_post_15
#+BEGIN_SRC d
if (the_bookindex_section.length > 1) {
segnames["html"] ~= "bookindex";
@@ -2312,7 +2440,7 @@ if (the_bookindex_section.length > 1) {
***** ↻ Loop section: blurb [bl]
-#+NAME: abs_post
+#+NAME: abs_post_16
#+BEGIN_SRC d
if (the_blurb_section.length > 1) {
segnames["html"] ~= "blurb";
@@ -2372,7 +2500,7 @@ Build here:
***** Methods
****** decendants
-#+NAME: abs_post
+#+NAME: abs_post_17
#+BEGIN_SRC d
@safe auto get_decendants()(ObjGenericComposite[] document_sections) {
int[string] _heading_ocn_decendants;
@@ -2425,7 +2553,7 @@ Build here:
****** images: extract
-#+NAME: abs_post
+#+NAME: abs_post_18
#+BEGIN_SRC d
string[] _images;
@safe string[] extract_images()(string content_block) {
@@ -2440,7 +2568,7 @@ string[] segnames_0_to_4;
****** images: dimensions
-#+NAME: abs_post
+#+NAME: abs_post_19
#+BEGIN_SRC d
@system auto _image_dimensions(O,M)(O obj, M manifested) {
if (obj.has.image_without_dimensions) {
@@ -2493,7 +2621,7 @@ string[] segnames_0_to_4;
- book index
- footnotes and footnote numbers
-#+NAME: abs_post
+#+NAME: abs_post_20
#+BEGIN_SRC d
@safe auto _links(O)(O obj) {
if (auto m = obj.text.match(rgx.inline_link_stow_uri)) {
@@ -2518,7 +2646,7 @@ string[] segnames_0_to_4;
***** ↻ Loop section: head
-#+NAME: abs_post
+#+NAME: abs_post_21
#+BEGIN_SRC d
foreach (ref obj; the_document_head_section) {
if (obj.metainfo.is_a == "heading") {
@@ -2550,7 +2678,7 @@ foreach (ref obj; the_document_head_section) {
***** ↻ Loop section: toc [to]
-#+NAME: abs_post
+#+NAME: abs_post_22
#+BEGIN_SRC d
if (the_table_of_contents_section.length > 1) {
/+ scroll +/
@@ -2580,7 +2708,7 @@ if (the_table_of_contents_section.length > 1) {
***** ↻ Loop section: document body [bd]
-#+NAME: abs_post
+#+NAME: abs_post_23
#+BEGIN_SRC d
/+ multiple 1~ levels, loop through document body +/
if (the_document_body_section.length > 1) {
@@ -2631,7 +2759,7 @@ auto image_list = (_images.sort()).uniq;
- endnotes have their own number, (also use in node) and they belong to calling object
-#+NAME: abs_post
+#+NAME: abs_post_24
#+BEGIN_SRC d
/+ optional only one 1~ level +/
if (the_endnotes_section.length > 1) {
@@ -2676,7 +2804,7 @@ if (the_endnotes_section.length > 1) {
- add glossary numbering, (also use in node) no need to show in text
-#+NAME: abs_post
+#+NAME: abs_post_25
#+BEGIN_SRC d
/+ optional only one 1~ level +/
if (the_glossary_section.length > 1) {
@@ -2721,7 +2849,7 @@ if (the_glossary_section.length > 1) {
- add bibliography numbering, (also use in node) no need to show in text
-#+NAME: abs_post
+#+NAME: abs_post_26
#+BEGIN_SRC d
/+ optional only one 1~ level +/
if (the_bibliography_section.length > 1) {
@@ -2766,7 +2894,7 @@ if (the_bibliography_section.length > 1) {
- add book index numbering?, (also use in node) no need to show in text
-#+NAME: abs_post
+#+NAME: abs_post_27
#+BEGIN_SRC d
/+ optional only one 1~ level +/
int ocn_ = obj_cite_digits.object_number;
@@ -2821,7 +2949,7 @@ if (the_bookindex_section.length > 1) { /
***** ↻ Loop section: blurb [bl]
-#+NAME: abs_post
+#+NAME: abs_post_28
#+BEGIN_SRC d
/+ optional only one 1~ level +/
if (the_blurb_section.length > 1) {
@@ -2864,7 +2992,7 @@ if (the_blurb_section.length > 1) {
***** ↻ Loop sections: get decendants
-#+NAME: abs_post
+#+NAME: abs_post_29
#+BEGIN_SRC d
if (the_document_body_section.length > 1) {
auto pairs = get_decendants(
@@ -2962,7 +3090,7 @@ if (the_document_body_section.length > 1) {
**** TODO update BUG?
-#+NAME: abs_post
+#+NAME: abs_post_30
#+BEGIN_SRC d
/+ TODO
- note create/insert heading object sole purpose eof close all open tags
@@ -3000,7 +3128,7 @@ comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt);
** 4. _return document tuple_ :post:
*** _the document_ :document:
-#+NAME: abs_post
+#+NAME: abs_post_31
#+BEGIN_SRC d
ObjGenericComposite[][string] document_the = [
"head": the_document_head_section,
@@ -3020,7 +3148,7 @@ ObjGenericComposite[][string] document_the = [
*** document _section keys_ sequence
-#+NAME: abs_post
+#+NAME: abs_post_32
#+BEGIN_SRC d
string[][string] document_section_keys_sequenced = [
"scroll": ["head", "toc", "body",],
@@ -3068,7 +3196,7 @@ if ((opt_action.html)
*** dup
-#+NAME: abs_post
+#+NAME: abs_post_33
#+BEGIN_SRC d
string[] segnames_4 = segnames["html"].dup;
string[] segnames_lv1_to_4 = segnames["epub"].dup;
@@ -3080,7 +3208,7 @@ debug(segnames) {
*** clean out structure
-#+NAME: abs_post
+#+NAME: abs_post_34
#+BEGIN_SRC d
destroy(the_document_head_section);
destroy(the_table_of_contents_section);
@@ -3270,7 +3398,7 @@ functions used in document abstraction
*** make substitutions
**** project
-#+NAME: abs_functions_substitutions
+#+NAME: abs_functions_substitutions_0
#+BEGIN_SRC d
@safe char[] _doc_header_and_make_substitutions_(CMM)(
char[] line,
@@ -3291,7 +3419,7 @@ functions used in document abstraction
**** fontface
-#+NAME: abs_functions_substitutions
+#+NAME: abs_functions_substitutions_1
#+BEGIN_SRC d
@safe char[] _doc_header_and_make_substitutions_fontface_(CMM)(
char[] line,
@@ -3324,7 +3452,7 @@ functions used in document abstraction
**** block start (open) block :start:
***** { block starts function
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_0
#+BEGIN_SRC d
@safe void flow_txt_block_start()(
char[] line,
@@ -3336,14 +3464,14 @@ functions used in document abstraction
****** block (various) curly open :curly:
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_1
#+BEGIN_SRC d
static auto rgx = RgxI();
#+END_SRC
******* code
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_2
#+BEGIN_SRC d
if (auto m = line.matchFirst(rgx.block_curly_code_open)) {
dochas["codeblock"]++;
@@ -3363,7 +3491,7 @@ functions used in document abstraction
******* poem
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_3
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_poem_open)) {
dochas["poem"]++;
@@ -3385,7 +3513,7 @@ functions used in document abstraction
******* group
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_4
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_group_open)) {
dochas["group"]++;
@@ -3405,7 +3533,7 @@ functions used in document abstraction
******* block
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_5
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_block_open)) {
dochas["block"]++;
@@ -3425,7 +3553,7 @@ functions used in document abstraction
******* quote
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_6
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_quote_open)) {
dochas["quote"]++;
@@ -3445,7 +3573,7 @@ functions used in document abstraction
******* table
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_7
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_table_open)) { /+ curly table open +/
debug(table) { // table (curly) open
@@ -3464,7 +3592,7 @@ functions used in document abstraction
******* table special
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_8
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_curly_table_special_markup)) { /+ table: special table block markup syntax! +/
dochas["table"]++;
@@ -3478,7 +3606,7 @@ functions used in document abstraction
****** block (various) tic open :tic:
******* code
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_9
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_code_open)) {
dochas["codeblock"]++;
@@ -3498,7 +3626,7 @@ functions used in document abstraction
******* poem
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_10
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_poem_open)) {
dochas["poem"]++;
@@ -3520,7 +3648,7 @@ functions used in document abstraction
******* group
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_11
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_group_open)) {
dochas["group"]++;
@@ -3540,7 +3668,7 @@ functions used in document abstraction
******* block
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_12
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_block_open)) {
dochas["block"]++;
@@ -3560,7 +3688,7 @@ functions used in document abstraction
******* quote
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_13
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_quote_open)) {
dochas["quote"]++;
@@ -3580,7 +3708,7 @@ functions used in document abstraction
******* table
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_14
#+BEGIN_SRC d
} else if (auto m = line.matchFirst(rgx.block_tic_table_open)) { /+ tic table open +/
debug(table) { // table (tic) open
@@ -3600,7 +3728,7 @@ functions used in document abstraction
***** }
-#+NAME: abs_functions_block
+#+NAME: abs_functions_block_15
#+BEGIN_SRC d
}
#+END_SRC
@@ -3659,7 +3787,7 @@ functions used in document abstraction
***** biblio block :biblio:
****** biblio tag map
-#+NAME: abs_functions_block_biblio
+#+NAME: abs_functions_block_biblio_0
#+BEGIN_SRC d
@safe final string biblio_tag_map()(string abr) {
auto btm = [
@@ -3711,7 +3839,7 @@ final string biblio_tag_map_()(string abr) {
****** biblio block
-#+NAME: abs_functions_block_biblio
+#+NAME: abs_functions_block_biblio_1
#+BEGIN_SRC d
@system void flow_txt_block_biblio(
char[] line,
@@ -4325,7 +4453,7 @@ process and use an_object["table_head"] (then empty it)
- table_column_widths, int[] column widths (as given or calculate average)
- show table walls, bool
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_0
#+BEGIN_SRC d
@system void flow_table_closed_make_special_notation_table_(N,CMM)(
char[] line,
@@ -4374,7 +4502,7 @@ process and use an_object["table_head"] (then empty it)
***** { line empty, _make block_
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_1
#+BEGIN_SRC d
@system string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)(
char[] line,
@@ -4404,7 +4532,7 @@ process and use an_object["table_head"] (then empty it)
****** make: quote block
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_2
#+BEGIN_SRC d
if (pith["block_state"] == eN.blk_state.closing) {
if (pith["block_is"] == eN.blk_is.quote) {
@@ -4463,7 +4591,7 @@ process and use an_object["table_head"] (then empty it)
****** make: group block
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_3
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.group) {
obj_cite_digits = ocn_emit(pith["ocn"]);
@@ -4521,7 +4649,7 @@ process and use an_object["table_head"] (then empty it)
****** make: block
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_4
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.block) {
obj_cite_digits = ocn_emit(pith["ocn"]);
@@ -4578,7 +4706,7 @@ process and use an_object["table_head"] (then empty it)
****** make: poem
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_5
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.poem) {
an_object["bookindex_nugget"]
@@ -4622,7 +4750,7 @@ process and use an_object["table_head"] (then empty it)
****** make: code block
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_6
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.code) {
obj_cite_digits = ocn_emit(pith["ocn"]);
@@ -4680,7 +4808,7 @@ process and use an_object["table_head"] (then empty it)
****** make: table
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_7
#+BEGIN_SRC d
} else if (pith["block_is"] == eN.blk_is.table) {
comp_obj_block = comp_obj_block.init;
@@ -4730,7 +4858,7 @@ process and use an_object["table_head"] (then empty it)
***** }
-#+NAME: abs_functions_block_line_status_empty
+#+NAME: abs_functions_block_line_status_empty_8
#+BEGIN_SRC d
}
return an_object;
@@ -4796,7 +4924,7 @@ process and use an_object["table_head"] (then empty it)
*** heading or paragraph :heading:paragraph:
**** heading found :heading:
-#+NAME: abs_functions_heading
+#+NAME: abs_functions_heading_0
#+BEGIN_SRC d
@safe string[string] flow_heading_found_()(
char[] line,
@@ -4883,7 +5011,7 @@ process and use an_object["table_head"] (then empty it)
**** heading make set :heading:
-#+NAME: abs_functions_heading
+#+NAME: abs_functions_heading_1
#+BEGIN_SRC d
@safe char[] flow_heading_make_set_()(
char[] line,
@@ -4945,7 +5073,7 @@ process and use an_object["table_head"] (then empty it)
**** heading match :heading:
-#+NAME: abs_functions_heading
+#+NAME: abs_functions_heading_2
#+BEGIN_SRC d
@safe string[string] flow_heading_matched_(CMM)(
char[] line,
@@ -5101,7 +5229,7 @@ process and use an_object["table_head"] (then empty it)
**** para match :para:
-#+NAME: abs_functions_para
+#+NAME: abs_functions_para_0
#+BEGIN_SRC d
@safe string[string] flow_para_match_()(
char[] line,
@@ -5160,7 +5288,7 @@ process and use an_object["table_head"] (then empty it)
**** text font face
-#+NAME: abs_functions_para
+#+NAME: abs_functions_para_1
#+BEGIN_SRC d
@safe char[] font_faces_line()(
char[] textline,
@@ -5197,7 +5325,7 @@ process and use an_object["table_head"] (then empty it)
***** table instructions
-#+NAME: abs_functions_table
+#+NAME: abs_functions_table_0
#+BEGIN_SRC d
@safe ObjGenericComposite flow_table_instructions(H)(
return ref ObjGenericComposite table_object,
@@ -5228,7 +5356,7 @@ process and use an_object["table_head"] (then empty it)
***** table array munge
-#+NAME: abs_functions_table
+#+NAME: abs_functions_table_1
#+BEGIN_SRC d
@safe ObjGenericComposite flow_table_array_munge(T)(
return ref ObjGenericComposite table_object,
@@ -5358,7 +5486,7 @@ process and use an_object["table_head"] (then empty it)
***** table substantive munge
-#+NAME: abs_functions_table
+#+NAME: abs_functions_table_2
#+BEGIN_SRC d
@system ObjGenericComposite flow_table_substantive_munge(T)(
return ref ObjGenericComposite table_object,
@@ -5380,7 +5508,7 @@ process and use an_object["table_head"] (then empty it)
***** table substantive munge special
-#+NAME: abs_functions_table
+#+NAME: abs_functions_table_3
#+BEGIN_SRC d
@system ObjGenericComposite flow_table_substantive_munge_special(T)(
return ref ObjGenericComposite table_object,
@@ -5460,7 +5588,7 @@ process and use an_object["table_head"] (then empty it)
****** { struct, inline markup munge
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_0
#+BEGIN_SRC d
@safe static struct ObjInlineMarkupMunge {
string[string] obj_txt;
@@ -5478,7 +5606,7 @@ process and use an_object["table_head"] (then empty it)
}
#+END_SRC
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_1
#+BEGIN_SRC d
@safe static auto images()(string obj_txt_in) {
static auto mng = InlineMarkup();
@@ -5514,7 +5642,7 @@ process and use an_object["table_head"] (then empty it)
******* footnotes endnotes markup
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_2
#+BEGIN_SRC d
@safe TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) {
/+ endnotes (regular) +/
@@ -5591,7 +5719,7 @@ process and use an_object["table_head"] (then empty it)
******* object notes and links
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_3
#+BEGIN_SRC d
@safe private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()(
string obj_txt_in,
@@ -5662,7 +5790,7 @@ process and use an_object["table_head"] (then empty it)
- identified text by heading level marker followed by text until two new lines
- general markup
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_4
#+BEGIN_SRC d
@safe auto munge_heading()(
string obj_txt_in,
@@ -5693,7 +5821,7 @@ process and use an_object["table_head"] (then empty it)
- footnotes/endnotes
- links
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_5
#+BEGIN_SRC d
@safe auto munge_para()(string obj_txt_in) {
obj_txt["munge"] = (obj_txt_in)
@@ -5712,7 +5840,7 @@ process and use an_object["table_head"] (then empty it)
******* quote
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_6
#+BEGIN_SRC d
@safe string munge_quote()(string obj_txt_in) {
obj_txt["munge"] = obj_txt_in;
@@ -5732,7 +5860,7 @@ process and use an_object["table_head"] (then empty it)
- drop spaces
- keep newlines?
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_7
#+BEGIN_SRC d
@safe auto munge_group(string obj_txt_in) {
TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in.split("\n\n").join(" \\\\\n \\\\\n"));
@@ -5753,7 +5881,7 @@ process and use an_object["table_head"] (then empty it)
- keep newlines
- newlines detected and kept?
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_8
#+BEGIN_SRC d
@safe auto munge_block()(string obj_txt_in) {
TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in);
@@ -5772,7 +5900,7 @@ process and use an_object["table_head"] (then empty it)
- footnotes/endnotes
- links?
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_9
#+BEGIN_SRC d
@safe auto munge_verse()(string obj_txt_in) {
TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in);
@@ -5790,7 +5918,7 @@ process and use an_object["table_head"] (then empty it)
- no general markup
- one special character represented by mkup.nbsp ░
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_10
#+BEGIN_SRC d
@safe string munge_code()(string obj_txt_in) {
obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp);
@@ -5805,7 +5933,7 @@ process and use an_object["table_head"] (then empty it)
- table block identified by open an close tags
- table markup
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_11
#+BEGIN_SRC d
@safe string munge_table()(string obj_txt_in) {
obj_txt["munge"] = obj_txt_in;
@@ -5817,7 +5945,7 @@ process and use an_object["table_head"] (then empty it)
******* comment
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_12
#+BEGIN_SRC d
@safe string munge_comment()(string obj_txt_in) {
obj_txt["munge"] = obj_txt_in;
@@ -5829,7 +5957,7 @@ process and use an_object["table_head"] (then empty it)
****** }
-#+NAME: meta_emitters_obj_inline_markup_munge
+#+NAME: meta_emitters_obj_inline_markup_munge_13
#+BEGIN_SRC d
}
#+END_SRC
@@ -6054,7 +6182,7 @@ private:
******** make heading number & segment anchor tags if instructed :markup:inline:segment:anchor:tags:
-#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
+#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_0
#+BEGIN_SRC d
static int[] heading_num = [ 0, 0, 0, 0 ];
static string heading_number_auto_composite = "";
@@ -6207,7 +6335,7 @@ private:
******** make segment anchor tags if not provided :markup:inline:segment:anchor:tags:
-#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags
+#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_1
#+BEGIN_SRC d
static int heading_num_lev1 = 0;
@safe static string _make_segment_anchor_tags_if_none_provided()(
@@ -6338,7 +6466,7 @@ struct ObjAttributes {
******** para & blocks
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_0
#+BEGIN_SRC d
@safe string txt_para_and_blocks()(string obj_txt_in) {
if (obj_txt_in.matchFirst(rgx.para_bullet)) {
@@ -6368,7 +6496,7 @@ struct ObjAttributes {
******** heading
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_1
#+BEGIN_SRC d
@safe string txt_heading()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6382,7 +6510,7 @@ struct ObjAttributes {
******** para
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_2
#+BEGIN_SRC d
@safe string txt_para()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6396,7 +6524,7 @@ struct ObjAttributes {
******** quote
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_3
#+BEGIN_SRC d
@safe string txt_quote()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6410,7 +6538,7 @@ struct ObjAttributes {
******** group
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_4
#+BEGIN_SRC d
@safe string txt_group()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6424,7 +6552,7 @@ struct ObjAttributes {
******** block
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_5
#+BEGIN_SRC d
@safe string txt_block()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6438,7 +6566,7 @@ struct ObjAttributes {
******** verse
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_6
#+BEGIN_SRC d
@safe string txt_verse()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6452,7 +6580,7 @@ struct ObjAttributes {
******** code
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_7
#+BEGIN_SRC d
@safe string txt_code()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6466,7 +6594,7 @@ struct ObjAttributes {
******** table
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_8
#+BEGIN_SRC d
@safe string txt_table()(string obj_txt_in) {
_obj_attributes = " \"use\": \"content\","
@@ -6480,7 +6608,7 @@ struct ObjAttributes {
******** comment
-#+NAME: meta_emitters_obj_attributes_private_an_attribute
+#+NAME: meta_emitters_obj_attributes_private_an_attribute_9
#+BEGIN_SRC d
@safe string txt_comment()(string obj_txt_in) {
_obj_attributes = " \"use\": \"comment\","
@@ -6642,7 +6770,7 @@ struct BookIndexReportIndent {
***** book index (sort &) report section :report:section:
****** { book index struct open
-#+NAME: meta_emitters_book_index_report_section
+#+NAME: meta_emitters_book_index_report_section_0
#+BEGIN_SRC d
struct BookIndexReportSection {
int mkn, skn;
@@ -6652,7 +6780,7 @@ struct BookIndexReportSection {
******* bookindex write section
-#+NAME: meta_emitters_book_index_report_section
+#+NAME: meta_emitters_book_index_report_section_1
#+BEGIN_SRC d
@safe void bookindex_write_section()(
string[][string][string] bookindex_unordered_hashes
@@ -6687,7 +6815,7 @@ struct BookIndexReportSection {
******* book index (sort &) build section :report:section:
-#+NAME: meta_emitters_book_index_report_section
+#+NAME: meta_emitters_book_index_report_section_2
#+BEGIN_SRC d
@system auto bookindex_build_abstraction_section(N,B)(
string[][string][string] bookindex_unordered_hashes,
@@ -6850,14 +6978,14 @@ struct BookIndexReportSection {
****** }
-#+NAME: meta_emitters_book_index_report_section
+#+NAME: meta_emitters_book_index_report_section_3
#+BEGIN_SRC d
}
#+END_SRC
**** (end)notes section :endnotes:section:
-#+NAME: meta_emitters_endnotes
+#+NAME: meta_emitters_endnotes_0
#+BEGIN_SRC d
struct NotesSection {
string[string] object_notes;
@@ -6868,7 +6996,7 @@ struct NotesSection {
***** { gather notes for endnote section struct open
-#+NAME: meta_emitters_endnotes
+#+NAME: meta_emitters_endnotes_1
#+BEGIN_SRC d
@safe private auto gather_notes_for_endnote_section(
ObjGenericComposite[] contents_am,
@@ -6954,7 +7082,7 @@ struct NotesSection {
****** gathered notes
-#+NAME: meta_emitters_endnotes
+#+NAME: meta_emitters_endnotes_2
#+BEGIN_SRC d
@safe private auto gathered_notes() {
string[][string] endnotes_;
@@ -6971,7 +7099,7 @@ struct NotesSection {
****** endnote objects
-#+NAME: meta_emitters_endnotes
+#+NAME: meta_emitters_endnotes_3
#+BEGIN_SRC d
@safe private auto endnote_objects(N,O)(
N obj_cite_digits,
@@ -7087,7 +7215,7 @@ struct NotesSection {
***** }
-#+NAME: meta_emitters_endnotes
+#+NAME: meta_emitters_endnotes_4
#+BEGIN_SRC d
}
#+END_SRC
@@ -7095,14 +7223,14 @@ struct NotesSection {
**** bibliography :bibliography:
***** { biblio struct
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_0
#+BEGIN_SRC d
struct Bibliography {
#+END_SRC
****** biblio
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_1
#+BEGIN_SRC d
@system public JSONValue[] flow_bibliography_()(
return ref string[] biblio_unsorted_incomplete,
@@ -7133,7 +7261,7 @@ struct Bibliography {
****** biblio unsorted complete
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_2
#+BEGIN_SRC d
@system final private JSONValue[] biblio_make_unsorted_array_of_json_objects()(
string[] biblio_unordered,
@@ -7167,7 +7295,7 @@ struct Bibliography {
****** biblio sort
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_3
#+BEGIN_SRC d
@system final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) {
JSONValue[] biblio_sorted_;
@@ -7188,7 +7316,7 @@ struct Bibliography {
****** biblio debug
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_4
#+BEGIN_SRC d
@system void biblio_debug()(JSONValue[] biblio_sorted) {
debug(biblio0) {
@@ -7203,7 +7331,7 @@ struct Bibliography {
***** }
-#+NAME: meta_emitters_bibliography
+#+NAME: meta_emitters_bibliography_5
#+BEGIN_SRC d
}
#+END_SRC
@@ -7211,7 +7339,7 @@ struct Bibliography {
**** node structure metadata :structure:metadata:node:
***** { metadata node struct
-#+NAME: meta_emitters_metadata
+#+NAME: meta_emitters_metadata_0
#+BEGIN_SRC d
struct NodeStructureMetadata {
int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7;
@@ -7222,7 +7350,7 @@ struct NodeStructureMetadata {
****** node metadata emitter
-#+NAME: meta_emitters_metadata
+#+NAME: meta_emitters_metadata_1
#+BEGIN_SRC d
@safe ObjGenericComposite node_location_emitter(La,Ta,N)(
string lev_markup_number,
@@ -7282,7 +7410,7 @@ struct NodeStructureMetadata {
****** node metadata emitter heading, (including most segnames & their pointers)
-#+NAME: meta_emitters_metadata
+#+NAME: meta_emitters_metadata_2
#+BEGIN_SRC d
@safe ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)(
string _text,
@@ -7484,7 +7612,7 @@ struct NodeStructureMetadata {
***** }
-#+NAME: meta_emitters_metadata
+#+NAME: meta_emitters_metadata_3
#+BEGIN_SRC d
}
#+END_SRC
@@ -7711,7 +7839,16 @@ set abstracted objects for downstream processing
module doc_reform.meta.metadoc_object_setter;
template ObjectSetter() {
/+ structs +/
- <<meta_structs_init>>
+ <<meta_structs_init_0>>
+ <<meta_structs_init_1>>
+ <<meta_structs_init_2>>
+ <<meta_structs_init_3>>
+ <<meta_structs_init_4>>
+ <<meta_structs_init_5>>
+ <<meta_structs_init_6>>
+ <<meta_structs_init_7>>
+ <<meta_structs_init_8>>
+ <<meta_structs_init_9>>
}
#+END_SRC
@@ -7732,7 +7869,7 @@ struct HeadingAttrib {
*** _composite object_ [#A]
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_0
#+BEGIN_SRC d
struct DocObj_MetaInfo_ {
string is_of_part = ""; // frontmatter, body, backmatter
@@ -7811,7 +7948,7 @@ struct DocObj_MetaInfo_ {
**** object text attributes
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_1
#+BEGIN_SRC d
struct DocObj_TxtAttrib_ {
int indent_base = 0;
@@ -7823,7 +7960,7 @@ struct DocObj_TxtAttrib_ {
**** object has within it
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_2
#+BEGIN_SRC d
struct DocObj_Has_ {
bool inline_links = false;
@@ -7836,7 +7973,7 @@ struct DocObj_Has_ {
**** table attributes
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_3
#+BEGIN_SRC d
struct DocObj_Table_ {
int number_of_columns = 0;
@@ -7849,7 +7986,7 @@ struct DocObj_Table_ {
**** code attributes
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_4
#+BEGIN_SRC d
struct DocObj_CodeBlock_ {
string syntax = "";
@@ -7859,7 +7996,7 @@ struct DocObj_CodeBlock_ {
**** stow (things to be protected from regular text transformations, so far links)
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_5
#+BEGIN_SRC d
struct DocObj_Stow_ {
string[] link = [];
@@ -7868,7 +8005,7 @@ struct DocObj_Stow_ {
**** pointers
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_6
#+BEGIN_SRC d
struct DocObj_Pointer_ {
int doc_object = 0;
@@ -7879,7 +8016,7 @@ struct DocObj_Pointer_ {
**** tags
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_7
#+BEGIN_SRC d
struct DocObj_Tags_ {
string[] heading_ancestors_text = [ "", "", "", "", "", "", "", "", ];
@@ -7898,7 +8035,7 @@ struct DocObj_Tags_ {
**** composite object the parts
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_8
#+BEGIN_SRC d
struct ObjGenericComposite {
string text = "";
@@ -7915,7 +8052,7 @@ struct ObjGenericComposite {
*** The Objects: generic composite object array
-#+NAME: meta_structs_init
+#+NAME: meta_structs_init_9
#+BEGIN_SRC d
struct TheObjects {
ObjGenericComposite[] oca;
diff --git a/org/out_cgi_search_sqlite.org b/org/out_cgi_search_sqlite.org
index f9b90d0..df98ed9 100644
--- a/org/out_cgi_search_sqlite.org
+++ b/org/out_cgi_search_sqlite.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -99,21 +100,33 @@ void cgi_function_intro(Cgi cgi) {
<<cgi_sqlite_initialize_text>>
<<cgi_sqlite_initialize_rgx>>
<<cgi_sqlite_initialize_fields>>
- <<cgi_sqlite_initialize_env>>
+ <<cgi_sqlite_initialize_env_0>>
+ <<cgi_sqlite_initialize_env_1>>
<<cgi_sqlite_initialize_tail>>
<<cgi_sqlite_initialize_sql_select>>
<<cgi_sqlite_initialize_canned_url>>
<<cgi_sqlite_initialize_regex_for_canned_search>>
<<cgi_sqlite_initialize_show_matched_objects>>
<<cgi_sqlite_initialize_previous_next>>
-<<cgi_sqlite_header>>
+<<cgi_sqlite_header_0>>
+<<cgi_sqlite_header_1>>
+<<cgi_sqlite_header_2>>
<<cgi_sqlite_table>>
-<<cgi_sqlite_form>>
+<<cgi_sqlite_form_0>>
+<<cgi_sqlite_form_1>>
+<<cgi_sqlite_form_2>>
+<<cgi_sqlite_form_3>>
"%s",
-<<cgi_sqlite_form_post>>
+<<cgi_sqlite_form_post_0>>
+<<cgi_sqlite_form_post_1>>
<<cgi_sqlite_write>>
<<cgi_sqlite_set_db>>
<<cgi_sqlite_select_statement_0>>
+<<cgi_sqlite_select_statement_1>>
+<<cgi_sqlite_select_statement_2>>
+<<cgi_sqlite_select_statement_3>>
+<<cgi_sqlite_select_statement_4>>
+<<cgi_sqlite_select_statement_5>>
<<cgi_sqlite_db_close>>
<<cgi_sqlite_db_tail>>
}
@@ -409,7 +422,7 @@ auto text_fields() {
***** env
****** POST
-#+NAME: cgi_sqlite_initialize_env
+#+NAME: cgi_sqlite_initialize_env_0
#+BEGIN_SRC d
if (environment.get("REQUEST_METHOD", "POST") == "POST") {
if ("sf" in cgi.post) {
@@ -559,7 +572,7 @@ auto text_fields() {
****** GET
-#+NAME: cgi_sqlite_initialize_env
+#+NAME: cgi_sqlite_initialize_env_1
#+BEGIN_SRC d
} else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
got.canned_query = environment.get("QUERY_STRING", "");
@@ -814,7 +827,7 @@ string show_matched_objects (string fn) {
**** format
-#+NAME: cgi_sqlite_header
+#+NAME: cgi_sqlite_header_0
#+BEGIN_SRC d
{
header = format(q"┃
@@ -822,7 +835,7 @@ string show_matched_objects (string fn) {
**** html
-#+NAME: cgi_sqlite_header
+#+NAME: cgi_sqlite_header_1
#+BEGIN_SRC html
<!DOCTYPE html>
<html>
@@ -839,7 +852,7 @@ string show_matched_objects (string fn) {
**** css
-#+NAME: cgi_sqlite_header
+#+NAME: cgi_sqlite_header_2
#+BEGIN_SRC css
*{
padding : 0px;
@@ -1667,7 +1680,7 @@ string show_matched_objects (string fn) {
*** cgi html form
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_0
#+BEGIN_SRC d
{
string post_value(string field_name, string type="box", string set="on") {
@@ -1710,7 +1723,7 @@ string show_matched_objects (string fn) {
**** canned search
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_1
#+BEGIN_SRC d
string the_can(string fv) {
string show_the_can = post_value("url");
@@ -1748,7 +1761,7 @@ string show_matched_objects (string fn) {
**** provide tip
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_2
#+BEGIN_SRC d
string provide_tip() {
string searched_tip = post_value("se");
@@ -1785,7 +1798,7 @@ string show_matched_objects (string fn) {
**** the form
***** form html
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_3
#+BEGIN_SRC html
form = format(q"┃
<form action="%%s" id="SubmitForm" method="post" accept-charset="UTF-8">
@@ -1823,7 +1836,7 @@ string show_matched_objects (string fn) {
***** form values
-#+NAME: cgi_sqlite_form_post
+#+NAME: cgi_sqlite_form_post_0
#+BEGIN_SRC d
(post_value("ec") == "checked") ? post_value("sf", "field") : "",
provide_tip,
@@ -1843,7 +1856,7 @@ string show_matched_objects (string fn) {
**** set value (debug)
-#+NAME: cgi_sqlite_form_post
+#+NAME: cgi_sqlite_form_post_1
#+BEGIN_SRC d
{
string set_value(string field_name, string default_val) {
@@ -2008,7 +2021,7 @@ auto db = Database(conf.db_path ~ cv.db_selected);
**** db SELECT statement, the body
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_1
#+BEGIN_SRC sql
sql_select.the_body ~= format(q"┃
SELECT
@@ -2051,7 +2064,7 @@ LIMIT %%s OFFSET %%s
**** html write selected
***** head
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_2
#+BEGIN_SRC d
(cv.checked_sql)
? cgi.write(previous_next
@@ -2100,7 +2113,7 @@ LIMIT %%s OFFSET %%s
***** text found
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_3
#+BEGIN_SRC d
if (cv.results_type == "txt") {
if (row["ocn"].as!string != "0") {
@@ -2143,7 +2156,7 @@ LIMIT %%s OFFSET %%s
***** ocn index
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_4
#+BEGIN_SRC d
} else {
if (row["ocn"].as!string != "0") {
@@ -2176,7 +2189,7 @@ LIMIT %%s OFFSET %%s
***** tail
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_5
#+BEGIN_SRC d
}
cgi.write( previous_next);
diff --git a/org/out_harvest_metadata.org b/org/out_harvest_metadata.org
index 424803f..4c32e37 100644
--- a/org/out_harvest_metadata.org
+++ b/org/out_harvest_metadata.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -138,7 +139,8 @@ template spineMetaDocHarvestsTopics() {
) {
<<harvested_html_search>>
<<harvested_topics>>
-<<harvested_html_themes>>
+<<harvested_html_themes_0>>
+<<harvested_html_themes_1>>
<<harvested_topics_html_head_1>>
<<harvested_html_head>>
<<harvested_topics_html_head_2>>
@@ -477,7 +479,8 @@ template spineMetaDocHarvestsAuthors() {
O _opt_action,
) {
<<harvested_html_search>>
-<<harvested_html_themes>>
+<<harvested_html_themes_0>>
+<<harvested_html_themes_1>>
<<harvested_authors_html_head_1>>
<<harvested_html_head>>
<<harvested_authors_html_head_2>>
@@ -621,7 +624,7 @@ if (_opt_action.verbose
*** themes
**** head
-#+NAME: harvested_html_themes
+#+NAME: harvested_html_themes_0
#+BEGIN_SRC d
string theme_dark_0 = format(q"┃
body {
@@ -717,7 +720,7 @@ string theme_light_0 = format(q"┃
**** levels
-#+NAME: harvested_html_themes
+#+NAME: harvested_html_themes_1
#+BEGIN_SRC d
string theme_dark_1 = format(q"┃
h1 {
diff --git a/org/out_latex.org b/org/out_latex.org
index c9610c3..ff56f47 100644
--- a/org/out_latex.org
+++ b/org/out_latex.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -29,26 +30,89 @@ template outputLaTeX() {
static auto rgx = RgxO();
mixin spineLanguageCodes;
auto lang = Lang();
- <<output_latex_shared>>
-<<output_latex_shared_0>>
- <<output_latex_head>>
-<<output_latex_head_1_tex>>
- <<output_latex_head_1_format_string_variables>>
- <<output_latex_head_0_format_string>>
-<<output_latex_head_0_tex>>
- <<output_latex_head_0_format_string_variables>>
+ <<output_latex_shared_a_0>>
+ <<output_latex_shared_a_1>>
+ <<output_latex_shared_a_2>>
+ <<output_latex_shared_a_3>>
+ <<output_latex_shared_a_4>>
+ <<output_latex_shared_a_5>>
+ <<output_latex_shared_a_6>>
+ <<output_latex_shared_a_7>>
+ <<output_latex_shared_a_8>>
+ <<output_latex_shared_a_9>>
+ <<output_latex_shared_a_10>>
+ <<output_latex_shared_a_11>>
+<<output_latex_shared_b_0>>
+<<output_latex_shared_b_1>>
+<<output_latex_shared_b_2>>
+<<output_latex_shared_b_3>>
+<<output_latex_shared_b_4>>
+<<output_latex_shared_b_5>>
+<<output_latex_shared_b_6>>
+ <<output_latex_head_0>>
+ <<output_latex_head_1>>
+ <<output_latex_head_2>>
+ <<output_latex_head_3>>
+<<output_latex_head_b_tex_0>>
+<<output_latex_head_b_tex_1>>
+<<output_latex_head_b_tex_2>>
+<<output_latex_head_b_tex_3>>
+<<output_latex_head_b_tex_4>>
+<<output_latex_head_b_tex_5>>
+<<output_latex_head_b_tex_6>>
+<<output_latex_head_b_tex_7>>
+<<output_latex_head_b_tex_8>>
+<<output_latex_head_b_tex_9>>
+<<output_latex_head_b_tex_10>>
+<<output_latex_head_b_tex_11>>
+<<output_latex_head_b_tex_12>>
+<<output_latex_head_b_tex_13>>
+<<output_latex_head_b_tex_14>>
+<<output_latex_head_b_tex_15>>
+<<output_latex_head_b_tex_16>>
+<<output_latex_head_b_tex_17>>
+ <<output_latex_head_b_format_string_variables>>
+ <<output_latex_head_format_string_0>>
+ <<output_latex_head_format_string_1>>
+ <<output_latex_head_format_string_2>>
+ <<output_latex_head_format_string_3>>
+<<output_latex_head_tex_0>>
+<<output_latex_head_tex_1>>
+<<output_latex_head_tex_2>>
+<<output_latex_head_tex_3>>
+<<output_latex_head_tex_4>>
+<<output_latex_head_tex_5>>
+<<output_latex_head_tex_6>>
+<<output_latex_head_tex_7>>
+<<output_latex_head_tex_8>>
+<<output_latex_head_tex_9>>
+<<output_latex_head_tex_10>>
+<<output_latex_head_tex_11>>
+<<output_latex_head_tex_12>>
+<<output_latex_head_tex_13>>
+<<output_latex_head_tex_14>>
+ <<output_latex_head_a_format_string_variables>>
<<output_latex_head_close>>
- <<output_latex_body>>
- <<output_latex_tail>>
+ <<output_latex_body_0>>
+ <<output_latex_body_1>>
+ <<output_latex_body_2>>
+ <<output_latex_body_3>>
+ <<output_latex_body_4>>
+ <<output_latex_body_5>>
+ <<output_latex_body_6>>
+ <<output_latex_tail_0>>
+ <<output_latex_tail_1>>
<<output_latex_tail_tex>>
- <<output_latex_tail_close>>
- <<output_latex>>
+ <<output_latex_tail_close_0>>
+ <<output_latex_tail_close_1>>
+ <<output_latex_0>>
+ <<output_latex_1>>
}
#+END_SRC
** write latex output :latex:out:
-#+NAME: output_latex
+#+NAME: output_latex_0
#+BEGIN_SRC d
void writeOutputLaTeX(T,M)(
const T latex_content,
@@ -90,7 +154,7 @@ void writeOutputLaTeX(T,M)(
** latex output hub [#A] :latex:pdf:out:
-#+NAME: output_latex
+#+NAME: output_latex_1
#+BEGIN_SRC d
void outputLaTeX(D,M)(
const D doc_abstraction,
@@ -128,7 +192,7 @@ import doc_reform.io_out;
** shared
*** paper dimensions (struct)
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_0
#+BEGIN_SRC d
auto paper() {
struct PaperType {
@@ -295,7 +359,7 @@ import doc_reform.io_out;
*** latex \escape special characters
**** general
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_1
#+BEGIN_SRC d
@safe string sp_char_esc(O)(
string _txt,
@@ -324,7 +388,7 @@ import doc_reform.io_out;
}
#+END_SRC
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_2
#+BEGIN_SRC d
@safe string sp_char_esc_txt()(
string _txt,
@@ -366,7 +430,7 @@ import doc_reform.io_out;
- bold, italics, underscore, strikethrough
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_3
#+BEGIN_SRC d
@safe string fontface()(
string _txt,
@@ -389,7 +453,7 @@ _txt = _txt
**** spaces
***** leading hardspace
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_4
#+BEGIN_SRC d
@safe string leading_hardspaces()(
string _txt,
@@ -406,7 +470,7 @@ _txt = _txt
***** nbsp character
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_5
#+BEGIN_SRC d
@safe string nbsp_char()(string _txt) {
if (_txt.match(rgx.nbsp_char)) {
@@ -418,7 +482,7 @@ _txt = _txt
***** remove nbsp character
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_6
#+BEGIN_SRC d
@safe string nbsp_char_to_space()(string _txt) {
if (_txt.match(rgx.nbsp_char)) {
@@ -431,7 +495,7 @@ _txt = _txt
**** links and images
***** links / urls
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_7
#+BEGIN_SRC d
@safe string links_and_images(O,M)(
string _txt,
@@ -483,7 +547,7 @@ _txt = _txt
*** footnotes
**** footnotes
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_8
#+BEGIN_SRC d
@safe string footnotes()(
string _txt,
@@ -504,7 +568,7 @@ _txt = _txt
**** footnote remove
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_9
#+BEGIN_SRC d
@safe string remove_footnotes()(
string _txt,
@@ -519,7 +583,7 @@ _txt = _txt
*** para
**** para
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_10
#+BEGIN_SRC d
@safe string para(O)(
string _txt,
@@ -540,7 +604,7 @@ _txt = _txt
**** bookindex para
-#+NAME: output_latex_shared
+#+NAME: output_latex_shared_a_11
#+BEGIN_SRC d
@safe string bookindex(O)(
string _txt,
@@ -561,7 +625,7 @@ _txt = _txt
*** bullets & indentation
-#+NAME: output_latex_head
+#+NAME: output_latex_head_0
#+BEGIN_SRC d
@safe string bullets_and_indentation(O)(
string _txt,
@@ -606,7 +670,7 @@ _txt = _txt
*** heading
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_0
#+BEGIN_SRC d
@safe string heading(O,M)(
string _txt,
@@ -780,7 +844,7 @@ _txt = _txt
- (hardspace not honored) clear hardspace marker
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_1
#+BEGIN_SRC d
string group(O,M)(
string _txt,
@@ -808,7 +872,7 @@ string group(O,M)(
- (hardspace honored) \hardspace
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_2
#+BEGIN_SRC d
string block(O,M)(
string _txt,
@@ -840,7 +904,7 @@ string block(O,M)(
- (hardspace honored) \hardspace
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_3
#+BEGIN_SRC d
string verse(O,M)(
string _txt,
@@ -872,7 +936,7 @@ string verse(O,M)(
- (hardspace honored) \begin{lstlisting} clear hardspace marker
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_4
#+BEGIN_SRC d
string codeblock(O,M)(
string _txt,
@@ -904,7 +968,7 @@ string codeblock(O,M)(
***** tablarize
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_5
#+BEGIN_SRC d
auto tablarize(O)(
string _txt,
@@ -943,7 +1007,7 @@ auto tablarize(O)(
***** table
-#+NAME: output_latex_shared_0
+#+NAME: output_latex_shared_b_6
#+BEGIN_SRC d
string table(O,M)(
string _txt,
@@ -1003,7 +1067,7 @@ string table(O,M)(
*** latex head :head:
**** latex head function
-#+NAME: output_latex_head
+#+NAME: output_latex_head_1
#+BEGIN_SRC d
string latex_head(M)(
M doc_matters,
@@ -1015,7 +1079,7 @@ string latex_head(M)(
***** paper type dimensions
****** struct
-#+NAME: output_latex_head
+#+NAME: output_latex_head_2
#+BEGIN_SRC d
struct paperTypeLatex {
string a4_portrait;
@@ -1034,7 +1098,7 @@ string latex_head(M)(
****** footer
-#+NAME: output_latex_head
+#+NAME: output_latex_head_3
#+BEGIN_SRC d
string _footer(M)(M doc_matters) {
string _ft = "\\lfoot[\\textrm{\\thepage}]";
@@ -1069,7 +1133,7 @@ string latex_head(M)(
***** paper margins
****** struct
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_0
#+BEGIN_SRC d
struct paperMargins {
string portrait;
@@ -1080,19 +1144,19 @@ string latex_head(M)(
****** portrait
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_1
#+BEGIN_SRC d
margins.portrait = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_2
#+BEGIN_SRC latex
\setlength{\oddsidemargin}{0mm} \setlength{\evensidemargin}{0mm}
\setlength{\topmargin}{-12pt} \setlength{\headheight}{12pt}
\setlength{\headsep}{35pt}
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_3
#+BEGIN_SRC d
┃",
);
@@ -1100,19 +1164,19 @@ string latex_head(M)(
****** landscape
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_4
#+BEGIN_SRC d
margins.landscape = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_5
#+BEGIN_SRC latex
\setlength{\oddsidemargin}{6mm} \setlength{\evensidemargin}{6mm}
\setlength{\topmargin}{-12mm} \setlength{\headheight}{12pt}
\setlength{\headsep}{20pt}
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_6
#+BEGIN_SRC d
┃",
);
@@ -1121,7 +1185,7 @@ string latex_head(M)(
***** multicol
****** struct
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_7
#+BEGIN_SRC d
struct columnsMulti {
string portrait;
@@ -1132,17 +1196,17 @@ string latex_head(M)(
****** portrait
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_8
#+BEGIN_SRC d
multicol.portrait = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_9
#+BEGIN_SRC latex
\usepackage{multicol}
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_10
#+BEGIN_SRC d
┃",
);
@@ -1150,7 +1214,7 @@ string latex_head(M)(
****** landscape
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_11
#+BEGIN_SRC d
multicol.landscape = "";
#+END_SRC
@@ -1158,7 +1222,7 @@ string latex_head(M)(
***** color links
****** struct
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_12
#+BEGIN_SRC d
struct colorLinks {
string mono;
@@ -1169,12 +1233,12 @@ string latex_head(M)(
****** mono
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_13
#+BEGIN_SRC d
links.mono = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_14
#+BEGIN_SRC latex
\usepackage[xetex,
colorlinks=true,
@@ -1183,7 +1247,7 @@ string latex_head(M)(
linkcolor=myblack,
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_15
#+BEGIN_SRC d
┃",
);
@@ -1191,12 +1255,12 @@ string latex_head(M)(
****** color
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_16
#+BEGIN_SRC d
links.color = format(q"┃
#+END_SRC
-#+NAME: output_latex_head_1_tex
+#+NAME: output_latex_head_b_tex_17
#+BEGIN_SRC latex
\usepackage[xetex,
colorlinks=true,
@@ -1205,7 +1269,7 @@ string latex_head(M)(
linkcolor=myred, %% \href{...} and \pageref{...}
#+END_SRC
-#+NAME: output_latex_head_1_format_string_variables
+#+NAME: output_latex_head_b_format_string_variables
#+BEGIN_SRC d
┃",
);
@@ -1215,7 +1279,7 @@ string latex_head(M)(
***** dimensions & orientation
****** set
-#+NAME: output_latex_head_0_format_string
+#+NAME: output_latex_head_format_string_0
#+BEGIN_SRC d
string set_paper(P)(P paper_set,) {
string paper_type_description;
@@ -1246,7 +1310,7 @@ string latex_head(M)(
***** (a4, a5, b4, letter, legal) * (portrait & landscape)
-#+NAME: output_latex_head_0_format_string
+#+NAME: output_latex_head_format_string_1
#+BEGIN_SRC d
string paper_size_orientation_latex;
switch (paper_size_orientation) {
@@ -1266,7 +1330,7 @@ string latex_head(M)(
***** set color links
-#+NAME: output_latex_head_0_format_string
+#+NAME: output_latex_head_format_string_2
#+BEGIN_SRC d
string links_mono_or_color_set = links.mono.strip;
if (
@@ -1284,14 +1348,14 @@ string latex_head(M)(
***** format latex head, open
-#+NAME: output_latex_head_0_format_string
+#+NAME: output_latex_head_format_string_3
#+BEGIN_SRC d
string _latex_head = format(q"┃%%%% spine LaTeX output
#+END_SRC
***** description comment
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_0
#+BEGIN_SRC latex
%%%% Generated by: %s
%%%% D version: %s
@@ -1308,7 +1372,7 @@ string latex_head(M)(
- paper_type_latex.us_letter_portrait
- paper_type_latex.us_letter_landscape
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_1
#+BEGIN_SRC latex
%s
#+END_SRC
@@ -1318,14 +1382,14 @@ string latex_head(M)(
- margins.portrait
- margins.landscape
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_2
#+BEGIN_SRC latex
%s
#+END_SRC
***** margin shared
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_3
#+BEGIN_SRC latex
\setlength{\marginparsep}{4mm}
\setlength{\marginparwidth}{8mm}
@@ -1333,14 +1397,14 @@ string latex_head(M)(
***** multicol (portrait | landscape)
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_4
#+BEGIN_SRC latex
%s
#+END_SRC
***** language & font
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_5
#+BEGIN_SRC latex
\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode}
\setmainlanguage{%s}
@@ -1354,7 +1418,7 @@ string latex_head(M)(
***** latex head
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_6
#+BEGIN_SRC latex
\usepackage{alltt}
\usepackage{thumbpdf}
@@ -1362,14 +1426,14 @@ string latex_head(M)(
***** color links: no = mono | yes = color
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_7
#+BEGIN_SRC latex
%s
#+END_SRC
***** metadata
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_8
#+BEGIN_SRC latex
pdftitle={%s},
pdfauthor={%s},
@@ -1403,7 +1467,7 @@ string latex_head(M)(
***** define colors
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_9
#+BEGIN_SRC latex
\usepackage[usenames]{color}
\definecolor{myblack}{rgb}{0,0,0}
@@ -1415,7 +1479,7 @@ string latex_head(M)(
***** latex head
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_10
#+BEGIN_SRC latex
\usepackage{url}
\urlstyle{sf}
@@ -1425,7 +1489,7 @@ string latex_head(M)(
***** latex head
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_11
#+BEGIN_SRC latex
\usepackage{textcomp}
\usepackage[parfill]{parskip}
@@ -1447,7 +1511,7 @@ string latex_head(M)(
***** indent, bullet, list
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_12
#+BEGIN_SRC latex
\usepackage[multiple,ragged]{footmisc}
\setlength\footnotemargin{12pt}
@@ -1491,7 +1555,7 @@ string latex_head(M)(
***** part, section, subsection, paragraph, subparagraph
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_13
#+BEGIN_SRC latex
\usepackage{fancyhdr}
\lhead{}
@@ -1525,7 +1589,7 @@ string latex_head(M)(
***** latex head misc. including defined commands
-#+NAME: output_latex_head_0_tex
+#+NAME: output_latex_head_tex_14
#+BEGIN_SRC latex
\selectlanguage{%s}
\lhead[ ]{ }
@@ -1586,7 +1650,7 @@ string latex_head(M)(
**** latex head format inclusions
-#+NAME: output_latex_head_0_format_string_variables
+#+NAME: output_latex_head_a_format_string_variables
#+BEGIN_SRC d
┃",
doc_matters.opt.action.debug_do ? "" : doc_matters.generator_program.name_and_version.strip,
@@ -1619,7 +1683,7 @@ string latex_head(M)(
*** ↻ latex body :content:body:
**** latex body function
-#+NAME: output_latex_body
+#+NAME: output_latex_body_0
#+BEGIN_SRC d
string latex_body(D,M)(
const D doc_abstraction,
@@ -1633,7 +1697,7 @@ string latex_body(D,M)(
**** ↻ loop open
-#+NAME: output_latex_body
+#+NAME: output_latex_body_1
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.latex) {
foreach (obj; doc_abstraction[part]) {
@@ -1643,7 +1707,7 @@ string latex_body(D,M)(
**** ↻ within loop
***** frontmatter
-#+NAME: output_latex_body
+#+NAME: output_latex_body_2
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
_txt = obj.text
@@ -1670,7 +1734,7 @@ string latex_body(D,M)(
***** body
-#+NAME: output_latex_body
+#+NAME: output_latex_body_3
#+BEGIN_SRC d
case "body": assert(part == "body" || "head"); // surprise
_txt = obj.text
@@ -1732,7 +1796,7 @@ string latex_body(D,M)(
***** backmatter
-#+NAME: output_latex_body
+#+NAME: output_latex_body_4
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -1792,7 +1856,7 @@ string latex_body(D,M)(
***** after
-#+NAME: output_latex_body
+#+NAME: output_latex_body_5
#+BEGIN_SRC d
case "comment":
break;
@@ -1817,7 +1881,7 @@ string latex_body(D,M)(
**** latex body return
-#+NAME: output_latex_body
+#+NAME: output_latex_body_6
#+BEGIN_SRC d
return _latex_body;
}
@@ -1826,7 +1890,7 @@ string latex_body(D,M)(
*** latex tail :tail:
**** latex tail function
-#+NAME: output_latex_tail
+#+NAME: output_latex_tail_0
#+BEGIN_SRC d
string latex_tail(M)(
M doc_matters,
@@ -1836,7 +1900,7 @@ string latex_tail(M)(
**** latex tail starts
-#+NAME: output_latex_tail
+#+NAME: output_latex_tail_1
#+BEGIN_SRC d
string _latex_tail = format(q"┃
#+END_SRC
@@ -1854,7 +1918,7 @@ string latex_tail(M)(
**** latex tail format inclusions
-#+NAME: output_latex_tail_close
+#+NAME: output_latex_tail_close_0
#+BEGIN_SRC d
┃",
// doc_matters.conf_make_meta.meta.title_full,
@@ -1864,7 +1928,7 @@ string latex_tail(M)(
**** latex tail return
-#+NAME: output_latex_tail_close
+#+NAME: output_latex_tail_close_1
#+BEGIN_SRC d
return _latex_tail;
}
diff --git a/org/out_metadata.org b/org/out_metadata.org
index 3b5bbc5..594eb72 100644
--- a/org/out_metadata.org
+++ b/org/out_metadata.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -24,7 +25,8 @@ template outputMetadata() {
@safe void outputMetadata(T)( T doc_matters) {
<<harvested_html_search>>
<<output_imports>>
-<<harvested_html_themes>>
+<<harvested_html_themes_0>>
+<<harvested_html_themes_1>>
<<harvested_topics_html_head_1>>
<<harvested_html_head>>
<<harvested_topics_html_head_2>>
@@ -258,7 +260,7 @@ metadata_write_output(doc_matters, metadata_);
*** themes
**** head
-#+NAME: harvested_html_themes
+#+NAME: harvested_html_themes_0
#+BEGIN_SRC css
string theme_dark_0 = format(q"┃
body {
@@ -324,7 +326,7 @@ string theme_light_0 = format(q"┃
**** levels
-#+NAME: harvested_html_themes
+#+NAME: harvested_html_themes_1
#+BEGIN_SRC css
string theme_dark_1 = format(q"┃
h1 {
diff --git a/org/out_odt.org b/org/out_odt.org
index 027816d..fe83c68 100644
--- a/org/out_odt.org
+++ b/org/out_odt.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -52,7 +53,31 @@ template formatODT() {
mixin spineRgxOut;
struct formatODT {
static auto rgx = RgxO();
- <<odt_format_objects>>
+ <<odt_format_objects_0>>
+ <<odt_format_objects_1>>
+ <<odt_format_objects_2>>
+ <<odt_format_objects_3>>
+ <<odt_format_objects_4>>
+ <<odt_format_objects_5>>
+ <<odt_format_objects_6>>
+ <<odt_format_objects_7>>
+ <<odt_format_objects_8>>
+ <<odt_format_objects_9>>
+ <<odt_format_objects_10>>
+ <<odt_format_objects_11>>
+ <<odt_format_objects_12>>
+ <<odt_format_objects_13>>
+ <<odt_format_objects_14>>
+ <<odt_format_objects_15>>
+ <<odt_format_objects_16>>
+ <<odt_format_objects_17>>
+ <<odt_format_objects_18>>
+ <<odt_format_objects_19>>
+ <<odt_format_objects_20>>
+ <<odt_format_objects_21>>
+ <<odt_format_objects_22>>
+ <<odt_format_objects_23>>
+ <<odt_format_objects_24>>
}
}
template outputODT() {
@@ -61,16 +86,40 @@ template outputODT() {
mixin spineRgxOut;
static auto rgx = RgxO();
// mixin outputXmlODT;
- <<output_odt_variable_content_xml>>
- <<output_odt_variable_manifest_xml>>
+ <<output_odt_variable_content_xml_0>>
+ <<output_odt_variable_content_xml_1>>
+ <<output_odt_variable_content_xml_2>>
+ <<output_odt_variable_content_xml_3>>
+ <<output_odt_variable_content_xml_4>>
+ <<output_odt_variable_content_xml_5>>
+ <<output_odt_variable_content_xml_6>>
+ <<output_odt_variable_content_xml_7>>
+ <<output_odt_variable_content_xml_8>>
+ <<output_odt_variable_content_xml_9>>
+ <<output_odt_variable_content_xml_10>>
+ <<output_odt_variable_content_xml_11>>
+ <<output_odt_variable_content_xml_12>>
+ <<output_odt_variable_content_xml_13>>
+ <<output_odt_variable_manifest_xml_0>>
+ <<output_odt_variable_manifest_xml_1>>
+ <<output_odt_variable_manifest_xml_2>>
<<output_odt_variable_copy_odt_images>>
- <<output_odt_variable_meta_xml>>
+ <<output_odt_variable_meta_xml_0>>
+ <<output_odt_variable_meta_xml_1>>
+ <<output_odt_variable_meta_xml_2>>
<<output_odt_fixed_dirtree>>
<<output_odt_fixed_mimetype>>
- <<output_odt_fixed_manifest_rdf>>
- <<output_odt_fixed_settings_xml>>
- <<output_odt_fixed_styles_xml>>
- <<output_odt>>
+ <<output_odt_fixed_manifest_rdf_0>>
+ <<output_odt_fixed_manifest_rdf_1>>
+ <<output_odt_fixed_manifest_rdf_2>>
+ <<output_odt_fixed_settings_xml_0>>
+ <<output_odt_fixed_settings_xml_1>>
+ <<output_odt_fixed_settings_xml_2>>
+ <<output_odt_fixed_styles_xml_0>>
+ <<output_odt_fixed_styles_xml_1>>
+ <<output_odt_fixed_styles_xml_2>>
+ <<output_odt_0>>
+ <<output_odt_1>>
}
#+END_SRC
@@ -87,7 +136,7 @@ template outputODT() {
**** object attrib
***** tags
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_0
#+BEGIN_SRC d
@safe string _tags(O)(const O obj) {
string _tags = "";
@@ -111,7 +160,7 @@ template outputODT() {
****** anchor tags
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_1
#+BEGIN_SRC d
@safe string _xhtml_anchor_tags(O)(O obj) {
const(string[]) anchor_tags = obj.tags.anchor_tags;
@@ -129,7 +178,7 @@ template outputODT() {
***** ocn object number display
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_2
#+BEGIN_SRC d
@safe string obj_num(O)(const O obj) { // TODO
string _on;
@@ -145,7 +194,7 @@ template outputODT() {
***** footnotes
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_3
#+BEGIN_SRC d
@safe string _footnotes()(string _txt) {
static auto rgx = RgxO();
@@ -170,7 +219,7 @@ template outputODT() {
***** bullet
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_4
#+BEGIN_SRC d
@safe string _bullet(O)(const O obj) {
string _b = "";
@@ -183,7 +232,7 @@ template outputODT() {
***** para (with bullet, indent levels, footnotes extracted)
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_5
#+BEGIN_SRC d
@safe string _indent(O)(string _txt, const O obj) { // TODO
// if (obj.attrib.indent_base > 0 ||
@@ -297,7 +346,7 @@ template outputODT() {
***** block type
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_6
#+BEGIN_SRC d
@safe string _block_type_delimiters(O)(string[] _block_lines, const O obj) { // TODO
string _block = "";
@@ -338,7 +387,7 @@ template outputODT() {
***** special characters
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_7
#+BEGIN_SRC d
@safe string _special_characters(O)(string _txt, const O obj) {
_txt = _txt
@@ -353,7 +402,7 @@ template outputODT() {
***** preserve white space
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_8
#+BEGIN_SRC d
@safe string _preserve_white_spaces(O)(string _txt, const O obj) {
if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") {
@@ -366,7 +415,7 @@ template outputODT() {
***** font_face
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_9
#+BEGIN_SRC d
string _font_face(string _txt){
_txt = _txt
@@ -386,7 +435,7 @@ string _font_face(string _txt){
***** object number
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_10
#+BEGIN_SRC d
@safe auto _obj_num(O)(O obj) { // NOT USED YET
struct objNum {
@@ -415,7 +464,7 @@ string _font_face(string _txt){
***** break page
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_11
#+BEGIN_SRC d
@safe string _break_page()() {
return format(q"┃
@@ -436,7 +485,7 @@ string _font_face(string _txt){
***** empty lines break
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_12
#+BEGIN_SRC d
@safe string _empty_line_break(O)(string _txt, const O obj) {
if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") {
@@ -449,7 +498,7 @@ string _font_face(string _txt){
***** links: url, mail
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_13
#+BEGIN_SRC d
@safe string _links(O)(string _txt, const O obj) {
if (obj.metainfo.is_a != "code") {
@@ -495,7 +544,7 @@ string _font_face(string _txt){
***** image
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_14
#+BEGIN_SRC d
@safe string _images(O)(string _txt, const O obj) {
if (_txt.match(rgx.inline_image)) {
@@ -512,7 +561,7 @@ string _font_face(string _txt){
**** markup hub (including font face)
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_15
#+BEGIN_SRC d
@safe string markup(O)(const O obj) {
/+ markup TODO +/
@@ -534,7 +583,7 @@ string _font_face(string _txt){
**** para type
***** heading
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_16
#+BEGIN_SRC d
@safe string heading(O,M)(
const O obj,
@@ -584,7 +633,7 @@ string _font_face(string _txt){
***** para
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_17
#+BEGIN_SRC d
@safe string para(O,M)(
const O obj,
@@ -610,7 +659,7 @@ string _font_face(string _txt){
**** block type
***** quote
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_18
#+BEGIN_SRC d
@safe string quote(O,M)(
const O obj,
@@ -631,7 +680,7 @@ string _font_face(string _txt){
- preserves double newlines (paragraph delimiter)
- the "group" delimiter is different from the "block" delimiter in that groups do not preserve whitespace, the "block" mark does
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_19
#+BEGIN_SRC d
@safe string group(O,M)(
const O obj,
@@ -666,7 +715,7 @@ string _font_face(string _txt){
- "^[ ]" &#160;
- count number only at beginning of line and replace each
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_20
#+BEGIN_SRC d
@safe string block(O,M)(
const O obj,
@@ -689,7 +738,7 @@ string _font_face(string _txt){
- preserves spaces
- preserves newlines
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_21
#+BEGIN_SRC d
@safe string verse(O,M)(
const O obj,
@@ -708,7 +757,7 @@ string _font_face(string _txt){
***** code
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_22
#+BEGIN_SRC d
@safe string code(O,M)(
const O obj,
@@ -762,7 +811,7 @@ string _font_face(string _txt){
***** table
****** tablarize
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_23
#+BEGIN_SRC d
@safe Tuple!(string, string) tablarize(O)(
const O obj,
@@ -802,7 +851,7 @@ string _font_face(string _txt){
****** table
-#+NAME: odt_format_objects
+#+NAME: odt_format_objects_24
#+BEGIN_SRC d
int _table_number = 0;
@safe string table(O,M)(
@@ -842,7 +891,7 @@ int _table_number = 0;
** write odt output :odf:odt:out:
-#+NAME: output_odt
+#+NAME: output_odt_0
#+BEGIN_SRC d
void writeOutputODT(W,I)(
const W odt_content,
@@ -931,7 +980,7 @@ void writeOutputODT(W,I)(
** odt output hub [#A] :odf:odt:out:
-#+NAME: output_odt
+#+NAME: output_odt_1
#+BEGIN_SRC d
void outputODT(D,I)(
const D doc_abstraction,
@@ -1019,13 +1068,13 @@ void dirtree(I)(
*** manifest.rdf :manifest_rdf:
-#+NAME: output_odt_fixed_manifest_rdf
+#+NAME: output_odt_fixed_manifest_rdf_0
#+BEGIN_SRC d
@safe string manifest_rdf() {
string _manifest_rdf = format(q"┃<?xml version="1.0" encoding="utf-8"?>
#+END_SRC
-#+NAME: output_odt_fixed_manifest_rdf
+#+NAME: output_odt_fixed_manifest_rdf_1
#+BEGIN_SRC xml
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="styles.xml">
@@ -1046,7 +1095,7 @@ void dirtree(I)(
</rdf:RDF>
#+END_SRC
-#+NAME: output_odt_fixed_manifest_rdf
+#+NAME: output_odt_fixed_manifest_rdf_2
#+BEGIN_SRC d
┃");
return _manifest_rdf;
@@ -1055,13 +1104,13 @@ void dirtree(I)(
*** settings.xml :settings:
-#+NAME: output_odt_fixed_settings_xml
+#+NAME: output_odt_fixed_settings_xml_0
#+BEGIN_SRC d
@safe string settings_xml() {
string _settings_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>
#+END_SRC
-#+NAME: output_odt_fixed_settings_xml
+#+NAME: output_odt_fixed_settings_xml_1
#+BEGIN_SRC xml
<office:document-settings xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.2">
<office:settings>
@@ -1160,7 +1209,7 @@ void dirtree(I)(
</office:document-settings>
#+END_SRC
-#+NAME: output_odt_fixed_settings_xml
+#+NAME: output_odt_fixed_settings_xml_2
#+BEGIN_SRC d
┃");
return _settings_xml;
@@ -1169,13 +1218,13 @@ void dirtree(I)(
*** styles.xml :styles_xml:
-#+NAME: output_odt_fixed_styles_xml
+#+NAME: output_odt_fixed_styles_xml_0
#+BEGIN_SRC d
@safe string styles_xml() {
string _styles_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>
#+END_SRC
-#+NAME: output_odt_fixed_styles_xml
+#+NAME: output_odt_fixed_styles_xml_1
#+BEGIN_SRC xml
<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2">
<office:font-face-decls>
@@ -2070,7 +2119,7 @@ void dirtree(I)(
</office:document-styles>
#+END_SRC
-#+NAME: output_odt_fixed_styles_xml
+#+NAME: output_odt_fixed_styles_xml_2
#+BEGIN_SRC d
┃");
return _styles_xml;
@@ -2082,7 +2131,7 @@ void dirtree(I)(
**** content head
***** head open
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_0
#+BEGIN_SRC d
@safe string odt_head(I)(I doc_matters) {
string _has_tables = format(q"┃
@@ -2090,7 +2139,7 @@ void dirtree(I)(
***** if table include within head
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_1
#+BEGIN_SRC xml
<style:style style:name="Table1" style:family="table">
<style:table-properties style:width="16.999cm" table:align="margins"/>
@@ -2168,7 +2217,7 @@ void dirtree(I)(
***** head
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_2
#+BEGIN_SRC d
┃",);
string _odt_head = format(q"┃<?xml version="1.0" encoding="UTF-8"?>
@@ -2176,7 +2225,7 @@ void dirtree(I)(
***** head xml
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_3
#+BEGIN_SRC xml
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2">
<office:scripts/>
@@ -2209,7 +2258,7 @@ void dirtree(I)(
***** head close
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_4
#+BEGIN_SRC d
┃",
(doc_matters.has.tables > 0) ? _has_tables : "",
@@ -2221,7 +2270,7 @@ void dirtree(I)(
**** ↻ content body
***** body open
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_5
#+BEGIN_SRC d
@safe string odt_body(D,I)(
const D doc_abstraction,
@@ -2236,7 +2285,7 @@ void dirtree(I)(
***** ↻ the loop & outer switch (sections & objects) format output
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_6
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.scroll) {
foreach (obj; doc_abstraction[part]) {
@@ -2245,7 +2294,7 @@ void dirtree(I)(
****** frontmatter
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_7
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
@@ -2270,7 +2319,7 @@ void dirtree(I)(
****** body
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_8
#+BEGIN_SRC d
case "body": assert(part == "body" || "head"); // surprise
switch (obj.metainfo.is_of_type) {
@@ -2321,7 +2370,7 @@ void dirtree(I)(
****** backmatter
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_9
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2371,7 +2420,7 @@ void dirtree(I)(
***** closings & post loop
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_10
#+BEGIN_SRC d
}
}
@@ -2382,13 +2431,13 @@ void dirtree(I)(
**** content book index?
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_11
#+BEGIN_SRC d
#+END_SRC
**** content tail
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_12
#+BEGIN_SRC d
@safe string odt_tail() {
string _odt_tail = format(q"┃<text:p text:style-name="P_normal">spine: &lt;<text:a xl:type="simple" xl:href="http://www.doc_reform.org">www.doc_reform.org</text:a>&gt; and &lt;<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>&gt;</text:p>
@@ -2399,7 +2448,7 @@ void dirtree(I)(
**** hub
-#+NAME: output_odt_variable_content_xml
+#+NAME: output_odt_variable_content_xml_13
#+BEGIN_SRC d
@safe string content_xml(D,I)(
const D doc_abstraction,
@@ -2420,7 +2469,7 @@ void dirtree(I)(
- META-INF/manifest.xml
- image list changes
-#+NAME: output_odt_variable_manifest_xml
+#+NAME: output_odt_variable_manifest_xml_0
#+BEGIN_SRC d
@safe string manifest_xml(M)(
auto ref M doc_matters,
@@ -2433,7 +2482,7 @@ void dirtree(I)(
string _manifest_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>
#+END_SRC
-#+NAME: output_odt_variable_manifest_xml
+#+NAME: output_odt_variable_manifest_xml_1
#+BEGIN_SRC xml
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
<manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.text" manifest:version="1.2" manifest:full-path="/"/>
@@ -2447,7 +2496,7 @@ void dirtree(I)(
</manifest:manifest>
#+END_SRC
-#+NAME: output_odt_variable_manifest_xml
+#+NAME: output_odt_variable_manifest_xml_2
#+BEGIN_SRC d
┃",
_images.join("\n"),
@@ -2458,7 +2507,7 @@ _images.join("\n"),
*** meta.xml (time stamp) :meta_xml:
-#+NAME: output_odt_variable_meta_xml
+#+NAME: output_odt_variable_meta_xml_0
#+BEGIN_SRC d
@safe string meta_xml(M)(
auto ref M doc_matters,
@@ -2467,7 +2516,7 @@ _images.join("\n"),
string _meta_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>
#+END_SRC
-#+NAME: output_odt_variable_meta_xml
+#+NAME: output_odt_variable_meta_xml_1
#+BEGIN_SRC xml
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.2">
<office:meta>
@@ -2479,7 +2528,7 @@ _images.join("\n"),
</office:document-meta>
#+END_SRC
-#+NAME: output_odt_variable_meta_xml
+#+NAME: output_odt_variable_meta_xml_2
#+BEGIN_SRC d
┃",
doc_matters.generator_program.name_and_version,
diff --git a/org/out_sqlite.org b/org/out_sqlite.org
index a35bcf1..a71a4ec 100644
--- a/org/out_sqlite.org
+++ b/org/out_sqlite.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -183,10 +184,33 @@ template SQLiteFormatAndLoadObject() {
mixin spineRgxOut;
struct sqlite_format_and_load_objects {
<<sanitize_text_for_search>>
- <<sanitize_and_munge_inline_html>>
- <<html_objects>>
- <<sqlite_load_object>>
- <<hub_format_and_sqlite_load_objects>>
+ <<sanitize_and_munge_inline_html_0>>
+ <<sanitize_and_munge_inline_html_1>>
+ <<sanitize_and_munge_inline_html_2>>
+ <<sanitize_and_munge_inline_html_3>>
+ <<sanitize_and_munge_inline_html_4>>
+ <<sanitize_and_munge_inline_html_5>>
+ <<sanitize_and_munge_inline_html_6>>
+ <<sanitize_and_munge_inline_html_7>>
+ <<html_objects_0>>
+ <<html_objects_1>>
+ <<html_objects_2>>
+ <<html_objects_3>>
+ <<html_objects_4>>
+ <<html_objects_5>>
+ <<html_objects_6>>
+ <<html_objects_7>>
+ <<sqlite_load_object_0>>
+ <<sqlite_load_object_1>>
+ <<sqlite_load_object_2>>
+ <<hub_format_and_sqlite_load_objects_0>>
+ <<hub_format_and_sqlite_load_objects_1>>
+ <<hub_format_and_sqlite_load_objects_2>>
+ <<hub_format_and_sqlite_load_objects_3>>
+ <<hub_format_and_sqlite_load_objects_4>>
+ <<hub_format_and_sqlite_load_objects_5>>
+ <<hub_format_and_sqlite_load_objects_6>>
+ <<hub_format_and_sqlite_load_objects_7>>
}
return sqlite_format_and_load_objects();
}
@@ -222,7 +246,9 @@ template SQLiteDeleteDocument() {
string SQLiteDeleteDocument(M)(
M doc_matters,
) {
- <<sqlite_formatted_delete>>
+ <<sqlite_formatted_delete_0>>
+ <<sqlite_formatted_delete_1>>
+ <<sqlite_formatted_delete_2>>
return _delete_uid;
}
}
@@ -236,8 +262,16 @@ template SQLiteInsertMetadata() {
string SQLiteInsertMetadata(M)(
M doc_matters,
) {
- <<sqlite_formatted_insertions_doc_matters_metadata>>
- <<sqlite_formatted_insertions_topic_register>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_0>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_1>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_2>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_3>>
+ <<sqlite_formatted_insertions_topic_register_0>>
+ <<sqlite_formatted_insertions_topic_register_1>>
+ <<sqlite_formatted_insertions_topic_register_2>>
+ <<sqlite_formatted_insertions_topic_register_3>>
+ <<sqlite_formatted_insertions_topic_register_4>>
+ <<sqlite_formatted_insertions_topic_register_5>>
return _insert_metadata;
}
}
@@ -255,7 +289,10 @@ template SQLiteInsertDocObjectsLoop() {
string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);
auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language);
string insertDocObjectsRow(O)(O obj) {
- <<sqlite_formatted_insertions_doc_objects>>
+ <<sqlite_formatted_insertions_doc_objects_0>>
+ <<sqlite_formatted_insertions_doc_objects_1>>
+ <<sqlite_formatted_insertions_doc_objects_2>>
+ <<sqlite_formatted_insertions_doc_objects_3>>
return _insert_doc_objects_row;
}
<<sqlite_objects_loop>>
@@ -477,7 +514,7 @@ light html objects
***** munge
****** general munge (special characters, inline markup, move notes)
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_0
#+BEGIN_SRC d
string munge_html(M,O)(
M doc_matters,
@@ -522,7 +559,7 @@ string munge_html(M,O)(
****** special characters
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_1
#+BEGIN_SRC d
string html_special_characters(string _txt){
_txt = _txt
@@ -538,7 +575,7 @@ string html_special_characters(string _txt){
****** special characters for code
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_2
#+BEGIN_SRC d
string html_special_characters_code(string _txt){
_txt = _txt
@@ -553,7 +590,7 @@ string html_special_characters_code(string _txt){
****** font_face
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_3
#+BEGIN_SRC d
string html_font_face(string _txt){
_txt = _txt
@@ -574,7 +611,7 @@ string html_font_face(string _txt){
****** inline markup
******* images
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_4
#+BEGIN_SRC d
string inline_images(M,O)(
M doc_matters,
@@ -605,7 +642,7 @@ string inline_images(M,O)(
******* links
******** scroll, seg, epub
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_5
#+BEGIN_SRC d
string inline_links(M,O)(
M doc_matters,
@@ -715,7 +752,7 @@ string inline_links(M,O)(
******* notes
******** scroll
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_6
#+BEGIN_SRC d
string inline_notes_scroll(M,O)(
M doc_matters,
@@ -751,7 +788,7 @@ string inline_notes_scroll(M,O)(
******* inline markup
-#+NAME: sanitize_and_munge_inline_html
+#+NAME: sanitize_and_munge_inline_html_7
#+BEGIN_SRC d
string xml_type="seg"; /+ set html document type to be linked to here (seg|scroll) +/
string inline_markup(M,O)(
@@ -769,7 +806,7 @@ string inline_markup(M,O)(
***** objects
****** heading
-#+NAME: html_objects
+#+NAME: html_objects_0
#+BEGIN_SRC d
string html_heading(M,O)(
M doc_matters,
@@ -815,7 +852,7 @@ string html_heading(M,O)(
****** para
-#+NAME: html_objects
+#+NAME: html_objects_1
#+BEGIN_SRC d
string html_para(M,O)(
M doc_matters,
@@ -842,7 +879,7 @@ string html_para(M,O)(
****** quote
-#+NAME: html_objects
+#+NAME: html_objects_2
#+BEGIN_SRC d
string html_quote(M,O)(
M doc_matters,
@@ -865,7 +902,7 @@ string html_quote(M,O)(
****** group
-#+NAME: html_objects
+#+NAME: html_objects_3
#+BEGIN_SRC d
string html_group(M,O)(
M doc_matters,
@@ -888,7 +925,7 @@ string html_group(M,O)(
****** block
-#+NAME: html_objects
+#+NAME: html_objects_4
#+BEGIN_SRC d
string html_block(M,O)(
M doc_matters,
@@ -910,7 +947,7 @@ string html_block(M,O)(
****** verse
-#+NAME: html_objects
+#+NAME: html_objects_5
#+BEGIN_SRC d
string html_verse(M,O)(
M doc_matters,
@@ -931,7 +968,7 @@ string html_verse(M,O)(
****** code
-#+NAME: html_objects
+#+NAME: html_objects_6
#+BEGIN_SRC d
string html_code(O)(
const O obj,
@@ -951,7 +988,7 @@ string html_code(O)(
****** table
-#+NAME: html_objects
+#+NAME: html_objects_7
#+BEGIN_SRC d
string html_table(M,O)(
M doc_matters,
@@ -1023,7 +1060,7 @@ string html_table(M,O)(
*** 2. hub (sqlite_format_and_load_objects)
**** sql related
-#+NAME: sqlite_load_object
+#+NAME: sqlite_load_object_0
#+BEGIN_SRC d
string sqlite_load_string(M,O)(
M doc_matters,
@@ -1034,7 +1071,7 @@ string sqlite_load_string(M,O)(
}
#+END_SRC
-#+NAME: sqlite_load_object
+#+NAME: sqlite_load_object_1
#+BEGIN_SRC d
string postgresql_load_string(M,O)(
M doc_matters,
@@ -1045,7 +1082,7 @@ string postgresql_load_string(M,O)(
}
#+END_SRC
-#+NAME: sqlite_load_object
+#+NAME: sqlite_load_object_2
#+BEGIN_SRC d
string sqlite_statement(O)(
const O obj,
@@ -1065,7 +1102,7 @@ string sqlite_statement(O)(
**** heading
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_0
#+BEGIN_SRC d
string[string] heading(M,O)(
M doc_matters,
@@ -1094,7 +1131,7 @@ string[string] heading(M,O)(
**** para
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_1
#+BEGIN_SRC d
string[string] para(M,O)(
M doc_matters,
@@ -1123,7 +1160,7 @@ string[string] para(M,O)(
**** quote
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_2
#+BEGIN_SRC d
string[string] quote(M,O)(
M doc_matters,
@@ -1151,7 +1188,7 @@ string[string] quote(M,O)(
#+END_SRC
**** group
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_3
#+BEGIN_SRC d
string[string] group(M,O)(
M doc_matters,
@@ -1180,7 +1217,7 @@ string[string] group(M,O)(
**** block
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_4
#+BEGIN_SRC d
string[string] block(M,O)(
M doc_matters,
@@ -1209,7 +1246,7 @@ string[string] block(M,O)(
**** verse
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_5
#+BEGIN_SRC d
string[string] verse(M,O)(
M doc_matters,
@@ -1238,7 +1275,7 @@ string[string] verse(M,O)(
**** code
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_6
#+BEGIN_SRC d
string[string] code(M,O)(
M doc_matters,
@@ -1267,7 +1304,7 @@ string[string] code(M,O)(
**** table
-#+NAME: hub_format_and_sqlite_load_objects
+#+NAME: hub_format_and_sqlite_load_objects_7
#+BEGIN_SRC d
string[string] table(M,O)(
M doc_matters,
@@ -1682,7 +1719,7 @@ CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register);
**** DELETE uid rows doc matters & metadata
***** sql statement: dlang format
-#+NAME: sqlite_formatted_delete
+#+NAME: sqlite_formatted_delete_0
#+BEGIN_SRC d
string _uid = doc_matters.src.doc_uid;
string _delete_uid = format(q"┃
@@ -1690,7 +1727,7 @@ string _delete_uid = format(q"┃
***** DELETE FROM ... WHERE
-#+NAME: sqlite_formatted_delete
+#+NAME: sqlite_formatted_delete_1
#+BEGIN_SRC sql
DELETE FROM metadata_and_text
WHERE uid = '%s';
@@ -1700,7 +1737,7 @@ WHERE uid_metadata_and_text = '%s';
***** VALUES
-#+NAME: sqlite_formatted_delete
+#+NAME: sqlite_formatted_delete_2
#+BEGIN_SRC d
┃",
_uid,
@@ -1712,7 +1749,7 @@ WHERE uid_metadata_and_text = '%s';
**** INSERT doc matters & metadata
***** sql statement: dlang format
-#+NAME: sqlite_formatted_insertions_doc_matters_metadata
+#+NAME: sqlite_formatted_insertions_doc_matters_metadata_0
#+BEGIN_SRC d
string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);
string _insert_metadata = format(q"┃
@@ -1720,7 +1757,7 @@ string _insert_metadata = format(q"┃
***** INSERT INTO
-#+NAME: sqlite_formatted_insertions_doc_matters_metadata
+#+NAME: sqlite_formatted_insertions_doc_matters_metadata_1
#+BEGIN_SRC sql
INSERT INTO metadata_and_text (
uid,
@@ -1778,7 +1815,7 @@ string _insert_metadata = format(q"┃
***** VALUES
-#+NAME: sqlite_formatted_insertions_doc_matters_metadata
+#+NAME: sqlite_formatted_insertions_doc_matters_metadata_2
#+BEGIN_SRC sql
VALUES (
'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
@@ -1787,7 +1824,7 @@ string _insert_metadata = format(q"┃
***** dlang values for formatting
-#+NAME: sqlite_formatted_insertions_doc_matters_metadata
+#+NAME: sqlite_formatted_insertions_doc_matters_metadata_3
#+BEGIN_SRC d
┃",
_uid,
@@ -1849,7 +1886,7 @@ writeln(doc_matters.conf_make_meta.meta.classify_topic_register_arr);
***** { if topic register then loop topic register array
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_0
#+BEGIN_SRC d
if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) {
string _insert_topics;
@@ -1859,14 +1896,14 @@ if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) {
***** sql statement: dlang format
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_1
#+BEGIN_SRC d
_insert_topics ~= format(q"┃
#+END_SRC
***** INSERT INTO
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_2
#+BEGIN_SRC sql
INSERT INTO topic_register (
uid_metadata_and_text,
@@ -1880,7 +1917,7 @@ _insert_topics ~= format(q"┃
***** VALUES
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_3
#+BEGIN_SRC sql
VALUES (
'%s', '%s', '%s', '%s', '%s', '%s'
@@ -1889,7 +1926,7 @@ _insert_topics ~= format(q"┃
***** dlang values for formatting
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_4
#+BEGIN_SRC d
┃",
_uid,
@@ -1903,7 +1940,7 @@ _insert_topics ~= format(q"┃
***** } close topic register & loop topic register array
-#+NAME: sqlite_formatted_insertions_topic_register
+#+NAME: sqlite_formatted_insertions_topic_register_5
#+BEGIN_SRC d
}
}
@@ -1920,14 +1957,14 @@ either:
***** sql statement: dlang format
-#+NAME: sqlite_formatted_insertions_doc_objects
+#+NAME: sqlite_formatted_insertions_doc_objects_0
#+BEGIN_SRC d
string _insert_doc_objects_row = format(q"┃
#+END_SRC
***** INSERT INTO
-#+NAME: sqlite_formatted_insertions_doc_objects
+#+NAME: sqlite_formatted_insertions_doc_objects_1
#+BEGIN_SRC sql
INSERT INTO doc_objects (
uid_metadata_and_text,
@@ -1944,7 +1981,7 @@ string _insert_doc_objects_row = format(q"┃
***** VALUES
-#+NAME: sqlite_formatted_insertions_doc_objects
+#+NAME: sqlite_formatted_insertions_doc_objects_2
#+BEGIN_SRC sql
VALUES (
'%s', %s, '%s', '%s', '%s', %s, '%s', '%s', '%s'
@@ -1953,7 +1990,7 @@ string _insert_doc_objects_row = format(q"┃
***** dlang values for formatting
-#+NAME: sqlite_formatted_insertions_doc_objects
+#+NAME: sqlite_formatted_insertions_doc_objects_3
#+BEGIN_SRC d
┃",
_uid,
diff --git a/org/out_src_pod.org b/org/out_src_pod.org
index 3fc6d82..e7d761b 100644
--- a/org/out_src_pod.org
+++ b/org/out_src_pod.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -29,7 +30,8 @@ template spinePod() {
<<source_pod_archive>>
try {
<<source_pod_mkdirs>>
- <<source_pod_copy>>
+ <<source_pod_copy_0>>
+ <<source_pod_copy_1>>
<<source_pod_zip>>
} catch (ErrnoException ex) {
// Handle error
@@ -140,7 +142,7 @@ if (doc_matters.opt.action.source) {
** copy :copy:
-#+NAME: source_pod_copy
+#+NAME: source_pod_copy_0
#+BEGIN_SRC d
debug(pod) {
writeln(__LINE__, ": ",
@@ -393,7 +395,7 @@ auto fn_pod = pths_pod.pod_filename(doc_matters.src.filename).zpod;
** sha256 of pod.zip, zip debug, read zip archive
-#+NAME: source_pod_copy
+#+NAME: source_pod_copy_1
#+BEGIN_SRC d
if (exists(fn_pod)) {
try {
diff --git a/org/out_xmls.org b/org/out_xmls.org
index c76e44b..eb83196 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -28,7 +29,45 @@ template outputXHTMLs() {
mixin spineRgxOut;
struct outputXHTMLs {
static auto rgx = RgxO();
- <<xhtml_format_objects>>
+ <<xhtml_format_objects_0>>
+ <<xhtml_format_objects_1>>
+ <<xhtml_format_objects_2>>
+ <<xhtml_format_objects_3>>
+ <<xhtml_format_objects_4>>
+ <<xhtml_format_objects_5>>
+ <<xhtml_format_objects_6>>
+ <<xhtml_format_objects_7>>
+ <<xhtml_format_objects_8>>
+ <<xhtml_format_objects_9>>
+ <<xhtml_format_objects_10>>
+ <<xhtml_format_objects_11>>
+ <<xhtml_format_objects_12>>
+ <<xhtml_format_objects_13>>
+ <<xhtml_format_objects_14>>
+ <<xhtml_format_objects_15>>
+ <<xhtml_format_objects_16>>
+ <<xhtml_format_objects_17>>
+ <<xhtml_format_objects_18>>
+ <<xhtml_format_objects_19>>
+ <<xhtml_format_objects_20>>
+ <<xhtml_format_objects_21>>
+ <<xhtml_format_objects_22>>
+ <<xhtml_format_objects_23>>
+ <<xhtml_format_objects_24>>
+ <<xhtml_format_objects_25>>
+ <<xhtml_format_objects_26>>
+ <<xhtml_format_objects_27>>
+ <<xhtml_format_objects_28>>
+ <<xhtml_format_objects_29>>
+ <<xhtml_format_objects_30>>
+ <<xhtml_format_objects_31>>
+ <<xhtml_format_objects_32>>
+ <<xhtml_format_objects_33>>
+ <<xhtml_format_objects_34>>
+ <<xhtml_format_objects_35>>
+ <<xhtml_format_objects_36>>
+ <<xhtml_format_objects_37>>
+ <<xhtml_format_objects_38>>
<<xhtml_format_objects_code>>
}
}
@@ -71,7 +110,7 @@ import
*** misc
**** div delimiter
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_0
#+BEGIN_SRC d
@safe string div_delimit(
string part,
@@ -107,7 +146,7 @@ import
**** special characters text
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_1
#+BEGIN_SRC d
@safe string special_characters_text(string _txt) {
_txt = _txt
@@ -122,7 +161,7 @@ import
**** special characters
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_2
#+BEGIN_SRC d
@safe string special_characters(O)(
const O obj,
@@ -138,7 +177,7 @@ import
**** font_face
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_3
#+BEGIN_SRC d
@safe string font_face(string _txt) {
_txt = _txt
@@ -158,7 +197,7 @@ import
**** anchor tags
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_4
#+BEGIN_SRC d
@safe string _xhtml_anchor_tags(O)(O obj) {
const(string[]) anchor_tags = obj.tags.anchor_tags;
@@ -177,7 +216,7 @@ import
**** doc head & tails
***** metadata
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_5
#+BEGIN_SRC d
@safe string header_metadata(M)(
M doc_matters,
@@ -220,7 +259,7 @@ import
***** site info button
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_6
#+BEGIN_SRC d
@safe string site_info_button(M)(
M doc_matters,
@@ -250,7 +289,7 @@ import
***** search form
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_7
#+BEGIN_SRC d
@safe string inline_search_form(M)(
M doc_matters,
@@ -289,7 +328,7 @@ import
***** html head & head banner
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_8
#+BEGIN_SRC d
@safe string html_head(M)(
M doc_matters,
@@ -346,7 +385,7 @@ import
***** epub seg head
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_9
#+BEGIN_SRC d
@safe string epub3_seg_head(M)(
M doc_matters,
@@ -420,7 +459,7 @@ import
***** xhtml tail
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_10
#+BEGIN_SRC d
@safe string tail() {
string o;
@@ -436,7 +475,7 @@ import
*** inline markup
**** images
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_11
#+BEGIN_SRC d
@safe string inline_images(O,M)(
string _txt,
@@ -469,7 +508,7 @@ import
**** links
***** scroll, seg, epub
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_12
#+BEGIN_SRC d
@safe string inline_links(O,M)(
string _txt,
@@ -567,7 +606,7 @@ import
**** notes
***** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_13
#+BEGIN_SRC d
@safe string inline_notes_scroll(O,M)(
string _txt,
@@ -604,7 +643,7 @@ import
***** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_14
#+BEGIN_SRC d
@safe Tuple!(string, string[]) inline_notes_seg(O,M)(
string _txt,
@@ -675,7 +714,7 @@ import
**** inline markup
***** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_15
#+BEGIN_SRC d
@safe string inline_markup_scroll(O,M)(
string _txt,
@@ -697,7 +736,7 @@ import
***** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_16
#+BEGIN_SRC d
@safe auto inline_markup_seg(O,M)(
string _txt,
@@ -724,7 +763,7 @@ import
*** toc
**** subtoc
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_17
#+BEGIN_SRC d
@safe string lev4_heading_subtoc(O,M)(
const O obj,
@@ -757,7 +796,7 @@ import
**** navigation pre next svg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_18
#+BEGIN_SRC d
@safe auto nav_pre_next_svg(O,M)(
const O obj,
@@ -838,7 +877,7 @@ import
*** heading
**** heading
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_19
#+BEGIN_SRC d
@safe string heading(O,M)(
string _txt,
@@ -909,7 +948,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_20
#+BEGIN_SRC d
@safe string heading_scroll(O,M)(
string _txt,
@@ -925,7 +964,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_21
#+BEGIN_SRC d
@safe Tuple!(string, string[]) heading_seg(O,M)(
string _txt,
@@ -949,7 +988,7 @@ import
*** para
**** para
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_22
#+BEGIN_SRC d
@safe string para(O,M)(
string _txt,
@@ -1005,7 +1044,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_23
#+BEGIN_SRC d
@safe string para_scroll(O,M)(
string _txt,
@@ -1024,7 +1063,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_24
#+BEGIN_SRC d
@safe Tuple!(string, string[]) para_seg(O,M)(
string _txt,
@@ -1048,7 +1087,7 @@ import
*** quote
**** quote
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_25
#+BEGIN_SRC d
@safe string quote(O,M)(
string _txt,
@@ -1090,7 +1129,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_26
#+BEGIN_SRC d
@safe string quote_scroll(O,M)(
string _txt,
@@ -1106,7 +1145,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_27
#+BEGIN_SRC d
@safe Tuple!(string, string[]) quote_seg(O,M)(
string _txt,
@@ -1130,7 +1169,7 @@ import
*** group
**** group
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_28
#+BEGIN_SRC d
@safe string group(O,M)(
string _txt,
@@ -1174,7 +1213,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_29
#+BEGIN_SRC d
@safe string group_scroll(O,M)(
string _txt,
@@ -1191,7 +1230,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_30
#+BEGIN_SRC d
@safe Tuple!(string, string[]) group_seg(O,M)(
string _txt,
@@ -1215,7 +1254,7 @@ import
*** block
**** block
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_31
#+BEGIN_SRC d
@safe string block(O,M)(
string _txt,
@@ -1255,7 +1294,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_32
#+BEGIN_SRC d
@safe string block_scroll(O,M)(
string _txt,
@@ -1272,7 +1311,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_33
#+BEGIN_SRC d
@safe Tuple!(string, string[]) block_seg(O,M)(
string _txt,
@@ -1296,7 +1335,7 @@ import
*** poem verse
**** verse
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_34
#+BEGIN_SRC d
@safe string verse(O,M)(
string _txt,
@@ -1334,7 +1373,7 @@ import
**** scroll
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_35
#+BEGIN_SRC d
@safe string verse_scroll(O,M)(
string _txt,
@@ -1351,7 +1390,7 @@ import
**** seg
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_36
#+BEGIN_SRC d
@safe Tuple!(string, string[]) verse_seg(O,M)(
string _txt,
@@ -1446,7 +1485,7 @@ align="left|right|center"
"style=\"text-align:" ~ "right\""
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_37
#+BEGIN_SRC d
@safe Tuple!(string, string) tablarize(O)(
string _txt,
@@ -1485,7 +1524,7 @@ align="left|right|center"
**** table
-#+NAME: xhtml_format_objects
+#+NAME: xhtml_format_objects_38
#+BEGIN_SRC d
@safe string table(O,M)(
string _txt,
@@ -1531,8 +1570,22 @@ module doc_reform.io_out.html;
template outputHTML() {
<<output_imports_xml>>
mixin outputXHTMLs;
- <<output_html_scroll>>
- <<output_html_seg>>
+ <<output_html_scroll_0>>
+ <<output_html_scroll_1>>
+ <<output_html_scroll_2>>
+ <<output_html_scroll_3>>
+ <<output_html_scroll_4>>
+ <<output_html_scroll_5>>
+ <<output_html_scroll_6>>
+ <<output_html_seg_0>>
+ <<output_html_seg_1>>
+ <<output_html_seg_2>>
+ <<output_html_seg_3>>
+ <<output_html_seg_4>>
+ <<output_html_seg_5>>
+ <<output_html_seg_6>>
+ <<output_html_seg_7>>
+ <<output_html_seg_8>>
<<output_html_css>>
<<copy_html_images>>
}
@@ -1541,7 +1594,7 @@ template outputHTML() {
** scroll :scroll:
*** ↻ loop & switch (sections & objects) format html output
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_0
#+BEGIN_SRC d
@safe void scroll(D,M)(
const D doc_abstraction,
@@ -1559,7 +1612,7 @@ template outputHTML() {
**** ↻ the loops & outer switch (sections & objects) format output
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_1
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.scroll) {
foreach (obj; doc_abstraction[part]) {
@@ -1570,7 +1623,7 @@ template outputHTML() {
***** frontmatter
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_2
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
@@ -1606,7 +1659,7 @@ template outputHTML() {
***** body
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_3
#+BEGIN_SRC d
case "body": assert(part == "body" || "head");
switch (obj.metainfo.is_of_type) {
@@ -1674,7 +1727,7 @@ template outputHTML() {
***** backmatter
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_4
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -1735,7 +1788,7 @@ template outputHTML() {
***** closings & post loop
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_5
#+BEGIN_SRC d
}
}
@@ -1747,7 +1800,7 @@ template outputHTML() {
*** write output file
-#+NAME: output_html_scroll
+#+NAME: output_html_scroll_6
#+BEGIN_SRC d
@trusted void scroll_write_output(D,M)(
D doc,
@@ -1777,7 +1830,7 @@ template outputHTML() {
** seg :seg:
*** ↻ loop & switch (sections & objects) format html output
-#+NAME: output_html_seg
+#+NAME: output_html_seg_0
#+BEGIN_SRC d
@safe void seg(D,M)(
const D doc_abstraction,
@@ -1799,7 +1852,7 @@ template outputHTML() {
**** ↻ the loop (sections & objects) format output
-#+NAME: output_html_seg
+#+NAME: output_html_seg_1
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
@@ -1809,7 +1862,7 @@ template outputHTML() {
***** all headings
-#+NAME: output_html_seg
+#+NAME: output_html_seg_2
#+BEGIN_SRC d
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -1882,7 +1935,7 @@ template outputHTML() {
***** non-heading
-#+NAME: output_html_seg
+#+NAME: output_html_seg_3
#+BEGIN_SRC d
} else {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -1891,7 +1944,7 @@ template outputHTML() {
****** frontmatter
-#+NAME: output_html_seg
+#+NAME: output_html_seg_4
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
@@ -1925,7 +1978,7 @@ template outputHTML() {
****** body
-#+NAME: output_html_seg
+#+NAME: output_html_seg_5
#+BEGIN_SRC d
case "body": assert(part == "body");
switch (obj.metainfo.is_of_type) {
@@ -2001,7 +2054,7 @@ template outputHTML() {
****** backmatter
-#+NAME: output_html_seg
+#+NAME: output_html_seg_6
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2067,7 +2120,7 @@ template outputHTML() {
***** closings & post loop
-#+NAME: output_html_seg
+#+NAME: output_html_seg_7
#+BEGIN_SRC d
}
}
@@ -2078,7 +2131,7 @@ template outputHTML() {
*** write output files
-#+NAME: output_html_seg
+#+NAME: output_html_seg_8
#+BEGIN_SRC d
@trusted void seg_write_output(D,E,M)( // @system?
D doc_html,
@@ -2194,10 +2247,22 @@ template outputEPub3() {
<<output_imports_epub>>
mixin InternalMarkup;
mixin outputXHTMLs;
- <<output_epub3_fixed>>
- <<output_epub3_constructs>>
+ <<output_epub3_fixed_0>>
+ <<output_epub3_fixed_1>>
+ <<output_epub3_constructs_0>>
+ <<output_epub3_constructs_1>>
+ <<output_epub3_constructs_2>>
<<output_epub3_xhtml>>
- <<output_epub3_xhtml_seg>>
+ <<output_epub3_xhtml_seg_0>>
+ <<output_epub3_xhtml_seg_1>>
+ <<output_epub3_xhtml_seg_2>>
+ <<output_epub3_xhtml_seg_3>>
+ <<output_epub3_xhtml_seg_4>>
+ <<output_epub3_xhtml_seg_5>>
+ <<output_epub3_xhtml_seg_6>>
+ <<output_epub3_xhtml_seg_7>>
+ <<output_epub3_xhtml_seg_8>>
+ <<output_epub3_xhtml_seg_9>>
<<output_epub3_css>>
}
#+END_SRC
@@ -2208,7 +2273,7 @@ template outputEPub3() {
- mimetype file indicating that zip file contains an EPUB
-#+NAME: output_epub3_fixed
+#+NAME: output_epub3_fixed_0
#+BEGIN_SRC d
@safe string epub3_mimetypes() {
string o;
@@ -2221,7 +2286,7 @@ template outputEPub3() {
- identifies the root package document (so systems can find it), [unchanged from epub2]
-#+NAME: output_epub3_fixed
+#+NAME: output_epub3_fixed_1
#+BEGIN_SRC d
@safe string epub3_container_xml() {
string o;
@@ -2243,7 +2308,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
- provides the default reading order
- identifies the navigation document
-#+NAME: output_epub3_constructs
+#+NAME: output_epub3_constructs_0
#+BEGIN_SRC d
@safe string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
auto xhtml_format = outputXHTMLs();
@@ -2349,7 +2414,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
- toc_nav.xhtml declared as nav file in content.opf (epub3 navigation document)
-#+NAME: output_epub3_constructs
+#+NAME: output_epub3_constructs_1
#+BEGIN_SRC d
@safe string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
enum DomTags { none, open, close, close_and_open, open_still, }
@@ -2437,7 +2502,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
- toc.ncx (epub2 navigation document)
- (replaced in epub3 by a declared xhtml nav file, in our case toc_nav.xhtml)
-#+NAME: output_epub3_constructs
+#+NAME: output_epub3_constructs_2
#+BEGIN_SRC d
@safe string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {
int counter = 0;
@@ -2533,7 +2598,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
** the document contents :seg:
*** ↻ loop & switch (sections & objects) format epub3 xhtml output
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_0
#+BEGIN_SRC d
@system void outputEPub3(D,I)(
const D doc_abstraction,
@@ -2564,7 +2629,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
**** ↻ the loop (sections & objects) format output
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_1
#+BEGIN_SRC d
foreach (part; doc_matters.has.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
@@ -2573,7 +2638,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
***** all headings
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_2
#+BEGIN_SRC d
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2642,7 +2707,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
***** non-heading
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_3
#+BEGIN_SRC d
} else {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2651,7 +2716,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
****** frontmatter
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_4
#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
@@ -2686,7 +2751,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
****** body
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_5
#+BEGIN_SRC d
case "body": assert(part == "body");
switch (obj.metainfo.is_of_type) {
@@ -2762,7 +2827,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
****** backmatter
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_6
#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
@@ -2873,7 +2938,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
***** closings & post loop
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_7
#+BEGIN_SRC d
}
}
@@ -2890,7 +2955,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
** write output files :write:zip:
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_8
#+BEGIN_SRC d
@system void epub3_write_output_files(W,M)(
W epub_write,
@@ -3086,7 +3151,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
** zip debug, read zip archive :zip:
-#+NAME: output_epub3_xhtml_seg
+#+NAME: output_epub3_xhtml_seg_9
#+BEGIN_SRC d
debug(epub_archive) {
if (exists(fn_epub)) {
diff --git a/org/out_xmls_css.org b/org/out_xmls_css.org
index be358a6..38bb73d 100644
--- a/org/out_xmls_css.org
+++ b/org/out_xmls_css.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -31,39 +32,90 @@ template spineCss() {
<<css_insert_shared_insert_variable_indent_values>>
<<css_insert_shared_insert_variable_ocn_color_values>>
string _css_light_html_seg = format(q"┃
-<<css_light_shared>>
-<<css_light_html_seg>>
+<<css_light_shared_0>>
+<<css_light_shared_1>>
+<<css_light_shared_2>>
+<<css_light_shared_3>>
+<<css_light_shared_4>>
+<<css_light_shared_5>>
+<<css_light_shared_6>>
+<<css_light_shared_7>>
+<<css_light_shared_8>>
+<<css_light_shared_9>>
+<<css_light_html_seg_0>>
+<<css_light_html_seg_1>>
+<<css_light_html_seg_2>>
┃",
_color_ocn_light,
_css_indent,
_color_ocn_light,
);
string _css_dark_html_seg = format(q"┃
-<<css_dark_shared>>
-<<css_dark_html_seg>>
+<<css_dark_shared_0>>
+<<css_dark_shared_1>>
+<<css_dark_shared_2>>
+<<css_dark_shared_3>>
+<<css_dark_shared_4>>
+<<css_dark_shared_5>>
+<<css_dark_shared_6>>
+<<css_dark_shared_7>>
+<<css_dark_shared_8>>
+<<css_dark_shared_9>>
+<<css_dark_html_seg_0>>
+<<css_dark_html_seg_1>>
+<<css_dark_html_seg_2>>
┃",
_color_ocn_dark,
_css_indent,
_color_ocn_dark,
);
string _css_light_html_scroll = format(q"┃
-<<css_light_shared>>
-<<css_light_html_scroll>>
+<<css_light_shared_0>>
+<<css_light_shared_1>>
+<<css_light_shared_2>>
+<<css_light_shared_3>>
+<<css_light_shared_4>>
+<<css_light_shared_5>>
+<<css_light_shared_6>>
+<<css_light_shared_7>>
+<<css_light_shared_8>>
+<<css_light_shared_9>>
+<<css_light_html_scroll_0>>
+<<css_light_html_scroll_1>>
┃",
_color_ocn_light,
_css_indent,
_color_ocn_light,
);
string _css_dark_html_scroll = format(q"┃
-<<css_dark_shared>>
-<<css_dark_html_scroll>>
+<<css_dark_shared_0>>
+<<css_dark_shared_1>>
+<<css_dark_shared_2>>
+<<css_dark_shared_3>>
+<<css_dark_shared_4>>
+<<css_dark_shared_5>>
+<<css_dark_shared_6>>
+<<css_dark_shared_7>>
+<<css_dark_shared_8>>
+<<css_dark_shared_9>>
+<<css_dark_html_scroll_0>>
+<<css_dark_html_scroll_1>>
┃",
_color_ocn_dark,
_css_indent,
_color_ocn_dark,
);
string _css_light_epub = format(q"┃
-<<css_light_shared>>
+<<css_light_shared_0>>
+<<css_light_shared_1>>
+<<css_light_shared_2>>
+<<css_light_shared_3>>
+<<css_light_shared_4>>
+<<css_light_shared_5>>
+<<css_light_shared_6>>
+<<css_light_shared_7>>
+<<css_light_shared_8>>
+<<css_light_shared_9>>
<<css_light_epub>>
┃",
_color_ocn_light,
@@ -71,7 +123,16 @@ template spineCss() {
_color_ocn_light,
);
string _css_dark_epub = format(q"┃
-<<css_dark_shared>>
+<<css_dark_shared_0>>
+<<css_dark_shared_1>>
+<<css_dark_shared_2>>
+<<css_dark_shared_3>>
+<<css_dark_shared_4>>
+<<css_dark_shared_5>>
+<<css_dark_shared_6>>
+<<css_dark_shared_7>>
+<<css_dark_shared_8>>
+<<css_dark_shared_9>>
<<css_dark_epub>>
┃",
_color_ocn_dark,
@@ -105,7 +166,7 @@ template spineCss() {
*** html shared
**** general
-#+NAME: css_light_shared
+#+NAME: css_light_shared_0
#+BEGIN_SRC css
*{
padding : 0px;
@@ -124,7 +185,7 @@ template spineCss() {
**** link
-#+NAME: css_light_shared
+#+NAME: css_light_shared_1
#+BEGIN_SRC css
a:link {
color : #003399;
@@ -165,7 +226,7 @@ template spineCss() {
**** div
-#+NAME: css_light_shared
+#+NAME: css_light_shared_2
#+BEGIN_SRC css
div {
margin-left : 0;
@@ -283,7 +344,7 @@ template spineCss() {
**** paragraphs headings blocks
***** misc
-#+NAME: css_light_shared
+#+NAME: css_light_shared_3
#+BEGIN_SRC css
.norm, .bold, .verse, .group, .block, .alt {
line-height : 133%%;
@@ -309,7 +370,7 @@ template spineCss() {
}
#+END_SRC
-#+NAME: css_light_shared
+#+NAME: css_light_shared_4
#+BEGIN_SRC css
img {
max-width : 100%%;
@@ -319,7 +380,7 @@ template spineCss() {
***** code block
-#+NAME: css_light_shared
+#+NAME: css_light_shared_5
#+BEGIN_SRC css
pre {
width : auto;
@@ -386,7 +447,7 @@ template spineCss() {
***** paragraph general
-#+NAME: css_light_shared
+#+NAME: css_light_shared_6
#+BEGIN_SRC css
p.spaced { white-space : pre; }
p.block {
@@ -502,14 +563,14 @@ template spineCss() {
***** paragraph indent
-#+NAME: css_light_shared
+#+NAME: css_light_shared_7
#+BEGIN_SRC css
%s
#+END_SRC
***** misc including tables & lists
-#+NAME: css_light_shared
+#+NAME: css_light_shared_8
#+BEGIN_SRC css
note { white-space : pre; }
label.ocn {
@@ -578,7 +639,7 @@ template spineCss() {
***** headings
-#+NAME: css_light_shared
+#+NAME: css_light_shared_9
#+BEGIN_SRC css
h0, h1, h2, h3, h4, h5, h6, h7 {
font-weight : bold;
@@ -683,7 +744,7 @@ template spineCss() {
*** html seg
**** previous next
-#+NAME: css_light_html_seg
+#+NAME: css_light_html_seg_0
#+BEGIN_SRC css
.icon-bar {
width : 100%%;
@@ -763,7 +824,7 @@ template spineCss() {
**** flex
-#+NAME: css_light_html_seg
+#+NAME: css_light_html_seg_1
#+BEGIN_SRC css
/* flex */
.flex-menu-bar {
@@ -800,7 +861,7 @@ template spineCss() {
Consider what if anything should be used here
-#+NAME: css_light_html_seg
+#+NAME: css_light_html_seg_2
#+BEGIN_SRC css
/* grid */
.wrapper {
@@ -889,7 +950,7 @@ Consider what if anything should be used here
*** html scroll
**** flex
-#+NAME: css_light_html_scroll
+#+NAME: css_light_html_scroll_0
#+BEGIN_SRC css
/* flex */
.flex-menu-bar {
@@ -924,7 +985,7 @@ Consider what if anything should be used here
**** grid
-#+NAME: css_light_html_scroll
+#+NAME: css_light_html_scroll_1
#+BEGIN_SRC css
/* grid */
.wrapper {
@@ -1020,7 +1081,7 @@ Consider what if anything should be used here
*** html shared
**** general
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_0
#+BEGIN_SRC css
*{
padding : 0px;
@@ -1039,7 +1100,7 @@ Consider what if anything should be used here
**** link
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_1
#+BEGIN_SRC css
a:link {
color : #FFFFFF;
@@ -1080,7 +1141,7 @@ Consider what if anything should be used here
**** div
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_2
#+BEGIN_SRC css
div {
margin-left : 0;
@@ -1198,7 +1259,7 @@ Consider what if anything should be used here
**** paragraphs headings blocks
***** misc
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_3
#+BEGIN_SRC css
.norm, .bold, .verse, .group, .block, .alt {
line-height : 133%%;
@@ -1224,7 +1285,7 @@ Consider what if anything should be used here
}
#+END_SRC
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_4
#+BEGIN_SRC css
img {
max-width : 100%%;
@@ -1234,7 +1295,7 @@ Consider what if anything should be used here
***** code block
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_5
#+BEGIN_SRC css
pre {
width : auto;
@@ -1300,7 +1361,7 @@ Consider what if anything should be used here
***** paragraph general
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_6
#+BEGIN_SRC css
p.spaced { white-space : pre; }
p.block {
@@ -1416,14 +1477,14 @@ Consider what if anything should be used here
***** paragraph indent
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_7
#+BEGIN_SRC css
%s
#+END_SRC
***** misc including tables & lists
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_8
#+BEGIN_SRC css
note { white-space : pre; }
label.ocn {
@@ -1492,7 +1553,7 @@ Consider what if anything should be used here
***** headings
-#+NAME: css_dark_shared
+#+NAME: css_dark_shared_9
#+BEGIN_SRC css
h0, h1, h2, h3, h4, h5, h6, h7 {
font-weight : bold;
@@ -1597,7 +1658,7 @@ Consider what if anything should be used here
*** html seg
**** previous next
-#+NAME: css_dark_html_seg
+#+NAME: css_dark_html_seg_0
#+BEGIN_SRC css
.icon-bar {
width : 100%%;
@@ -1677,7 +1738,7 @@ Consider what if anything should be used here
**** flex
-#+NAME: css_dark_html_seg
+#+NAME: css_dark_html_seg_1
#+BEGIN_SRC css
/* flex */
.flex-menu-bar {
@@ -1714,7 +1775,7 @@ Consider what if anything should be used here
Consider what if anything should be used here
-#+NAME: css_dark_html_seg
+#+NAME: css_dark_html_seg_2
#+BEGIN_SRC css
/* grid */
.wrapper {
@@ -1803,7 +1864,7 @@ Consider what if anything should be used here
*** html scroll
**** flex
-#+NAME: css_dark_html_scroll
+#+NAME: css_dark_html_scroll_0
#+BEGIN_SRC css
/* flex */
.flex-menu-bar {
@@ -1838,7 +1899,7 @@ Consider what if anything should be used here
**** grid
-#+NAME: css_dark_html_scroll
+#+NAME: css_dark_html_scroll_1
#+BEGIN_SRC css
/* grid */
.wrapper {
diff --git a/org/out_zip.org b/org/out_zip.org
index 8a98638..8af05f8 100644
--- a/org/out_zip.org
+++ b/org/out_zip.org
@@ -6,6 +6,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/output_hub.org b/org/output_hub.org
index 5116c7c..7b8b96c 100644
--- a/org/output_hub.org
+++ b/org/output_hub.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -38,7 +39,15 @@ template outputHub() {
enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff }
void Scheduled(D,I)(int sched, D doc_abstraction, I doc_matters) {
auto msg = Msg!()(doc_matters);
- <<output_scheduled_task>>
+ <<output_scheduled_task_source_or_pod>>
+ <<output_scheduled_task_epub>>
+ <<output_scheduled_task_html_meta>>
+ <<output_scheduled_task_html_scroll>>
+ <<output_scheduled_task_html_seg>>
+ <<output_scheduled_task_html_out>>
+ <<output_scheduled_task_latex>>
+ <<output_scheduled_task_odt>>
+ <<output_scheduled_task_sqlite>>
}
if (!(doc_matters.opt.action.quiet)) {
writeln(" ", doc_matters.src.filename_base);
@@ -61,7 +70,9 @@ template outputHubOp() {
@system void outputHubOp(E,O,C)(E env, O opt_action, C config) {
mixin spineRgxOut;
static auto rgx = RgxO();
- <<output_options_op>>
+ <<output_options_op_sqlite_db_drop>>
+ <<output_options_op_sqlite_db_create>>
+ <<output_options_op_cgi_search_form_codegen>>
}
}
#+END_SRC
@@ -82,7 +93,7 @@ import doc_reform.io_out,
**** source: _dr_src_ &/or _pod_ :source:pod:
- [[./output_pod.org][output_pod]]
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_source_or_pod
#+BEGIN_SRC d
if (sched == outTask.source_or_pod) {
if (doc_matters.opt.action.source) {
@@ -104,7 +115,7 @@ if (sched == outTask.source_or_pod) {
**** epub :epub:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_epub
#+BEGIN_SRC d
if (sched == outTask.epub) {
msg.v("epub3 processing... ");
@@ -117,7 +128,7 @@ if (sched == outTask.epub) {
**** html :html:
***** metadata :metadata:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_html_meta
#+BEGIN_SRC d
if (sched == outTask.html_stuff) {
outputMetadata!()(doc_matters);
@@ -127,7 +138,7 @@ if (sched == outTask.html_stuff) {
***** scroll :scroll:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_html_scroll
#+BEGIN_SRC d
if (sched == outTask.html_scroll) {
msg.v("html scroll processing... ");
@@ -139,7 +150,7 @@ if (sched == outTask.html_scroll) {
***** seg :seg:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_html_seg
#+BEGIN_SRC d
if (sched == outTask.html_seg) {
msg.v("html seg processing... ");
@@ -151,7 +162,7 @@ if (sched == outTask.html_seg) {
***** css, images etc :css:images:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_html_out
#+BEGIN_SRC d
if (sched == outTask.html_stuff) {
import doc_reform.io_out.html;
@@ -163,7 +174,7 @@ if (sched == outTask.html_stuff) {
**** latex / pdf :latex:pdf:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_latex
#+BEGIN_SRC d
if (sched == outTask.latex) {
msg.v("latex processing... (available for downstream processing & pdf output");
@@ -175,7 +186,7 @@ if (sched == outTask.latex) {
**** odf / odt :odf:odt:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_odt
#+BEGIN_SRC d
if (sched == outTask.odt) {
msg.v("odf:odt processing... ");
@@ -187,7 +198,7 @@ if (sched == outTask.odt) {
**** sqlite discrete :sqlite:
-#+NAME: output_scheduled_task
+#+NAME: output_scheduled_task_sqlite
#+BEGIN_SRC d
if (sched == outTask.sqlite) {
msg.v("sqlite processing... ");
@@ -219,7 +230,7 @@ if (doc_matters.opt.action.sqlite_update) {
***** no markup source files to process
****** drop :drop:
-#+NAME: output_options_op
+#+NAME: output_options_op_sqlite_db_drop
#+BEGIN_SRC d
if ((opt_action.sqlite_db_drop)) {
if ((opt_action.verbose)) {
@@ -235,7 +246,7 @@ if ((opt_action.sqlite_db_drop)) {
****** create :create:
-#+NAME: output_options_op
+#+NAME: output_options_op_sqlite_db_create
#+BEGIN_SRC d
if ((opt_action.sqlite_db_create)) {
if ((opt_action.verbose)) {
@@ -252,7 +263,7 @@ if ((opt_action.sqlite_db_create)) {
**** cgi sqlite search form
-#+NAME: output_options_op
+#+NAME: output_options_op_cgi_search_form_codegen
#+BEGIN_SRC d
if ((opt_action.cgi_search_form_codegen)) {
if ((opt_action.verbose)) {
diff --git a/org/output_show.org b/org/output_show.org
index ff33803..8550f53 100644
--- a/org/output_show.org
+++ b/org/output_show.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/spine.org b/org/spine.org
index 82cdeb7..5f39984 100644
--- a/org/spine.org
+++ b/org/spine.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -96,8 +97,16 @@ string project_name = "spine";
string program_name = "spine";
@system void main(string[] args) {
<<spine_mixin>>
- <<spine_init>>
- <<spine_args>>
+ <<spine_init_0>>
+ <<spine_init_1>>
+ <<spine_init_2>>
+ <<spine_args_0>>
+ <<spine_args_1>>
+ <<spine_args_2>>
+ <<spine_args_3>>
+ <<spine_args_4>>
+ <<spine_args_5>>
+ <<spine_args_6>>
if (_manifests.length > 1 // _manifests[0] initialized dummy element
&& _opt_action.abstraction) {
if (_opt_action.parallelise) { // see else
@@ -106,7 +115,12 @@ string program_name = "spine";
if (!empty(manifest.src.filename)) {
<<spine_each_file_do_scope>>
<<spine_each_file_do_abstraction>>
- <<spine_each_file_do_debugs_checkdoc>>
+ <<spine_each_file_do_debugs_checkdoc_0>>
+ <<spine_each_file_do_debugs_checkdoc_1>>
+ <<spine_each_file_do_debugs_checkdoc_2>>
+ <<spine_each_file_do_debugs_checkdoc_3>>
+ <<spine_each_file_do_debugs_checkdoc_4>>
+ <<spine_each_file_do_debugs_checkdoc_5>>
<<spine_each_file_do_selected_output>>
<<spine_each_file_do_scope_exit>>
} else {
@@ -121,7 +135,12 @@ string program_name = "spine";
if (!empty(manifest.src.filename)) {
<<spine_each_file_do_scope>>
<<spine_each_file_do_abstraction>>
- <<spine_each_file_do_debugs_checkdoc>>
+ <<spine_each_file_do_debugs_checkdoc_0>>
+ <<spine_each_file_do_debugs_checkdoc_1>>
+ <<spine_each_file_do_debugs_checkdoc_2>>
+ <<spine_each_file_do_debugs_checkdoc_3>>
+ <<spine_each_file_do_debugs_checkdoc_4>>
+ <<spine_each_file_do_debugs_checkdoc_5>>
<<spine_each_file_do_selected_output>>
<<spine_each_file_do_scope_exit>>
} else {
@@ -307,14 +326,14 @@ mixin outputHub;
**** init :init:
-#+NAME: spine_init
+#+NAME: spine_init_0
#+BEGIN_SRC d
auto hvst = spineHarvest!();
#+END_SRC
**** args :args:
-#+NAME: spine_init
+#+NAME: spine_init_1
#+BEGIN_SRC d
string flag_action;
string arg_unrecognized;
@@ -324,7 +343,7 @@ static auto rgx = RgxI();
*** scope (run complete) :scope:
-#+NAME: spine_init
+#+NAME: spine_init_2
#+BEGIN_SRC d
scope(success) {
writefln(
@@ -349,7 +368,7 @@ scope(failure) {
- set getopt options
***** initialize
-#+NAME: spine_args
+#+NAME: spine_args_0
#+BEGIN_SRC d
bool[string] opts = [
"abstraction" : false,
@@ -427,7 +446,7 @@ string[string] settings = [
***** set & describe
-#+NAME: spine_args
+#+NAME: spine_args_1
#+BEGIN_SRC d
auto helpInfo = getopt(args,
std.getopt.config.passThrough,
@@ -509,7 +528,7 @@ if (helpInfo.helpWanted) {
**** getopt hash to struct
- move getopt options to struct
-#+NAME: spine_args
+#+NAME: spine_args_2
#+BEGIN_SRC d
enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff }
struct OptActions {
@@ -830,7 +849,7 @@ OptActions _opt_action = OptActions();
**** env
- environmental info
-#+NAME: spine_args
+#+NAME: spine_args_3
#+BEGIN_SRC d
@safe auto program_info() {
struct ProgramInfo {
@@ -862,7 +881,7 @@ auto _env = [
*** get/read site config
-#+NAME: spine_args
+#+NAME: spine_args_4
#+BEGIN_SRC d
auto _manifested = PathMatters!()(_opt_action, _env, "");
auto _manifests = [ _manifested ];
@@ -897,7 +916,7 @@ if (_opt_action.show_config) {
*** use config for operations that do not require file processing
-#+NAME: spine_args
+#+NAME: spine_args_5
#+BEGIN_SRC d
if (!(_opt_action.skip_output)) {
if ((_opt_action.debug_do)
@@ -916,7 +935,7 @@ if (!(_opt_action.skip_output)) {
*** opt action on processing files (loop args)
-#+NAME: spine_args
+#+NAME: spine_args_6
#+BEGIN_SRC d
ConfComposite _make_and_meta_struct = _config;
destroy(_config);
@@ -1153,7 +1172,7 @@ if ((doc_matters.opt.action.debug_do)
***** show document summary - abstraction _print summary_ (to screen) :abstraction:summary:
--show-summary (abstraction summary)
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_0
#+BEGIN_SRC d
/+ ↓ debugs +/
if (doc_matters.opt.action.verbose
@@ -1167,7 +1186,7 @@ if (doc_matters.opt.action.verbose
***** show metadata (doc headers metadata)
--show-metadata
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_1
#+BEGIN_SRC d
/+ ↓ debugs +/
if (doc_matters.opt.action.show_metadata) {
@@ -1179,7 +1198,7 @@ if (doc_matters.opt.action.show_metadata) {
***** show make (make files & doc headers)
--show-make
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_2
#+BEGIN_SRC d
/+ ↓ debugs +/
if (doc_matters.opt.action.show_make) {
@@ -1191,7 +1210,7 @@ if (doc_matters.opt.action.show_make) {
***** show config (config files & doc headers)
--show-config
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_3
#+BEGIN_SRC d
/+ ↓ debugs +/
if (doc_matters.opt.action.show_config) {
@@ -1203,7 +1222,7 @@ if (doc_matters.opt.action.show_config) {
***** abstraction harvest :abstraction:harvest:
- abstraction harvest
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_4
#+BEGIN_SRC d
if (doc_matters.opt.action.harvest) {
auto _hvst = spineMetaDocHarvest!()(doc_matters, hvst);
@@ -1225,7 +1244,7 @@ if (doc_matters.opt.action.harvest) {
**** 1. _debug_ (document parts, checkdoc) :debug:checkdoc:
- [[./meta_output_debugs.org][meta_output_debugs]]
-#+NAME: spine_each_file_do_debugs_checkdoc
+#+NAME: spine_each_file_do_debugs_checkdoc_5
#+BEGIN_SRC d
/+ ↓ debugs +/
if (doc_matters.opt.action.debug_do) {
@@ -1304,6 +1323,14 @@ template spineAbstraction() {
<<spine_each_file_do_split_dr_markup_file_header_into_make_and_meta_structs>>
<<spine_each_file_do_document_abstraction>>
<<spine_each_file_do_document_matters>>
+ <<spine_each_file_do_document_matters_0>>
+ <<spine_each_file_do_document_matters_1>>
+ <<spine_each_file_do_document_matters_2>>
+ <<spine_each_file_do_document_matters_3>>
+ <<spine_each_file_do_document_matters_4>>
+ <<spine_each_file_do_document_matters_5>>
+ <<spine_each_file_do_document_matters_6>>
+ <<spine_each_file_do_document_matters_7>>
auto t = tuple(doc_abstraction, doc_matters);
return t;
}
@@ -1454,14 +1481,14 @@ if ((_opt_action.debug_do)
**** DocumentMatters struct {
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_0
#+BEGIN_SRC d
struct DocumentMatters {
#+END_SRC
**** generator related
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_1
#+BEGIN_SRC d
@safe auto generator_program() {
struct Prog_ {
@@ -1510,7 +1537,7 @@ struct DocumentMatters {
**** config make & meta
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_2
#+BEGIN_SRC d
@safe auto conf_make_meta() {
return _make_and_meta_struct;
@@ -1522,7 +1549,7 @@ struct DocumentMatters {
**** env related
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_3
#+BEGIN_SRC d
@safe auto env() {
struct Env_ {
@@ -1539,7 +1566,7 @@ struct DocumentMatters {
**** opt
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_4
#+BEGIN_SRC d
@safe auto opt() {
struct Opt_ {
@@ -1557,7 +1584,7 @@ struct DocumentMatters {
**** output related
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_5
#+BEGIN_SRC d
@safe auto src() {
return _manifest.src;
@@ -1618,7 +1645,7 @@ struct DocumentMatters {
**** } close
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_6
#+BEGIN_SRC d
}
auto doc_matters = DocumentMatters();
@@ -1626,7 +1653,7 @@ auto doc_matters = DocumentMatters();
**** step complete message
-#+NAME: spine_each_file_do_document_matters
+#+NAME: spine_each_file_do_document_matters_7
#+BEGIN_SRC d
if ((_opt_action.debug_do)
|| (_opt_action.very_verbose)
diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org
index c18b599..542e8e3 100644
--- a/org/spine_build_scaffold.org
+++ b/org/spine_build_scaffold.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -14,27 +15,86 @@
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
-[[./org/spine.org][spine.org]] [[./org/][org/]]
+[[./spine.org][spine.org]] [[../org/][org/]]
+[[./spine_info.org][spine_info.org]]
* makefile :makefile:
+** tangle
+
+#+BEGIN_SRC makefile :tangle ../makefile
+<<makefile_var_0>>
+<<makefile_var_1>>
+<<makefile_var_2>>
+<<makefile_var_3>>
+<<makefile_var_4>>
+<<makefile_var_5>>
+<<makefile_a_0>>
+<<makefile_a_1>>
+<<makefile_a_2>>
+<<makefile_b_0>>
+<<makefile_b_1>>
+<<makefile_b_2>>
+<<makefile_b_3>>
+<<makefile_b_4>>
+<<makefile_meson>>
+<<makefile_c_0>>
+<<makefile_c_1>>
+<<makefile_c_2>>
+<<makefile_dmd_0>>
+<<makefile_dmd_1>>
+<<makefile_dmd_2>>
+<<makefile_dmd_3>>
+<<makefile_gdc_0>>
+<<makefile_gdc_1>>
+<<makefile_gdc_2>>
+<<makefile_gdc_3>>
+<<makefile_ldc_0>>
+<<makefile_ldc_1>>
+<<makefile_ldc_2>>
+<<makefile_ldc_3>>
+<<makefile_d_0>>
+<<makefile_d_1>>
+<<makefile_d_2>>
+<<makefile_testrun_0>>
+<<makefile_testrun_1>>
+<<makefile_testrun_2>>
+<<makefile_testrun_3>>
+<<makefile_testrun_4>>
+<<makefile_testrun_5>>
+<<makefile_testrun_6>>
+<<makefile_testrun_7>>
+<<makefile_testrun_8>>
+<<makefile_testrun_9>>
+<<makefile_testrun_10>>
+<<makefile_testrun_11>>
+<<makefile_testrun_12>>
+<<makefile_tangle_0>>
+<<makefile_tangle_1>>
+<<makefile_git_snapshot>>
+<<makefile_phony>>
+#+END_SRC
+
** settings [+2] :settings:
*** git version stamp :git:version:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_0
+#+BEGIN_SRC makefile
PROG_VER_GIT :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`)
PROG_VER_DECLARED :=$(shell echo `cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`)
#+END_SRC
*** dub (build tool) :dub:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_1
+#+BEGIN_SRC makefile
DUB=dub
DUB_FLAGS=-v --force --compiler=
#+END_SRC
*** Project Details :project:spine:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_2
+#+BEGIN_SRC makefile
PRG_NAME=doc-reform
PRG_NICKAME=spine
PRG_NAME_DIR=$(shell echo `echo $(PRG_NAME) | sed -e "s/-/_/g"`)
@@ -47,7 +107,8 @@ PRG_DOCDIR=./docs
*** Emacs Org settings :settings:emacs:org:tangle:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_3
+#+BEGIN_SRC makefile
EMACSLISP=/usr/share/emacs/site-lisp
ORG_VER_AVAILABLE=$(shell echo `ls -d ~/.emacs.d/elpa/org-???????? | cut -d '-' -f2`)
EMACSLISP_ORG=~/.emacs.d/elpa/org-$($(shell echo $(ORG_VER_AVAILABLE)))
@@ -61,7 +122,8 @@ ORGDIR :=$(shell echo `pwd`)
*** Markup Samples
**** pods
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_4
+#+BEGIN_SRC makefile
SiSU_MARKUP_SAMPLES_FIND_PODS= \
find data/pod -maxdepth 2 -name pod.manifest | cut -f 1-3 -d / | sort
@@ -96,7 +158,8 @@ data/pod/viral_spiral.david_bollier
**** dir
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_var_5
+#+BEGIN_SRC makefile
SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND = \
find data/sisudir/media/text -name *.ss[tm] | sort | xargs
@@ -129,6 +192,27 @@ data/sisudir/media/text/un_contracts_international_sale_of_goods_convention_1980
data/sisudir/media/text/viral_spiral.david_bollier.sst
#+END_SRC
+******* sample markup file list
+
+#+NAME: makefile_a_0
+#+BEGIN_SRC makefile
+markup_samples:
+ find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
+find data/sisudir/media/text -name *.ss[tm] | sort
+#+END_SRC
+
+#+NAME: makefile_a_1
+#+BEGIN_SRC makefile
+markup_pod_samples:
+ find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
+#+END_SRC
+
+#+NAME: makefile_a_2
+#+BEGIN_SRC makefile
+markup_dir_samples:
+ find data/sisudir/media/text -name *.ss[tm] | sort
+#+END_SRC
+
** _make_ commands [+2] :make:commands:
- build commands
@@ -152,49 +236,36 @@ data/sisudir/media/text/viral_spiral.david_bollier.sst
****** all builds
******* default
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_b_0
+#+BEGIN_SRC makefile
dub_upgrade:
$(DUB) upgrade
#+END_SRC
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_b_1
+#+BEGIN_SRC makefile
default: ldc
#+END_SRC
-******* sample markup file list
-
-#+BEGIN_SRC makefile :tangle ../makefile
-markup_samples:
- find data/pod -name pod.manifest | cut -f 1-3 -d / | sort; \
-find data/sisudir/media/text -name *.ss[tm] | sort
-#+END_SRC
-
-#+BEGIN_SRC makefile :tangle ../makefile
-markup_pod_samples:
- find data/pod -name pod.manifest | cut -f 1-3 -d / | sort
-#+END_SRC
-
-#+BEGIN_SRC makefile :tangle ../makefile
-markup_dir_samples:
- find data/sisudir/media/text -name *.ss[tm] | sort
-#+END_SRC
-
******* quick :quick:
******** default :default:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_b_2
+#+BEGIN_SRC makefile
all: dmd ldc gdc
#+END_SRC
******** version :version:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_b_3
+#+BEGIN_SRC makefile
all_ver: dmd_ver ldc_ver gdc_ver
#+END_SRC
******** debug :debug:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_b_4
+#+BEGIN_SRC makefile
all_debug: dmd_debug gdc_debug ldc_debug
#+END_SRC
@@ -204,7 +275,8 @@ meson using dub
- works & looks pretty clean
- but subprojects built externally & not suitable for debian packaging
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_meson
+#+BEGIN_SRC makefile
meson_clean_build_dir:
rm -r build; mkdir build
meson_build: meson_clean_build_dir
@@ -219,19 +291,22 @@ meson: meson_clean_build_dir dub_upgrade meson_build
******* clean & tangle :clean:tangle:
******** default :default:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_c_0
+#+BEGIN_SRC makefile
all_clean: clean tangle dmd ldc gdc
#+END_SRC
******** version :version:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_c_1
+#+BEGIN_SRC makefile
all_ver_clean: clean tangle dmd_ver ldc_ver gdc_ver
#+END_SRC
******** debug :debug:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_c_2
+#+BEGIN_SRC makefile
all_debug_ver: dmd_debug_ver gdc_debug_ver ldc_debug_ver
all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver
#+END_SRC
@@ -241,7 +316,8 @@ all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver
******* quick :quick:
******** default :default:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_dmd_0
+#+BEGIN_SRC makefile
dmd: dub_upgrade
$(DUB) --compiler=dmd --config=dmd --build=release-nobounds
notify-send -t 0 'D dmd compiled test release executable ready' 'spine-dmd'
@@ -249,7 +325,8 @@ dmd: dub_upgrade
******** debug :debug:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_dmd_1
+#+BEGIN_SRC makefile
dmd_debug:
$(DUB) --compiler=dmd --config=dmd --build=debug
#+END_SRC
@@ -258,7 +335,8 @@ dmd_debug:
- assumes git tags with program version
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_dmd_2
+#+BEGIN_SRC makefile
dmd_ver: dub_upgrade
$(DUB) --compiler=dmd --config=dmd-version
mv bin/spine-dmd-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd
@@ -268,7 +346,8 @@ dmd_clean_ver: clean tangle dmd_ver
******* clean & tangle :clean:tangle:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_dmd_3
+#+BEGIN_SRC makefile
dmd_rel: expunge skel tangle
$(DUB) --compiler=dmd --config=spine-release
dmd_rel_tangle: tangle
@@ -282,7 +361,8 @@ dmd_debug_tangle: tangle
******* quick :quick:
******** default :default:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_gdc_0
+#+BEGIN_SRC makefile
gdc: dub_upgrade
$(DUB) --compiler=gdc --config=gdc
notify-send -t 0 'D gdc compiled test release executable ready' 'spine-gdc'
@@ -290,7 +370,8 @@ gdc: dub_upgrade
******** debug :debug:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_gdc_1
+#+BEGIN_SRC makefile
gdc_debug:
$(DUB) --compiler=gdc --config=gdc --build=debug
#+END_SRC
@@ -299,7 +380,8 @@ gdc_debug:
- assumes git tags with program version
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_gdc_2
+#+BEGIN_SRC makefile
gdc_ver: dub_upgrade
$(DUB) --compiler=gdc --config=gdc-version
mv bin/spine-gdc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc
@@ -309,7 +391,8 @@ gdc_clean_ver: clean tangle gdc_ver
******* clean & tangle :clean:tangle:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_gdc_3
+#+BEGIN_SRC makefile
gdc_rel: expunge skel tangle
$(DUB) --compiler=gdc --config=spine-release
gdc_rel_tangle: tangle
@@ -323,7 +406,8 @@ gdc_debug_tangle: tangle
******* quick :quick:
******** default :default:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_ldc_0
+#+BEGIN_SRC makefile
ldc: dub_upgrade
$(DUB) --compiler=ldc2 --config=ldc --build=release
notify-send -t 0 'D ldc compiled test release executable ready' 'spine-ldc'
@@ -331,7 +415,8 @@ ldc: dub_upgrade
******** debug :debug:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_ldc_1
+#+BEGIN_SRC makefile
ldc_debug:
$(DUB) --compiler=ldc2 --config=ldc --build=debug
#+END_SRC
@@ -340,7 +425,8 @@ ldc_debug:
- assumes git tags with program version
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_ldc_2
+#+BEGIN_SRC makefile
ldc_ver: dub_upgrade
$(DUB) --compiler=ldc2 --config=ldc-version
mv bin/spine-ldc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc
@@ -350,7 +436,8 @@ ldc_clean_ver: clean tangle ldc_ver
******* clean & tangle :clean:tangle:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_ldc_3
+#+BEGIN_SRC makefile
ldc_rel: expunge skel tangle
$(DUB) --compiler=ldc2 --config=spine-release
ldc_rel_tangle: tangle
@@ -363,7 +450,8 @@ ldc_debug_tangle: tangle
***** generic
****** init clean distclean etc. :clean:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_d_0
+#+BEGIN_SRC makefile
reinit: clean skel tangle
skel:
mkdir -p $(PRG_BINDIR); \
@@ -420,14 +508,16 @@ distclean_and_init: expunge
****** version :version:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_d_1
+#+BEGIN_SRC makefile
ver:
echo spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)
#+END_SRC
****** tangle build rebuild :clean:tangle:build:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_d_2
+#+BEGIN_SRC makefile
clean_tangle_build: clean tangle build
tangle_build: tangle build
build: $(PRG_SRCDIR)/$(PRG_SRC)
@@ -444,7 +534,8 @@ restart: clean tangle
**** pods
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_0
+#+BEGIN_SRC makefile
find_pods:
$(SiSU_MARKUP_SAMPLES_FIND_PODS)
#+END_SRC
@@ -452,7 +543,8 @@ find_pods:
***** dmd
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_1
+#+BEGIN_SRC makefile
dmd_testrun_find:
./bin/spine-dmd -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
@@ -483,7 +575,8 @@ dmd_testrun_find_pod_all:
****** path list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_2
+#+BEGIN_SRC makefile
dmd_testrun_paths_pod_source:
./bin/spine-dmd -v --source \
--output-dir=tmp/program_output_pod \
@@ -510,7 +603,8 @@ $(SiSU_MARKUP_SAMPLES_POD)
***** gdc
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_3
+#+BEGIN_SRC makefile
gdc_testrun_find:
./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
@@ -541,7 +635,8 @@ gdc_testrun_find_pod_all:
****** path list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_4
+#+BEGIN_SRC makefile
gdc_testrun_paths:
./bin/spine-gdc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
@@ -573,7 +668,8 @@ $(SiSU_MARKUP_SAMPLES_POD)
***** ldc
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_5
+#+BEGIN_SRC makefile
ldc_testrun_find:
./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
@@ -604,7 +700,8 @@ ldc_testrun_find_pod_all:
****** path list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_6
+#+BEGIN_SRC makefile
ldc_testrun_paths:
./bin/spine-ldc -v --source --html --epub --sqlite-discrete \
--sqlite-create --sqlite-update \
@@ -637,7 +734,8 @@ $(SiSU_MARKUP_SAMPLES_POD)
***** dmd
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_7
+#+BEGIN_SRC makefile
dmd_testrun_find_dir_source:
$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/spine-dmd -v --source \
@@ -663,7 +761,8 @@ dmd_testrun_find_dir_all:
****** file list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_8
+#+BEGIN_SRC makefile
dmd_testrun_filelist_dir_source:
./bin/spine-dmd -v --source \
--output-dir=tmp/program_output_dir \
@@ -690,7 +789,8 @@ $(SiSU_MARKUP_SAMPLES_DIR)
***** gdc
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_9
+#+BEGIN_SRC makefile
gdc_testrun_find_dir_source:
./bin/spine-gdc -v --source \
--output-dir=tmp/program_output_dir \
@@ -716,7 +816,8 @@ gdc_testrun_find_dir_all:
****** file list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_10
+#+BEGIN_SRC makefile
gdc_testrun_filelist_dir_source:
./bin/spine-gdc -v --source \
--output-dir=tmp/program_output_dir \
@@ -743,7 +844,8 @@ $(SiSU_MARKUP_SAMPLES_DIR)
***** ldc
****** find files
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_11
+#+BEGIN_SRC makefile
ldc_testrun_find_dir_source:
$(SiSU_MARKUP_SAMPLES_DIR_FILES_FOUND) \
./bin/spine-ldc -v --source \
@@ -769,7 +871,8 @@ ldc_testrun_find_dir_all:
****** file list
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_testrun_12
+#+BEGIN_SRC makefile
ldc_testrun_filelist_dir_source:
./bin/spine-ldc -v --source \
--output-dir=tmp/program_output_dir \
@@ -796,7 +899,8 @@ $(SiSU_MARKUP_SAMPLES_DIR)
*** org babel tangle batch process command :tangle:
**** tangle: org babel tangle *.org
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_tangle_0
+#+BEGIN_SRC makefile
tangle: skel
for f in $(ORGFILELIST); do \
ORGFILES="$$ORGFILES \"$$f\""; \
@@ -819,7 +923,8 @@ tangle: skel
**** tangle maker: org babel tangle maker.org, makefile new
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_tangle_1
+#+BEGIN_SRC makefile
tangle_maker:
for f in $(ORGFILELIST); do \
ORGFILES="\"org/dr_build_scaffold.org\""; \
@@ -842,14 +947,16 @@ tangle_maker:
*** git snapshot
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_git_snapshot
+#+BEGIN_SRC makefile
gitsnapshot: distclean tangle
git commit -a
#+END_SRC
** phony :phony:
-#+BEGIN_SRC makefile :tangle ../makefile
+#+NAME: makefile_phony
+#+BEGIN_SRC makefile
.PHONY : all build rebuild debug release \
distclean init \
tangle gitsnapshot
@@ -1406,8 +1513,9 @@ tinyendian_dep = declare_dependency(
#./.dub/**
*
!.gitignore
+!README.md
!COPYRIGHT
-!README
+!CHANGELOG
!makefile
!version.txt
!dub.json
diff --git a/org/spine_doc.org b/org/spine_doc.org
deleted file mode 100644
index 49e7313..0000000
--- a/org/spine_doc.org
+++ /dev/null
@@ -1,4548 +0,0 @@
--*- mode: org -*-
-#+TITLE: spine (doc_reform) hub
-#+DESCRIPTION: documents - structuring, various output representations & search
-#+FILETAGS: :spine:hub:
-#+AUTHOR: Ralph Amissah
-#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
-#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
-#+LANGUAGE: en
-#+STARTUP: content hideblocks hidestars noindent entitiespretty
-#+PROPERTY: header-args :exports code
-#+PROPERTY: header-args+ :noweb yes
-#+PROPERTY: header-args+ :eval no
-#+PROPERTY: header-args+ :results no
-#+PROPERTY: header-args+ :cache no
-#+PROPERTY: header-args+ :padline no
-
-* README
-** tangle
-
-#+BEGIN_SRC text :tangle "../README"
-<<sisu_spine_readme_info>>
-<<sisu_spine_readme_description>>
-<<sisu_spine_readme_install>>
-<<sisu_spine_readme_configuration>>
-<<sisu_spine_readme_commands>>
-<<sisu_spine_readme_examples>>
-#+END_SRC
-
-** project name
-
-#+NAME: sisu_spine_readme_info
-#+BEGIN_SRC text
-project_name: Spine, Doc Reform
- description: [
- "documents, structuring, processing, publishing",
- search,
- object numbering,
- static content generator,
- sisu markup
- ]
-
- author:
- name: Ralph Amissah
- email: ralph.amissah@gmail.com
-
- copyright: "(C) 2015 - 2020 Ralph Amissah, All Rights Reserved."
-
- license: "AGPL 3 or later"
-
- hompage: [
- "http://www.doc_reform.org",
- "http://www.sisudoc.org"
- ]
-#+END_SRC
-
-** short description
-
-#+NAME: sisu_spine_readme_description
-#+BEGIN_SRC text
-#+END_SRC
-
-** installation
-
-#+NAME: sisu_spine_readme_install
-#+BEGIN_SRC text
-# Installation, Compilation
-
-SiSU spine is written in the programming language D for which there are 3 compilers:
-
-- dmd
-- ldc
-- gdc
-
-D projects tend to use dub as project manager
-https://code.dlang.org/packages/dub
-https://code.dlang.org/packages/dub
-https://github.com/dlang/dub/blob/master/source/dub/commandline.d
-
- dub --compiler=ldc2 -color --config=ldc -b release
-
- dub --compiler=dmd -color --config=dmd
-
- dub --compiler=gdc-10 -color --config=gdc -b release
-
- make ldc
-
- make dmd
-
-there has been some coalescence around the Meson build system
-https://mesonbuild.com/
-
- meson
-
- ninja -C build
-
- meson setup --wipe build && ninja -v -C build
-
- make meson
-
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
-
-#+END_SRC
-
-** configuration
-
-#+NAME: sisu_spine_readme_configuration
-#+BEGIN_SRC text
-# Configuration
-
-Configuration files are yaml files
-
-The following paths are searched:
-
- ~/.dr/config_local_site
- ~/path_to_pod_root/.dr/config_local_site
-
-e.g. processing
-
- ~spineMarkupSamples/pod/*
-
-will search:
-
- ~spineMarkupSamples/pod/.dr/config_local_site
-
- ~/.dr/config_local_site
-
-to specify an alternative configuration file to use on the command line (in this
-example named "my_config"):
-
- spine -v --html --config=~spineMarkupSamples/pod/.dr/my_config
-
-here is a sample configuration file:
-
-flag:
- act0: "--html"
- act1: "--html --epub"
-output:
- path: "/var/www/html"
-default:
- language: "en"
- papersize: "a4"
- text_wrap: "80"
- digest: "sha256"
-webserv:
- http: "http"
- domain: "localhost"
- data_http: "http"
- data_domain: "localhost"
- data_root_url: "http://localhost"
- data_root_path: "/var/www/html"
- data_root_part: ""
- images_root_part: "image"
- cgi_title: "≅ SiSU Spine search"
- cgi_http: "http"
- cgi_domain: "localhost"
- cgi_bin_url: "http://localhost/cgi-bin"
- cgi_bin_part: "cgi-bin"
- cgi_bin_path: "/usr/lib/cgi-bin"
- cgi_search_script: "spine-search"
- cgi_search_script_raw_fn_d: "spine_search.d"
- cgi_port: ""
- cgi_user: ""
- cgi_action: "http://localhost/cgi-bin/spine-search"
- db_sqlite: "spine.search.db"
- db_pg_table: ""
- db_pg_user: ""
-
-#+END_SRC
-
-** commands help
-
-#+NAME: sisu_spine_readme_commands
-#+BEGIN_SRC text
-# Commands
-
-for a list of commands from the program type:
-
- spine -h
-
-at the time of writing this provides the following output:
-
- --abstraction document abstraction
- --assert set optional assertions on
- --cgi-search-form-codegen generates (pre-compiled) d code for search of specified db
- --cgi-sqlite-search-filename =[filename]
- --concordance file for document
- --config =/path/to/config/file/including/filename
- --dark alternative dark theme
- --debug debug
- --digest hash digest for each object
- --epub process epub output
- --harvest extract info on authors & topics from document header metadata
- --harvest-authors extract info on authors from document header metadata
- --harvest-topics extract info on topics from document header metadata
- --hide-ocn object cite numbers
- --html process html output
- --html-link-harvest place links back to harvest in segmented html
- --html-link-search html embedded search submission
- --html-seg process html output
- --html-scroll process html output
- --lang =[lang code e.g. =en or =en,es]
- --latex output for pdfs
- --latex-color-links mono or color links for pdfs
- --light default light theme
- --manifest process manifest output
- --ocn-off object cite numbers
- --odf open document format text (--odt)
- --odt open document format text
- --output =/path/to/output/dir specify where to place output
- --parallel parallelisation
- --parallel-subprocesses nested parallelisation
- --pdf latex output for pdfs
- --pdf-color-links mono or color links for pdfs
- --pod spine (doc reform) pod source content bundled
--q --quiet output to terminal
- --section-backmatter document backmatter (default)
- --section-biblio document biblio (default)
- --section-blurb document blurb (default)
- --section-body document body (default)
- --section-bookindex document bookindex (default)
- --section-endnotes document endnotes (default)
- --section-glossary document glossary (default)
- --section-toc table of contents (default)
- --serial serial processing
- --skip-output skip output
- --show-config show config
- --show-make show make
- --show-metadata show metadata
- --show-summary show summary
- --source document markup source
- --sqlite-discrete process discrete sqlite output
- --sqlite-db-create create db, create tables
- --sqlite-db-drop drop tables & db
- --sqlite-db-recreate create db, create tables
- --sqlite-delete sqlite output
- --sqlite-db-filename =[filename].sql.db
- --sqlite-insert sqlite output
- --sqlite-update sqlite output
- --text text output
- --theme-dark alternative dark theme
- --theme-light default light theme
- --txt text output
--v --verbose output to terminal
- --very-verbose output to terminal
- --workon (reserved for some matters under development & testing)
- --xhtml xhtml output
--h --help This help information.
-
-#+END_SRC
-
-** command examples
-
-#+NAME: sisu_spine_readme_examples
-#+BEGIN_SRC text
-# Examples
-
-if configuartion has been set specify just
-- the desired output and
-- the markup document/pod(s) to process
-
- spine -v --html ~spineMarkupSamples/markup/pod/sisu-manual
-
-if configuartion has not been set or to overide the set configration specify
-- the output path as well as
-- the desired output and
-- the markup document/pod(s) to process
-
-note: ~webDocRoot should be the path to web doc root, provide a suitable output path.
-
- spine -v --html --html-link-search --html-link-harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --html --html-link-search --html-link-harvest --epub --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --html --epub --latex --odt --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
-## harvest
-
-if you have a document collection with documents that have metadata headers a
-summary of the collection can be made using the harvest command
-
- spine -v --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --harvest ~spineMarkupSamples/pod/*
-
- spine -v --html --html-link-search --html-link-harvest --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --html --html-link-search --html-link-harvest --harvest ~spineMarkupSamples/pod/*
-
-## sqlite
-
-### create db
-
-if there is no sqlite db you first need to create one, to do so
-- the name of the db and
-- the root path for document output
-must be specified:
-
- spine -v \
- --sqlite-db-create --sqlite-db-filename="spine.search.db" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod/*
-
- spine -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --output=`echo ~webDocRoot`
-
-if you have a configration file providing this information that is to be used
-for a document collection you can point to the document collection:
-
- spine -v --sqlite-db-create ~spineMarkupSamples/pod
-
-### populate db
-
-must specify:
-- the name of the db and
-- the root path for document output
-
- spine -v --sqlite-update \
- --sqlite-db-filename="spine.search.db" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod/*
-
- spine -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
-if you have a configration file providing this information that is to be used
-for a document collection you can point to the document collection:
-
- spine -v --sqlite-update ~spineMarkupSamples/pod/*
-
-### generate a cgi search form in d
-
- spine -v --cgi-search-form-codegen \
- --output=/var/www/html \
- ~spineMarkupSamples/pod
-
- spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod
-
- spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site
-
- spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod
-
- spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot`
-
- spine -v --cgi-search-form-codegen \
- --sqlite-db-filename="spine.search.db" \
- --cgi-sqlite-search-filename="spine-search" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod
-
-#### compile the cgi search form
-
- cd /var/www/html/cgi # /var/www/html (default document root)
-
- cd ~webDocRoot/cgi
-
-the directory ~webDocRoot/cgi/src should contain two files
-- spine_search.d (or whatever you named it)
-- cgi.d (by Adam Rupee)
-
- dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
-
-should compile spine-search in ~webDocRoot/cgi/cgi-bin and copy it to the
-cgi-bin directory
-
- spine -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=`echo ~webDocRoot`
-
- spine -v --sqlite-db-create ~spineMarkupSamples/pod
-
- spine -v --html --html-link-search --cgi-sqlite-search-filename="spine-search" --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --html --html-link-search --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
- spine -v --html --html-link-search --cgi-sqlite-search-filename="spine-search" --html-link-harvest --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
-### create db & search form
-
- spine -v \
- --sqlite-db-create --sqlite-db-filename="spine.search.db" \
- --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod/*
-
-### html with links to search form
-
- spine -v --html \
- --html-link-search \
- --output=`echo ~webDocRoot` \
- ~spineMarkupSamples/pod/*
-
-#+END_SRC
-
-* manpage
-** tangle
-
-#+BEGIN_SRC man :tangle "../doc/man/man1/spine.1"
-<<sisu_spine_manpage_head>>
-<<sisu_spine_manpage_description>>
-<<sisu_spine_manpage_flags>>
-<<sisu_spine_manpage_flags_db>>
-<<sisu_spine_manpage_config>>
-<<sisu_spine_manpage_pod_dir_structure>>
-<<sisu_spine_manpage_cli_examples>>
-<<sisu_spine_manpage_docs>>
-<<sisu_spine_manpage_markup>>
-#+END_SRC
-
-** manpage
-*** head
-
-#+NAME: sisu_spine_manpage_head
-#+BEGIN_SRC man
-.TH "spine" "1" "2020-04-05" "0.10.0" "Spine"
-.br
-.SH NAME
-.br
-sisu - documents: markup, structuring, publishing in multiple standard formats, and search
-.br
-.SH SYNOPSIS
-.br
-sisu [--options] [filename/wildcard]
-
-.br
-sisu --txt --html --epub --odt --pdf --wordmap --sqlite --manpage --texinfo --sisupod --source --qrcode [filename/wildcard]
-
-.br
-sisu --pg (--createdb|update [filename/wildcard]|--dropall)
-
-#+END_SRC
-
-*** description
-
-#+NAME: sisu_spine_manpage_description
-#+BEGIN_SRC man
-.SH SISU - MANUAL,
-RALPH AMISSAH
-
-.SH WHAT IS SISU?
-
-.SH INTRODUCTION - WHAT IS SISU?
-
-.BR
-
-.B SiSU
-is a lightweight markup based document creation and publishing framework that
-is controlled from the command line. Prepare documents for
-.B SiSU
-using your text editor of choice, then use
-.B SiSU
-to generate various output document formats.
-
-.BR
-From a single lightly prepared document (plain-text
-.I UTF-8
-) sisu custom builds several standard output formats which share a common (text
-object) numbering system for citation of content within a document (that also
-has implications for search). The sisu engine works with an abstraction of the
-document's structure and content from which it is possible to generate
-different forms of representation of the document.
-.B SiSU
-produces: plain-text,
-.I HTML,
-.I XHTML,
-.I XML,
-.I EPUB,
-.I ODF:
-.I ODT
-(Opendocument),
-.I LaTeX,
-.I PDF,
-and populates an
-.I SQL
-database (
-.I PostgreSQL
-or
-.I SQLite
-) with text objects, roughly, paragraph sized chunks so that document searches
-are done at this level of granularity.
-
-.BR
-Outputs share a common citation numbering system, associated with text objects
-and any semantic meta-data provided about the document.
-
-.BR
-
-.B SiSU
-also provides concordance files, document content certificates and manifests of
-generated output. Book indexes may be made.
-
-.BR
-Some document markup samples are provided in the package sisu -markup-samples.
-Homepages:
-
-- <http://www.sisudoc.org/>
-
-- <http://www.jus.uio.no/sisu>
-
-.SH COMMANDS SUMMARY
-
-.SH DESCRIPTION
-
-.BR
-
-.B SiSU
-is a document publishing system, that from a simple single marked-up document,
-produces multiple output formats including:
-.I plaintext,
-.I HTML,
-.I XHTML,
-.I XML,
-.I EPUB,
-.I ODT
-(
-.I OpenDocument
-(
-.I ODF
-) text),
-.I LaTeX,
-.I PDF,
-info, and
-.I SQL
-(
-.I PostgreSQL
-and
-.I SQLite
-) , which share text object numbers ("object citation numbering") and the same
-document structure information. For more see: <http://sisudoc.org> or
-<http://www.jus.uio.no/sisu>
-#+END_SRC
-
-** flags
-*** general
-
-#+NAME: sisu_spine_manpage_flags
-#+BEGIN_SRC man
-.SH DOCUMENT PROCESSING COMMAND FLAGS
-
-.TP
-.B --abstraction [path + filename]
-run document abstraction
-.TP
-.B --act[s0-9] [path + filename]
---act0 to --act9 configurable shortcuts for multiple flags, -0 to -9 synonyms,
-configure in sisurc.yml; sisu default action on a specified file where no flag
-is provided is --act0; --act or --acts for information on current actions
-ascribed to --act0 to --act9
-.TP
-.B --asciidoc [path + filename]
-asciidoc, smart text (not available)
-.TP
-.B --cgi-search-form-codegen
- generate d code search form to search db specfied needs --output=[path] and
---sqlite-db-filename=[cgi search form name] or path to configuration file
---config=[full path to config file]
-.TP
-.B --cgi-sqlite-search-filename=[filename]
-name to give cgi-search form, (it generates a [filename].d file that requires
-subsequent compilation) also required is the name of the sqlite db to be
-searched by the form.
-.TP
-.B --concordance [path + filename]
-(not implemented)
-.TP
-.B --config=[path to config file + filename]
-.TP
-.B --dark
- alternative theme for html and epub output, a light (default) theme is
- also provided
-.TP
-.B --digest (not implemented)
-.TP
-.B --delete [path + filename]
-see --zap
-.TP
-.B --digests [path + filename]
-not implemented
-.TP
-.B --epub [path + filename]
-produces an epub document
-.TP
-.B --harvest [path to files]
-extract and present info on authors & topics from document header metadata.
-makes two lists of sisu output based on the sisu markup documents in a
-directory: list of author and authors works (year and titles), and; list by
-topic with titles and author. Makes use of header metadata fields (author,
-title, date, topic_register).
-.TP
-.B --harvest-authors [path to files]
-extract and present info on authors from metadata in document headers
-.TP
-.B --harvest-topics [path to files]
-extract and present info on topics from metadata in document headers
-.TP
-.B --hide-ocn
-turn visibility of object numbers off
-.TP
-.B --html [path + filename]
-produces html output in two forms (i) segmented text with table of contents
-(toc.html and index.html) and (ii) the document in a single file (scroll.html).
-.TP
-.B --html-link-harvest
-within html output creates link to the document set metadata harvest output
-part of --html output instruction and assumes that --harvest has been or will
- be run
-.TP
-.B --html-link-search
-within html output creates a search form for submission, requires information
-on the name of the search form --search part of --html output instruction it
-assumes there is a cgi search form and related document database
-.TP
-.B --html-scroll [path + filename]
-produces html output, the document in a single file (scroll.html) only. Compare
---html-seg and --html
-.TP
-.B --html-seg [path + filename]
-produces html output, segmented text with table of contents (toc.html and
-index.html). Compare --html-scroll and --html
-.TP
-.B --lang=[language code, e.g. =en or =en,es]
-provide language code of document
-.TP
-.B --latex [path + filename]
-.I LaTeX
-output for different document sizes (a4, a5, b4, letter) and orientations
-(portrait, landscape) for downstream (processing and) conversion to pdf, (used
-with xetex no direct link between programs provided as this is a much slower
-process)
-.TP
-.B --latex-color-links
-monochrome or color links within pdf, toggle (mono better for printing),
-the default is mono for portrait and color for landscape documents
-.TP
-.B --light theme
-for html and epub output, default, a dark alternative is provided
-.TP
-.B --manifest [path + filename]
-produces an html summary of output generated (hyperlinked to content) and
-document specific metadata (sisu_manifest.html). This step is assumed for most
-processing flags.
-.TP
-.B --markdown [path + filename]
-markdown smart text (not available)
-.TP
-.B --no-*
-negate a toggle
-.TP
-.B --ocn-off
-object numbers off (the c in ocn is for citation). See --hide-ocn
-.TP
-.B --odf [path + filename]
-see --odt
-.TP
-.B --odt [path + filename]
-produce open document output
-.TP
-.B --output=[path to output directories]
-where to place document output
-.TP
-.B --parallel
-parallelization on (the default except for sqlite)
-.TP
-.B --parallel-subprocesses
-nested parallelization on (the default except for sqlite)
-.TP
-.B --papersize-(a4|a5|b5|letter|legal)
-in conjunction with --pdf set pdf papersize, overriding any configuration
-settings, to set more than one papersize repeat the option --pdf --papersize-a4
---papersize-letter. See also --papersize=* (NOT implemented)
-.BR
-.B --papersize=a4,a5,b5,letter,legal
-in conjunction with --pdf set pdf papersize, overriding any configuration
-settings, to set more than one papersize list after the equal sign with a comma
-separator --papersize=a4,letter. See also --papersize-* (NOT implemented)
-.TP
-.B --pdf [path + filename]
-produces
-.I LaTeX
-see --latex
-.TP
-.B --pdf-color-links
-monochrome or color links within latex for pdf. See --latex-color-links
-.TP
-.B --pod
-markup source bundled in a zip file.
-Produces a zipped file of the prepared document specified along with associated
-images This provides a quick way of gathering the relevant
-parts of a sisu document which can then for example be emailed. A sisupod
-includes sisu markup source file, (along with associated documents if a master
-file, or available in multilingual versions), together with related images.
-(it should be possible in future to run spine commands directly against a pod).
-.TP
-.B --qrcode [path + filename]
-generate QR code image of metadata (used in manifest). (not implemented)
-.TP
-.B --quiet
-quiet less output to terminal.
-.TP
-.B --section-*
-provides finer grain control over which parts of the document are processed
-to produce output, toc, body, endnotes, glossary, biblio, bookindex and blurb
-.TP
-.B --section-biblio
-produce document bibliography output, toggle
-.TP
-.B --section-blurb
-produce document blurb output, toggle
-.TP
-.B --section-body
-produce document body output, toggle
-.TP
-.B --section-bookindex
-produce document bookindex output, toggle
-.TP
-.B --section-endnotes
-produce document endnotes output, toggle
-.TP
-.B --section-endnotes
-produce document glossary output, toggle
-.TP
-.B --serial
-serial processing --no-parallel
-.TP
-.B --show-config
-show site and document configuration instructions. Requires path to
-configuration file or path to documents to be processed.
-.TP
-.B --show-make
-show document make instructions
-.TP
-.B --show-metadata
-show document metadata
-.TP
-.B --show-summary
-show document summary
-.TP
-.B --source [path + filename]
-document markup source
-.TP
-.B --sha256
-set hash digest where used to sha256 (not implemented)
-.TP
-.B --sha512
-set hash digest where used to sha512 (not implemented)
-.TP
-.B --sqlite-discrete [path + filename]
-create a per document sqlite db
-.TP
-.B --sqlite-db-create --sqlite-db-filename="[db filename]" --output="[output path]"
-create a shared db and its tables. Requires a db filename, which may be set in the configuration file or on the command line as shown
-.TP
-.B --sqlite-db-drop [path + db filename]
-drop (remove) db and its tables
-.TP
-.B --sqlite-db-recreate [path + filename]
-drop and re-create a shared db and its tables. Requires a db filename, which may be set in the configuration file or on the command line with --sqlite-db-filename="[db name]"
-.TP
-.B --sqlite-db-filename="[db name]"
-provide name of sqlite db, to be created, dropped, populated or for which a search form is to be made. This information may also be set in the configuration file.
-.TP
-.B --sqlite-delete [path + filename]
-process sqlite output, remove file
-.TP
-.B --sqlite-insert [path + filename]
-process sqlite output, insert file. See --sqlite-update
-.TP
-.B --sqlite-update [path + filename]
-process sqlite output, update file
-.TP
-.B --source [filename/wildcard]
-copies sisu markup file to output directory. Alias -s
-.TP
-.B --text [filename/wildcard]
-produces
-.I plaintext
-output
-(not implemented)
-.TP
-.B --theme-dark
-See --dark
-.TP
-.B --theme-light
-See --light
-.TP
-.B --txt [filename/wildcard]
-produces
-.I plaintext
-output
-(not implemented)
-.TP
-.B --txt-asciidoc [filename/wildcard]
-see --asciidoc
-(not implemented)
-.TP
-.B --txt-markdown [filename/wildcard]
-see --markdown
-(not implemented)
-.TP
-.B --txt-rst [filename/wildcard]
-see --rst
-(not implemented)
-.TP
-.B --txt-textile [filename/wildcard]
-see --textile
-(not implemented)
-.TP
-.B -v
-on its own, provides
-.B SiSU
-version information
-.TP
-.B -v [filename/wildcard]
-see --verbose
-.TP
-.B --verbose [filename/wildcard]
-provides verbose output of what is being generated, where output is placed (and
-error messages if any). Alias -v
-.TP
-.B --very-verbose [filename/wildcard]
-provides more verbose output of what is being generated. See --verbose. Alias
--V
-.TP
-.B --version
-spine version
-(not implemented)
-.TP
-.B --xhtml
-xhtml output
-(not implemented)
-
-.SH COMMAND LINE MODIFIERS
-
-.TP
-.B --no-ocn
-[with --html --pdf or --epub] switches off
-.I object citation numbering.
-Produce output without identifying numbers in margins of html or
-.I LaTeX
-/pdf output.
-#+END_SRC
-
-*** db flags
-
-#+NAME: sisu_spine_manpage_flags_db
-#+BEGIN_SRC man
-.SH DATABASE COMMANDS
-
-.BR
-
-.B dbi - database interface
-
-.BR
-
-.B --pg or --pgsql
-set for
-.I PostgreSQL
-.B --sqlite
-default set for
-.I SQLite
--d is modifiable with --db=[database type (PgSQL or
-.I SQLite
-) ]
-.TP
-.B --pg -v --createall
-initial step, creates required relations (tables, indexes) in existing
-.I PostgreSQL
-database (a database should be created manually and given the same name as
-working directory, as requested) (rb.dbi) [ -dv --createall
-.I SQLite
-equivalent] it may be necessary to run sisu -Dv --createdb initially NOTE: at
-the present time for
-.I PostgreSQL
-it may be necessary to manually create the database. The command would be
-'createdb [database name]' where database name would be SiSU_[present working
-directory name (without path)]. Please use only alphanumerics and underscores.
-.TP
-.B --pg -v --import
-[filename/wildcard] imports data specified to
-.I PostgreSQL
-db (rb.dbi) [ -dv --import
-.I SQLite
-equivalent]
-.TP
-.B --pg -v --update
-[filename/wildcard] updates/imports specified data to
-.I PostgreSQL
-db (rb.dbi) [ -dv --update
-.I SQLite
-equivalent]
-.TP
-.B --pg --remove
-[filename/wildcard] removes specified data to
-.I PostgreSQL
-db (rb.dbi) [ -d --remove
-.I SQLite
-equivalent]
-.TP
-.B --pg --dropall
-kills data" and drops (
-.I PostgreSQL
-or
-.I SQLite
-) db, tables & indexes [ -d --dropall
-.I SQLite
-equivalent]
-
-.BR
-The -v is for verbose output.
-#+END_SRC
-
-** configuration file
-
-#+NAME: sisu_spine_manpage_config
-#+BEGIN_SRC man
-.SH CONFIGURATION
-
-.BR
-
-default location:
-.TP
-~/.dr/config_local_site
-.TP
-.nf
-flag:
- act0: "--html"
- act1: "--html --epub"
-output:
- path: "/var/www/html"
-default:
- language: "en"
- papersize: "a4"
- text_wrap: "80"
- digest: "sha256"
-webserv:
- http: "http"
- domain: "localhost"
- data_http: "http"
- data_domain: "localhost"
- data_root_url: "http://localhost"
- data_root_path: "/var/www/html"
- data_root_part: ""
- images_root_part: "image"
- cgi_title: "≅ SiSU Spine search"
- cgi_http: "http"
- cgi_domain: "localhost"
- cgi_bin_url: "http://localhost/cgi-bin"
- cgi_bin_part: "cgi-bin"
- cgi_bin_path: "/usr/lib/cgi-bin"
- cgi_search_script: "spine-search"
- cgi_search_script_raw_fn_d: "spine_search.d"
- cgi_port: ""
- cgi_user: ""
- cgi_action: "http://localhost/cgi-bin/spine-search"
- db_sqlite: "spine.search.db"
- db_pg_table: ""
- db_pg_user: ""
-.fi
-
-.BR
-#+END_SRC
-
-** sample pod directory
-
-#+NAME: sisu_spine_manpage_pod_dir_structure
-#+BEGIN_SRC man
-.SH SAMPLE POD DIRECTORY STRUCTURE
-.BR
-.TP
-.nf
-
-pod (directory may contain multiple documents)
- └── the_wealth_of_networks.yochai_benkler
- ├── conf
- │   └── sisu_document_make
- ├── media
- │   ├── image
- │   │   ├── won_benkler_2_1.png
- │   │   ├── won_benkler_6_1.png
- │   │   ├── won_benkler_7_1.png
- │   │   ├── won_benkler_7_2.png
- │   │   ├── won_benkler_7_3a.png
- │   │   ├── won_benkler_7_3b.png
- │   │   ├── won_benkler_7_4.png
- │   │   ├── won_benkler_7_5.png
- │   │   ├── won_benkler_7_6.png
- │   │   └── won_benkler_9_1.png
- │   └── text
- │   └── en
- │   └── the_wealth_of_networks.yochai_benkler.sst
- └── pod.manifest
-
-.fi
-#+END_SRC
-
-** examples
-
-#+NAME: sisu_spine_manpage_cli_examples
-#+BEGIN_SRC man
-.SH COMMAND LINE EXAMPLES
-
-.TP
-note: ~webDocRoot should be the path to web doc root, provide a suitable output path.
-.TP
-spine -v --html --html-link-search --html-link-harvest --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-.TP
-spine -v --html --html-link-search --html-link-harvest --epub --harvest --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-.TP
-spine -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --output=`echo ~webDocRoot` ~spineMarkupSamples/pod
-.TP
-spine -v --sqlite-db-create ~spineMarkupSamples/pod
-.TP
-spine -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-.TP
-spine -v --sqlite-update ~spineMarkupSamples/pod/*
-.TP
-spine -v --show-config
-.TP
-spine -v --show-config --config= ~spineMarkupSamples/pod/.dr/config_local_site_test
-.TP
-spine -v --show-config --config=~spineMarkupSamples/pod/.dr
-.TP
-spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local
-.TP
-cd ~webDocRoot/cgi
-.TP
-dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
-.TP
-#+END_SRC
-
-** docs
-*** sources
-
-#+NAME: sisu_spine_manpage_docs
-#+BEGIN_SRC man
-
-.BR
-Running sisu (alone without any flags, filenames or wildcards) brings up the
-interactive help, as does any sisu command that is not recognised. Enter to
-escape.
-.SH HELP
-
-.SH SISU MANUAL
-
-
-.BR
-The most up to date information on sisu should be contained in the sisu_manual,
-available at:
-
-.BR
- <http://sisudoc.org/sisu/sisu_manual/>
-
-.BR
-The manual can be generated from source, found respectively, either within the
-.B SiSU
-tarball or installed locally at:
-
-.BR
- ./data/doc/sisu/markup-samples/sisu_manual
-
-.BR
- /usr/share/doc/sisu/markup-samples/sisu_manual
-
-.BR
-move to the respective directory and type e.g.:
-
-.BR
- sisu sisu_manual.ssm
-.SH SISU MAN PAGES
-
-
-.BR
-If
-.B SiSU
-is installed on your system usual man commands should be available, try:
-
-.BR
- man sisu
-
-.BR
-Most
-.B SiSU
-man pages are generated directly from sisu documents that are used to prepare
-the sisu manual, the sources files for which are located within the
-.B SiSU
-tarball at:
-
-.BR
- ./data/doc/sisu/markup-samples/sisu_manual
-
-.BR
-Once installed, directory equivalent to:
-
-.BR
- /usr/share/doc/sisu/markup-samples/sisu_manual
-
-.BR
-Available man pages are converted back to html using man2html:
-
-.BR
- /usr/share/doc/sisu/html/
-
-.BR
- ./data/doc/sisu/html
-
-.BR
-An online version of the sisu man page is available here:
-
-.BR
-
-- various sisu man pages <http://www.jus.uio.no/sisu/man/> [^1]
-
-.BR
-- sisu.1 <http://www.jus.uio.no/sisu/man/sisu.1.html> [^2]
-.SH SISU BUILT-IN INTERACTIVE HELP, [DISCONTINUED]
-
-
-.BR
-This fell out of date and has been discontinued.
-#+END_SRC
-
-*** markup
-
-#+NAME: sisu_spine_manpage_markup
-#+BEGIN_SRC man
-.SH INTRODUCTION TO SISU MARKUP[^3]
-
-.SH SUMMARY
-
-.BR
-
-.B SiSU
-source documents are
-.I plaintext
-(
-.I UTF-8
-)[^4] files
-
-.BR
-All paragraphs are separated by an empty line.
-
-.BR
-Markup is comprised of:
-
-.BR
-- at the top of a document, the document header made up of semantic meta-data
-about the document and if desired additional processing instructions (such an
-instruction to automatically number headings from a particular level down)
-
-.BR
-- followed by the prepared substantive text of which the most important single
-characteristic is the markup of different heading levels, which define the
-primary outline of the document structure. Markup of substantive text includes:
-
-.BR
- * heading levels defines document structure
-
-.BR
- * text basic attributes, italics, bold etc.
-
-.BR
- * grouped text (objects), which are to be treated differently, such as code
- blocks or poems.
-
-.BR
- * footnotes/endnotes
-
-.BR
- * linked text and images
-
-.BR
- * paragraph actions, such as indent, bulleted, numbered-lists, etc.
-.SH MARKUP RULES, DOCUMENT STRUCTURE AND METADATA REQUIREMENTS
-
-
-.BR
-minimal content/structure requirement:
-
-.BR
-[metadata]
-.nf
-A~ (level A [title])
-
-1~ (at least one level 1 [segment/(chapter)])
-.fi
-
-
-.BR
-structure rules (document heirarchy, heading levels):
-
-.BR
-there are two sets of heading levels ABCD (title & parts if any) and 123
-(segment & subsegments if any)
-
-.BR
-sisu has the fllowing levels:
-.nf
-A~ [title] .
- required (== 1) followed by B~ or 1~
-B~ [part] *
- followed by C~ or 1~
-C~ [subpart] *
- followed by D~ or 1~
-D~ [subsubpart] *
- followed by 1~
-1~ [segment (chapter)] +
- required (>= 1) followed by text or 2~
-text *
- followed by more text or 1~, 2~
- or relevant part *()
-2~ [subsegment] *
- followed by text or 3~
-text *
- followed by more text or 1~, 2~ or 3~
- or relevant part, see *()
-3~ [subsubsegment] *
- followed by text
-text *
- followed by more text or 1~, 2~ or 3~ or relevant part, see *()
-
-*(B~ if none other used;
- if C~ is last used: C~ or B~;
- if D~ is used: D~, C~ or B~)
-.fi
-
-.nf
-- level A~ is the tile and is mandatory
-- there can only be one level A~
-
-- heading levels BCD, are optional and there may be several of each
- (where all three are used corresponding to e.g. Book Part Section)
- * sublevels that are used must follow each other sequentially
- (alphabetically),
-- heading levels A~ B~ C~ D~ are followed by other heading levels rather
- than substantive text
- which may be the subsequent sequential (alphabetic) heading part level
- or a heading (segment) level 1~
-- there must be at least one heading (segment) level 1~
- (the level on which the text is segmented, in a book would correspond
- to the Chapter level)
-- additional heading levels 1~ 2~ 3~ are optional and there may be several
- of each
-- heading levels 1~ 2~ 3~ are followed by text (which may be followed by
- the same heading level)
- and/or the next lower numeric heading level (followed by text)
- or indeed return to the relevant part level
- (as a corollary to the rules above substantive text/ content
- must be preceded by a level 1~ (2~ or 3~) heading)
-.fi
-
-.SH MARKUP EXAMPLES
-
-.SH ONLINE
-
-
-.BR
-Online markup examples are available together with the respective outputs
-produced from <http://www.jus.uio.no/sisu/SiSU/examples.html> or from
-<http://www.jus.uio.no/sisu/sisu_examples/>
-
-.BR
-There is of course this document, which provides a cursory overview of sisu
-markup and the respective output produced:
-<http://www.jus.uio.no/sisu/sisu_markup/>
-
-.BR
-an alternative presentation of markup syntax:
-/usr/share/doc/sisu/on_markup.txt.gz
-.SH INSTALLED
-
-
-.BR
-With
-.B SiSU
-installed sample skins may be found in: /usr/share/doc/sisu/markup-samples (or
-equivalent directory) and if sisu -markup-samples is installed also under:
-/usr/share/doc/sisu/markup-samples-non-free
-
-.SH MARKUP OF HEADERS
-
-.BR
-Headers contain either: semantic meta-data about a document, which can be used
-by any output module of the program, or; processing instructions.
-
-.BR
-Note: the first line of a document may include information on the markup
-version used in the form of a comment. Comments are a percentage mark at the
-start of a paragraph (and as the first character in a line of text) followed by
-a space and the comment:
-.nf
-% this would be a comment
-.fi
-
-.SH SAMPLE HEADER
-
-
-.BR
-This current document is loaded by a master document that has a header similar
-to this one:
-.nf
-% SiSU master 4.0
-
-title: SiSU
- subtitle: Manual
-
-creator:
- author: Amissah, Ralph
-
-publisher: [publisher name]
-
-rights: Copyright (C) Ralph Amissah 2007, part of SiSU documentation, License GPL 3
-
-classify:
- topic_register: SiSU:manual;electronic documents:SiSU:manual
- subject: ebook, epublishing, electronic book, electronic publishing,
- electronic document, electronic citation, data structure,
- citation systems, search
-
-% used_by: manual
-
-date:
- published: 2008-05-22
- created: 2002-08-28
- issued: 2002-08-28
- available: 2002-08-28
- modified: 2010-03-03
-
-make:
- num_top: 1
- breaks: new=C; break=1
- bold: /Gnu|Debian|Ruby|SiSU/
- home_button_text: {SiSU}http://sisudoc.org; {git}http://git.sisudoc.org
- footer: {SiSU}http://sisudoc.org; {git}http://git.sisudoc.org
- manpage: name=sisu - documents: markup, structuring, publishing in multiple standard formats, and search;
- synopsis=sisu [-abcDdeFhIiMmNnopqRrSsTtUuVvwXxYyZz0-9] [filename/wildcard ]
- . sisu [-Ddcv] [instruction]
- . sisu [-CcFLSVvW]
-
-@links:
- { SiSU Homepage }http://www.sisudoc.org/
- { SiSU Manual }http://www.sisudoc.org/sisu/sisu_manual/
- { Book Samples & Markup Examples }http://www.jus.uio.no/sisu/SiSU/examples.html
- { SiSU Download }http://www.jus.uio.no/sisu/SiSU/download.html
- { SiSU Changelog }http://www.jus.uio.no/sisu/SiSU/changelog.html
- { SiSU Git repo }http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary
- { SiSU List Archives }http://lists.sisudoc.org/pipermail/sisu/
- { SiSU @ Debian }http://packages.qa.debian.org/s/sisu.html
- { SiSU Project @ Debian }http://qa.debian.org/developer.php?login=sisu@lists.sisudoc.org
- { SiSU @ Wikipedia }http://en.wikipedia.org/wiki/SiSU
-.fi
-
-.SH AVAILABLE HEADERS
-
-
-.BR
-Header tags appear at the beginning of a document and provide meta information
-on the document (such as the
-.I Dublin Core
-) , or information as to how the document as a whole is to be processed. All
-header instructions take the form @headername: or on the next line and indented
-by once space :subheadername: All
-.I Dublin Core
-meta tags are available
-
-.BR
-
-.B @identifier:
-information or instructions
-
-.BR
-where the "identifier" is a tag recognised by the program, and the
-"information" or "instructions" belong to the tag/identifier specified
-
-.BR
-Note: a header where used should only be used once; all headers apart from
-@title: are optional; the @structure: header is used to describe document
-structure, and can be useful to know.
-
-.BR
-This is a sample header
-.nf
-% SiSU 2.0 [declared file-type identifier with markup version]
-.fi
-
-.nf
-@title: [title text] [this header is the only one that is mandatory]
- subtitle: [subtitle if any]
- language: English
-.fi
-
-.nf
-creator:
- author: [Lastname, First names]
- illustrator: [Lastname, First names]
- translator: [Lastname, First names]
- prepared_by: [Lastname, First names]
-.fi
-
-.nf
-date:
- published: [year or yyyy-mm-dd]
- created: [year or yyyy-mm-dd]
- issued: [year or yyyy-mm-dd]
- available: [year or yyyy-mm-dd]
- modified: [year or yyyy-mm-dd]
- valid: [year or yyyy-mm-dd]
- added_to_site: [year or yyyy-mm-dd]
- translated: [year or yyyy-mm-dd]
-.fi
-
-.nf
-rights:
- copyright: Copyright (C) [Year and Holder]
- license: [Use License granted]
- text: [Year and Holder]
- translation: [Name, Year]
- illustrations: [Name, Year]
-.fi
-
-.nf
-classify:
- topic_register: SiSU:markup sample:book;book:novel:fantasy
- type:
- subject:
- description:
- keywords:
- abstract:
- loc: [Library of Congress classification]
- dewey: [Dewey classification
-.fi
-
-.nf
-identify:
- :isbn: [ISBN]
- :oclc:
-.fi
-
-.nf
-links: { SiSU }http://www.sisudoc.org
- { FSF }http://www.fsf.org
-.fi
-
-.nf
-make:
- num_top: 1
- headings: [text to match for each level
- (e.g. PART; Chapter; Section; Article; or another: none; BOOK|FIRST|SECOND; none; CHAPTER;)
- breaks: new=:C; break=1
- promo: sisu, ruby, sisu_search_libre, open_society
- bold: [regular expression of words/phrases to be made bold]
- italics: [regular expression of words/phrases to italicise]
- home_button_text: {SiSU}http://sisudoc.org; {git}http://git.sisudoc.org
- footer: {SiSU}http://sisudoc.org; {git}http://git.sisudoc.org
-.fi
-
-.nf
-original:
- language: [language]
-.fi
-
-.nf
-notes:
- comment:
- prefix: [prefix is placed just after table of contents]
-.fi
-
-.SH MARKUP OF SUBSTANTIVE TEXT
-
-.SH HEADING LEVELS
-
-
-.BR
-Heading levels are :A~ ,:B~ ,:C~ ,1~ ,2~ ,3~ ... :A - :C being part / section
-headings, followed by other heading levels, and 1 -6 being headings followed by
-substantive text or sub-headings. :A~ usually the title :A~? conditional level
-1 heading (used where a stand-alone document may be imported into another)
-
-.BR
-
-.B :A~ [heading text]
-Top level heading [this usually has similar content to the title @title: ]
-NOTE: the heading levels described here are in 0.38 notation, see heading
-
-.BR
-
-.B :B~ [heading text]
-Second level heading [this is a heading level divider]
-
-.BR
-
-.B :C~ [heading text]
-Third level heading [this is a heading level divider]
-
-.BR
-
-.B 1~ [heading text]
-Top level heading preceding substantive text of document or sub-heading 2, the
-heading level that would normally be marked 1. or 2. or 3. etc. in a document,
-and the level on which sisu by default would break html output into named
-segments, names are provided automatically if none are given (a number),
-otherwise takes the form 1~my_filename_for_this_segment
-
-.BR
-
-.B 2~ [heading text]
-Second level heading preceding substantive text of document or sub-heading 3 ,
-the heading level that would normally be marked 1.1 or 1.2 or 1.3 or 2.1 etc.
-in a document.
-
-.BR
-
-.B 3~ [heading text]
-Third level heading preceding substantive text of document, that would normally
-be marked 1.1.1 or 1.1.2 or 1.2.1 or 2.1.1 etc. in a document
-.nf
-1~filename level 1 heading,
-
-% the primary division such as Chapter that is followed by substantive text, and may be further subdivided (this is the level on which by default html segments are made)
-.fi
-
-.SH FONT ATTRIBUTES
-
-.BR
-
-.B markup example:
-.nf
-normal text, *{emphasis}*, !{bold text}!, /{italics}/, _{underscore}_, "{citation}",
-^{superscript}^, ,{subscript},, +{inserted text}+, -{strikethrough}-, #{monospace}#
-
-normal text
-
-*{emphasis}* [note: can be configured to be represented by bold, italics or underscore]
-
-!{bold text}!
-
-/{italics}/
-
-_{underscore}_
-
-"{citation}"
-
-^{superscript}^
-
-,{subscript},
-
-+{inserted text}+
-
--{strikethrough}-
-
-#{monospace}#
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text,
-.B emphasis,
-.B bold text
-,
-.I italics,
-.I underscore,
-"citation", ^superscript^, [subscript], ++inserted text++, --strikethrough--,
-monospace
-
-.BR
-normal text
-
-.BR
-
-.B emphasis
-[note: can be configured to be represented by bold, italics or underscore]
-
-.BR
-
-.B bold text
-
-.BR
-
-.I italics
-
-.BR
-.I underscore
-
-.BR
-"citation"
-
-.BR
-^superscript^
-
-.BR
-[subscript]
-
-.BR
-++inserted text++
-
-.BR
---strikethrough--
-
-.BR
-monospace
-.SH INDENTATION AND BULLETS
-
-
-.BR
-
-.B markup example:
-.nf
-ordinary paragraph
-
-_1 indent paragraph one step
-
-_2 indent paragraph two steps
-
-_9 indent paragraph nine steps
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-ordinary paragraph
-
-.BR
- indent paragraph one step
-
-.BR
- indent paragraph two steps
-
-.BR
- indent paragraph nine steps
-
-.BR
-
-.B markup example:
-.nf
-_* bullet text
-
-_1* bullet text, first indent
-
-_2* bullet text, two step indent
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-- bullet text
-
-.BR
- * bullet text, first indent
-
-.BR
- * bullet text, two step indent
-
-.BR
-Numbered List (not to be confused with headings/titles, (document structure))
-
-.BR
-
-.B markup example:
-.nf
-# numbered list numbered list 1., 2., 3, etc.
-
-_# numbered list numbered list indented a., b., c., d., etc.
-.fi
-
-.SH HANGING INDENTS
-
-
-.BR
-
-.B markup example:
-.nf
-_0_1 first line no indent,
-rest of paragraph indented one step
-
-_1_0 first line indented,
-rest of paragraph no indent
-
-in each case level may be 0-9
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-first line no indent, rest of paragraph indented one step; first line no
- indent, rest of paragraph indented one step; first line no indent, rest of
- paragraph indented one step; first line no indent, rest of paragraph indented
- one step; first line no indent, rest of paragraph indented one step; first
- line no indent, rest of paragraph indented one step; first line no indent,
- rest of paragraph indented one step; first line no indent, rest of paragraph
- indented one step; first line no indent, rest of paragraph indented one step;
-
-.BR
-A regular paragraph.
-
-.BR
-first line indented, rest of paragraph no indent first line indented, rest of
-paragraph no indent first line indented, rest of paragraph no indent first line
-indented, rest of paragraph no indent first line indented, rest of paragraph no
-indent first line indented, rest of paragraph no indent first line indented,
-rest of paragraph no indent first line indented, rest of paragraph no indent
-first line indented, rest of paragraph no indent first line indented, rest of
-paragraph no indent first line indented, rest of paragraph no indent
-
-.BR
-in each case level may be 0-9
-
-.BR
-
-.B live-build
- A collection of scripts used to build customized
-.B Debian
- Livesystems.
- .I live-build
- was formerly known as live-helper, and even earlier known as live-package.
-
-.BR
-
-.B live-build
-
- A collection of scripts used to build customized
-.B Debian
- Livesystems.
-.I live-build
- was formerly known as live-helper, and even earlier known as live-package.
-.SH FOOTNOTES / ENDNOTES
-
-
-.BR
-Footnotes and endnotes are marked up at the location where they would be
-indicated within a text. They are automatically numbered. The output type
-determines whether footnotes or endnotes will be produced
-
-.BR
-
-.B markup example:
-.nf
-~{ a footnote or endnote }~
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-[^5]
-
-.BR
-
-.B markup example:
-.nf
-normal text~{ self contained endnote marker & endnote in one }~ continues
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text[^6] continues
-
-.BR
-
-.B markup example:
-.nf
-normal text ~{* unnumbered asterisk footnote/endnote, insert multiple asterisks if required }~ continues
-
-normal text ~{** another unnumbered asterisk footnote/endnote }~ continues
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text [^*] continues
-
-.BR
-normal text [^**] continues
-
-.BR
-
-.B markup example:
-.nf
-normal text ~[* editors notes, numbered asterisk footnote/endnote series ]~ continues
-
-normal text ~[+ editors notes, numbered plus symbol footnote/endnote series ]~ continues
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text [^*3] continues
-
-.BR
-normal text [^+2] continues
-
-.BR
-
-.B Alternative endnote pair notation for footnotes/endnotes:
-.nf
-% note the endnote marker "~^"
-
-normal text~^ continues
-
-^~ endnote text following the paragraph in which the marker occurs
-.fi
-
-
-.BR
-the standard and pair notation cannot be mixed in the same document
-.SH LINKS
-
-.SH NAKED URLS WITHIN TEXT, DEALING WITH URLS
-
-
-.BR
-urls found within text are marked up automatically. A url within text is
-automatically hyperlinked to itself and by default decorated with angled
-braces, unless they are contained within a code block (in which case they are
-passed as normal text), or escaped by a preceding underscore (in which case the
-decoration is omitted).
-
-.BR
-
-.B markup example:
-.nf
-normal text http://www.sisudoc.org/ continues
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text <http://www.sisudoc.org/> continues
-
-.BR
-An escaped url without decoration
-
-.BR
-
-.B markup example:
-.nf
-normal text _http://www.sisudoc.org/ continues
-
-deb _http://www.jus.uio.no/sisu/archive unstable main non-free
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-normal text <_http://www.sisudoc.org/> continues
-
-.BR
-deb <_http://www.jus.uio.no/sisu/archive> unstable main non-free
-
-.BR
-where a code block is used there is neither decoration nor hyperlinking, code
-blocks are discussed later in this document
-
-.BR
-
-.B resulting output:
-.nf
-deb http://www.jus.uio.no/sisu/archive unstable main non-free
-deb-src http://www.jus.uio.no/sisu/archive unstable main non-free
-.fi
-
-.SH LINKING TEXT
-
-
-.BR
-To link text or an image to a url the markup is as follows
-
-.BR
-
-.B markup example:
-.nf
-about { SiSU }http://url.org markup
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-aboutSiSU <http://www.sisudoc.org/> markup
-
-.BR
-A shortcut notation is available so the url link may also be provided
-automatically as a footnote
-
-.BR
-
-.B markup example:
-.nf
-about {~^ SiSU }http://url.org markup
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-aboutSiSU <http://www.sisudoc.org/> [^7] markup
-
-.BR
-Internal document links to a tagged location, including an ocn
-
-.BR
-
-.B markup example:
-.nf
-about { text links }#link_text
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-about ⌠text links⌡⌈link_text⌋
-
-.BR
-Shared document collection link
-
-.BR
-
-.B markup example:
-.nf
-about { SiSU book markup examples }:SiSU/examples.html
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-about ⌠
-.B SiSU
-book markup examples⌡⌈:SiSU/examples.html⌋
-.SH LINKING IMAGES
-
-
-.BR
-
-.B markup example:
-.nf
-{ tux.png 64x80 }image
-
-% various url linked images
-
-{tux.png 64x80 "a better way" }http://www.sisudoc.org/
-
-{GnuDebianLinuxRubyBetterWay.png 100x101 "Way Better - with Gnu/Linux, Debian and Ruby" }http://www.sisudoc.org/
-
-{~^ ruby_logo.png "Ruby" }http://www.ruby-lang.org/en/
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-[ tux.png ]
-
-.BR
-tux.png 64x80 "Gnu/Linux - a better way" <http://www.sisudoc.org/>
-
-.BR
-GnuDebianLinuxRubyBetterWay.png 100x101 "Way Better - with Gnu/Linux, Debian
-and Ruby" <http://www.sisudoc.org/>
-
-.BR
-ruby_logo.png 70x90 "Ruby" <http://www.ruby-lang.org/en/> [^8]
-
-.BR
-
-.B linked url footnote shortcut
-.nf
-{~^ [text to link] }http://url.org
-
-% maps to: { [text to link] }http://url.org ~{ http://url.org }~
-
-% which produces hyper-linked text within a document/paragraph, with an endnote providing the url for the text location used in the hyperlink
-.fi
-
-.nf
-text marker *~name
-.fi
-
-
-.BR
-note at a heading level the same is automatically achieved by providing names
-to headings 1, 2 and 3 i.e. 2~[name] and 3~[name] or in the case of
-auto-heading numbering, without further intervention.
-.SH LINK SHORTCUT FOR MULTIPLE VERSIONS OF A SISU DOCUMENT IN THE SAME DIRECTORY
-TREE
-
-
-.BR
-
-.B markup example:
-.nf
-!_ /{"Viral Spiral"}/, David Bollier
-
-{ "Viral Spiral", David Bollier [3sS]}viral_spiral.david_bollier.sst
-.fi
-
-
-.BR
-
-.B
-.I "Viral Spiral",
-David Bollier
-"Viral Spiral", David Bollier <http://corundum/sisu_manual/en/manifest/viral_spiral.david_bollier.html>
- document manifest <http://corundum/sisu_manual/en/manifest/viral_spiral.david_bollier.html>
- ⌠html, segmented text⌡「http://corundum/sisu_manual/en/html/viral_spiral.david_bollier.html」
- ⌠html, scroll, document in one⌡「http://corundum/sisu_manual/en/html/viral_spiral.david_bollier.html」
- ⌠epub⌡「http://corundum/sisu_manual/en/epub/viral_spiral.david_bollier.epub」
- ⌠pdf, landscape⌡「http://corundum/sisu_manual/en/pdf/viral_spiral.david_bollier.pdf」
- ⌠pdf, portrait⌡「http://corundum/sisu_manual/en/pdf/viral_spiral.david_bollier.pdf」
- ⌠odf: odt, open document text⌡「http://corundum/sisu_manual/en/odt/viral_spiral.david_bollier.odt」
- ⌠xhtml scroll⌡「http://corundum/sisu_manual/en/xhtml/viral_spiral.david_bollier.xhtml」
- ⌠xml, sax⌡「http://corundum/sisu_manual/en/xml/viral_spiral.david_bollier.xml」
- ⌠xml, dom⌡「http://corundum/sisu_manual/en/xml/viral_spiral.david_bollier.xml」
- ⌠concordance⌡「http://corundum/sisu_manual/en/html/viral_spiral.david_bollier.html」
- ⌠dcc, document content certificate (digests)⌡「http://corundum/sisu_manual/en/digest/viral_spiral.david_bollier.txt」
- ⌠markup source text⌡「http://corundum/sisu_manual/en/src/viral_spiral.david_bollier.sst」
- ⌠markup source (zipped) pod⌡「http://corundum/sisu_manual/en/pod/viral_spiral.david_bollier.sst.zip」
-
-.SH GROUPED TEXT / BLOCKED TEXT
-
-
-.BR
-There are two markup syntaxes for blocked text, using curly braces or using
-tics
-.SH BLOCKED TEXT CURLY BRACE SYNTAX
-
-
-.BR
-at the start of a line on its own use name of block type with an opening curly
-brace, follow with the content of the block, and close with a closing curly
-brace and the name of the block type, e.g.
-.nf
-code{
-
-this is a code block
-
-}code
-.fi
-
-.nf
-
-poem{
-
-this here is a poem
-
-}poem
-.fi
-
-.SH BLOCKED TEXT TIC SYNTAX
-
-.nf
-``` code
-this is a code block
-
-```
-
-``` poem
-this here is a poem
-
-```
-.fi
-
-
-.BR
-start a line with three backtics, a space followed by the name of the name of
-block type, follow with the content of the block, and close with three back
-ticks on a line of their own, e.g.
-.SH TABLES
-
-
-.BR
-Tables may be prepared in two either of two forms
-
-.BR
-
-.B markup example:
-.nf
-table{ c3; 40; 30; 30;
-
-This is a table
-this would become column two of row one
-column three of row one is here
-
-And here begins another row
-column two of row two
-column three of row two, and so on
-
-}table
-.fi
-
-
-.BR
-
-.B resulting output:
-This is a table|this would become column two of row one|column three of row one is here』And here begins another row|column two of row two|column three of row two, and so on』
-
-
-.BR
-a second form may be easier to work with in cases where there is not much
-information in each column
-
-.BR
-
-.B markup example:
-[^9]
-.nf
-!_ Table 3.1: Contributors to Wikipedia, January 2001 - June 2005
-
-{table~h 24; 12; 12; 12; 12; 12; 12;}
- |Jan. 2001|Jan. 2002|Jan. 2003|Jan. 2004|July 2004|June 2006
-Contributors* | 10| 472| 2,188| 9,653| 25,011| 48,721
-Active contributors** | 9| 212| 846| 3,228| 8,442| 16,945
-Very active contributors*** | 0| 31| 190| 692| 1,639| 3,016
-No. of English language articles| 25| 16,000| 101,000| 190,000| 320,000| 630,000
-No. of articles, all languages | 25| 19,000| 138,000| 490,000| 862,000|1,600,000
-
-- Contributed at least ten times; ** at least 5 times in last month; *** more than 100 times in last month.
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-
-.B Table 3.1: Contributors to Wikipedia, January 2001 - June 2005
-|Jan. 2001|Jan. 2002|Jan. 2003|Jan. 2004|July 2004|June 2006』Contributors*|10|472|2,188|9,653|25,011|48,721』Active contributors**|9|212|846|3,228|8,442|16,945』Very active contributors***|0|31|190|692|1,639|3,016』No. of English language articles|25|16,000|101,000|190,000|320,000|630,000』No. of articles, all languages|25|19,000|138,000|490,000|862,000|1,600,000』
-
-
-.BR
-- Contributed at least ten times; ** at least 5 times in last month; *** more
-than 100 times in last month.
-.SH POEM
-
-
-.BR
-
-.B basic markup:
-.nf
-poem{
-
- Your poem here
-
-}poem
-
-Each verse in a poem is given an object number.
-.fi
-
-
-.BR
-
-.B markup example:
-.nf
-poem{
-
- `Fury said to a
- mouse, That he
- met in the
- house,
- "Let us
- both go to
- law: I will
- prosecute
- YOU. --Come,
- I'll take no
- denial; We
- must have a
- trial: For
- really this
- morning I've
- nothing
- to do."
- Said the
- mouse to the
- cur, "Such
- a trial,
- dear Sir,
- With
- no jury
- or judge,
- would be
- wasting
- our
- breath."
- "I'll be
- judge, I'll
- be jury,"
- Said
- cunning
- old Fury:
- "I'll
- try the
- whole
- cause,
- and
- condemn
- you
- to
- death."'
-
-}poem
-.fi
-
-
-.BR
-
-.B resulting output:
- `Fury said to a
- mouse, That he
- met in the
- house,
- "Let us
- both go to
- law: I will
- prosecute
- YOU. --Come,
- I'll take no
- denial; We
- must have a
- trial: For
- really this
- morning I've
- nothing
- to do."
- Said the
- mouse to the
- cur, "Such
- a trial,
- dear Sir,
- With
- no jury
- or judge,
- would be
- wasting
- our
- breath."
- "I'll be
- judge, I'll
- be jury,"
- Said
- cunning
- old Fury:
- "I'll
- try the
- whole
- cause,
- and
- condemn
- you
- to
- death."'
-
-
-.SH GROUP
-
-
-.BR
-
-.B basic markup:
-.nf
-group{
-
- Your grouped text here
-
-}group
-
-A group is treated as an object and given a single object number.
-.fi
-
-
-.BR
-
-.B markup example:
-.nf
-group{
-
- `Fury said to a
- mouse, That he
- met in the
- house,
- "Let us
- both go to
- law: I will
- prosecute
- YOU. --Come,
- I'll take no
- denial; We
- must have a
- trial: For
- really this
- morning I've
- nothing
- to do."
- Said the
- mouse to the
- cur, "Such
- a trial,
- dear Sir,
- With
- no jury
- or judge,
- would be
- wasting
- our
- breath."
- "I'll be
- judge, I'll
- be jury,"
- Said
- cunning
- old Fury:
- "I'll
- try the
- whole
- cause,
- and
- condemn
- you
- to
- death."'
-
-}group
-.fi
-
-
-.BR
-
-.B resulting output:
- `Fury said to a
- mouse, That he
- met in the
- house,
- "Let us
- both go to
- law: I will
- prosecute
- YOU. --Come,
- I'll take no
- denial; We
- must have a
- trial: For
- really this
- morning I've
- nothing
- to do."
- Said the
- mouse to the
- cur, "Such
- a trial,
- dear Sir,
- With
- no jury
- or judge,
- would be
- wasting
- our
- breath."
- "I'll be
- judge, I'll
- be jury,"
- Said
- cunning
- old Fury:
- "I'll
- try the
- whole
- cause,
- and
- condemn
- you
- to
- death."'
-
-
-.SH CODE
-
-
-.BR
-Code tags code{ ... }code (used as with other group tags described above) are
-used to escape regular sisu markup, and have been used extensively within this
-document to provide examples of
-.B SiSU
-markup. You cannot however use code tags to escape code tags. They are however
-used in the same way as group or poem tags.
-
-.BR
-A code-block is treated as an object and given a single object number. [an
-option to number each line of code may be considered at some later time]
-
-.BR
-
-.B use of code tags instead of poem compared, resulting output:
-.nf
- `Fury said to a
- mouse, That he
- met in the
- house,
- "Let us
- both go to
- law: I will
- prosecute
- YOU. --Come,
- I'll take no
- denial; We
- must have a
- trial: For
- really this
- morning I've
- nothing
- to do."
- Said the
- mouse to the
- cur, "Such
- a trial,
- dear Sir,
- With
- no jury
- or judge,
- would be
- wasting
- our
- breath."
- "I'll be
- judge, I'll
- be jury,"
- Said
- cunning
- old Fury:
- "I'll
- try the
- whole
- cause,
- and
- condemn
- you
- to
- death."'
-.fi
-
-
-.BR
-From
-.B SiSU
-2.7.7 on you can number codeblocks by placing a hash after the opening code tag
-code{# as demonstrated here:
-.nf
-1 | `Fury said to a
-2 | mouse, That he
-3 | met in the
-4 | house,
-5 | "Let us
-6 | both go to
-7 | law: I will
-8 | prosecute
-9 | YOU. --Come,
-10 | I'll take no
-11 | denial; We
-12 | must have a
-13 | trial: For
-14 | really this
-15 | morning I've
-16 | nothing
-17 | to do."
-18 | Said the
-19 | mouse to the
-20 | cur, "Such
-21 | a trial,
-22 | dear Sir,
-23 | With
-24 | no jury
-25 | or judge,
-26 | would be
-27 | wasting
-28 | our
-29 | breath."
-30 | "I'll be
-31 | judge, I'll
-32 | be jury,"
-33 | Said
-34 | cunning
-35 | old Fury:
-36 | "I'll
-37 | try the
-38 | whole
-39 | cause,
-40 | and
-41 | condemn
-42 | you
-43 | to
-44 | death."'
-.fi
-
-.SH ADDITIONAL BREAKS - LINEBREAKS WITHIN OBJECTS, COLUMN AND PAGE-BREAKS
-
-.SH LINE-BREAKS
-
-
-.BR
-To break a line within a "paragraph object", two backslashes \e\e
-with a space before and a space or newline after them
-may be used.
-.nf
-To break a line within a "paragraph object",
-two backslashes \e\e with a space before
-and a space or newline after them \e\e
-may be used.
-.fi
-
-
-.BR
-The html break br enclosed in angle brackets (though undocumented) is available
-in versions prior to 3.0.13 and 2.9.7 (it remains available for the time being,
-but is depreciated).
-
-.BR
-To draw a dividing line dividing paragraphs, see the section on page breaks.
-.SH PAGE BREAKS
-
-
-.BR
-Page breaks are only relevant and honored in some output formats. A page break
-or a new page may be inserted manually using the following markup on a line on
-its own:
-
-.BR
-page new =\e= breaks the page, starts a new page.
-
-.BR
-page break -\- breaks a column, starts a new column, if using columns, else
-breaks the page, starts a new page.
-
-.BR
-page break line across page -..- draws a dividing line, dividing paragraphs
-
-.BR
-page break:
-.nf
--\e\e-
-.fi
-
-
-.BR
-page (break) new:
-.nf
-=\e\e=
-.fi
-
-
-.BR
-page (break) line across page (dividing paragraphs):
-.nf
--..-
-.fi
-
-.SH BIBLIOGRAPHY / REFERENCES
-
-
-.BR
-There are three ways to prepare a bibliography using sisu (which are mutually
-exclusive): (i) manually preparing and marking up as regular text in sisu a
-list of references, this is treated as a regular document segment (and placed
-before endnotes if any); (ii) preparing a bibliography, marking a heading level
-1~!biblio (note the exclamation mark) and preparing a bibliography using
-various metadata tags including for author: title: year: a list of which is
-provided below, or; (iii) as an assistance in preparing a bibliography, marking
-a heading level 1~!biblio and tagging citations within footnotes for inclusion,
-identifying citations and having a parser attempt to extract them and build a
-bibliography of the citations provided.
-
-.BR
-For the heading/section sequence: endnotes, bibliography then book index to
-occur, the name biblio or bibliography must be given to the bibliography
-section, like so:
-.nf
-1~!biblio~ [Note: heading marker::required title missing]
-.fi
-
-.SH A MARKUP TAGGED METADATA BIBLIOGRAPHY SECTION
-
-
-.BR
-Here instead of writing your full citations directly in footnotes, each time
-you have new material to cite, you add it to your bibliography section (if it
-has not been added yet) providing the information you need against an available
-list of tags (provided below).
-
-.BR
-The required tags are au: ti: and year: [^10] an short quick example might be
-as follows:
-.nf
-1~!biblio~ [Note: heading marker::required title missing]
-
-au: von Hippel, E.
-ti: Perspective: User Toolkits for Innovation
-lng: (language)
-jo: Journal of Product Innovation Management
-vo: 18
-ed: (editor)
-yr: 2001
-note:
-sn: Hippel, /{User Toolkits}/ (2001)
-id: vHippel_2001
-% form:
-
-au: Benkler, Yochai
-ti: The Wealth of Networks
-st: How Social Production Transforms Markets and Freedom
-lng: (language)
-pb: Harvard University Press
-edn: (edition)
-yr: 2006
-pl: U.S.
-url: http://cyber.law.harvard.edu/wealth_of_networks/Main_Page
-note:
-sn: Benkler, /{Wealth of Networks}/ (2006)
-id: Benkler2006
-
-au: Quixote, Don; Panza, Sancho
-ti: Taming Windmills, Keeping True
-jo: Imaginary Journal
-yr: 1605
-url: https://en.wikipedia.org/wiki/Don_Quixote
-note: made up to provide an example of author markup for an article with two authors
-sn: Quixote & Panza, /{Taming Windmills}/ (1605)
-id: quixote1605
-.fi
-
-
-.BR
-Note that the section name !biblio (or !bibliography) is required for the
-bibliography to be treated specially as such, and placed after the
-auto-generated endnote section.
-
-.BR
-Using this method, work goes into preparing the bibliography, the tags author
-or editor, year and title are required and will be used to sort the
-bibliography that is placed under the Bibliography section
-
-.BR
-The metadata tags may include shortname (sn:) and id, if provided, which are
-used for substitution within text. Every time the given id is found within the
-text it will be replaced by the given short title of the work (it is for this
-reason the short title has sisu markup to italicize the title), it should work
-with any page numbers to be added, the short title should be one that can
-easily be used to look up the full description in the bibliography.
-.nf
-The following footnote~{ quixote1605, pp 1000 - 1001, also Benkler2006 p 1. }~
-.fi
-
-
-.BR
-would be presented as:
-
-.BR
-Quixote and Panza,
-.I Taming Windmills
-(1605), pp 1000 - 1001 also, Benkler,
-.I Wealth of Networks,
-(2006) p 1 or rather[^11]
-.nf
-au: author Surname, FirstNames (if multiple semi-colon separator)
- (required unless editor to be used instead)
-ti: title (required)
-st: subtitle
-jo: journal
-vo: volume
-ed: editor (required if author not provided)
-tr: translator
-src: source (generic field where others are not appropriate)
-in: in (like src)
-pl: place/location (state, country)
-pb: publisher
-edn: edition
-yr: year (yyyy or yyyy-mm or yyyy-mm-dd) (required)
-pg: pages
-url: http://url
-note: note
-id: create_short_identifier e.g. authorSurnameYear
- (used in substitutions: when found within text will be
- replaced by the short name provided)
-sn: short name e.g. Author, /{short title}/, Year
- (used in substitutions: when an id is found within text
- the short name will be used to replace it)
-.fi
-
-.SH TAGGING CITATIONS FOR INCLUSION IN THE BIBLIOGRAPHY
-
-
-.BR
-Here whenever you make a citation that you wish be included in the
-bibliography, you tag the citation as such using special delimiters (which are
-subsequently removed from the final text produced by sisu)
-
-.BR
-Here you would write something like the following, either in regular text or a
-footnote
-.nf
-See .: Quixote, Don; Panza, Sancho /{Taming Windmills, Keeping True}/ (1605) :.
-.fi
-
-
-.BR
-
-.B SiSU
-will parse for a number of patterns within the delimiters to try make out the
-authors, title, date etc. and from that create a Bibliography. This is more
-limited than the previously described method of preparing a tagged
-bibliography, and using an id within text to identify the work, which also
-lends itself to greater consistency.
-.SH GLOSSARY
-
-
-.BR
-Using the section name 1~!glossary results in the Glossary being treated
-specially as such, and placed after the auto-generated endnote section (before
-the bibliography/list of references if there is one).
-
-.BR
-The Glossary is ordinary text marked up in a manner deemed suitable for that
-purpose. e.g. with the term in bold, possibly with a hanging indent.
-.nf
-1~!glossary~ [Note: heading marker::required title missing]
-
-_0_1 *{GPL}* An abbreviation that stands for "General Purpose License." ...
-
-_0_1 [provide your list of terms and definitions]
-.fi
-
-
-.BR
-In the given example the first line is not indented subsequent lines are by one
-level, and the term to be defined is in bold text.
-.SH BOOK INDEX
-
-
-.BR
-To make an index append to paragraph the book index term relates to it, using
-an equal sign and curly braces.
-
-.BR
-Currently two levels are provided, a main term and if needed a sub-term.
-Sub-terms are separated from the main term by a colon.
-.nf
- Paragraph containing main term and sub-term.
- ={Main term:sub-term}
-.fi
-
-
-.BR
-The index syntax starts on a new line, but there should not be an empty line
-between paragraph and index markup.
-
-.BR
-The structure of the resulting index would be:
-.nf
- Main term, 1
- sub-term, 1
-.fi
-
-
-.BR
-Several terms may relate to a paragraph, they are separated by a semicolon. If
-the term refers to more than one paragraph, indicate the number of paragraphs.
-.nf
- Paragraph containing main term, second term and sub-term.
- ={first term; second term: sub-term}
-.fi
-
-
-.BR
-The structure of the resulting index would be:
-.nf
- First term, 1,
- Second term, 1,
- sub-term, 1
-.fi
-
-
-.BR
-If multiple sub-terms appear under one paragraph, they are separated under the
-main term heading from each other by a pipe symbol.
-.nf
- Paragraph containing main term, second term and sub-term.
- ={Main term:
- sub-term+2|second sub-term;
- Another term
- }
-
- A paragraph that continues discussion of the first sub-term
-.fi
-
-
-.BR
-The plus one in the example provided indicates the first sub-term spans one
-additional paragraph. The logical structure of the resulting index would be:
-.nf
- Main term, 1,
- sub-term, 1-3,
- second sub-term, 1,
- Another term, 1
-.fi
-
-.SH COMPOSITE DOCUMENTS MARKUP
-
-
-.BR
-It is possible to build a document by creating a master document that requires
-other documents. The documents required may be complete documents that could be
-generated independently, or they could be markup snippets, prepared so as to be
-easily available to be placed within another text. If the calling document is a
-master document (built from other documents), it should be named with the
-suffix
-.B .ssm
-Within this document you would provide information on the other documents that
-should be included within the text. These may be other documents that would be
-processed in a regular way, or markup bits prepared only for inclusion within a
-master document
-.B .sst
-regular markup file, or
-.B .ssi
-(insert/information) A secondary file of the composite document is built prior
-to processing with the same prefix and the suffix
-.B ._sst
-
-.BR
-basic markup for importing a document into a master document
-.nf
-<< filename1.sst
-
-<< filename2.ssi
-.fi
-
-
-.BR
-The form described above should be relied on. Within the
-.I Vim
-editor it results in the text thus linked becoming hyperlinked to the document
-it is calling in which is convenient for editing.
-.SH SUBSTITUTIONS
-
-
-.BR
-
-.B markup example:
-.nf
-The current Debian is ${debian_stable} the next debian will be ${debian_testing}
-
-Configure substitution in _sisu/sisu_document_make
-
-make:
- substitute: /${debian_stable}/,'*{Wheezy}*' /${debian_testing}/,'*{Jessie}*'
-.fi
-
-
-.BR
-
-.B resulting output:
-
-.BR
-The current
-.B Debian
-is
-.B Jessie
-the next debian will be
-.B Stretch
-
-.BR
-Configure substitution in _sisu/sisu_document_make
-.SH SISU FILETYPES
-
-
-.BR
-
-.B SiSU
-has
-.I plaintext
-and binary filetypes, and can process either type of document.
-.SH .SST .SSM .SSI MARKED UP PLAIN TEXT
-
-.TP
-.B SiSU
-documents are prepared as plain-text (utf-8) files with
-.B SiSU
-markup. They may make reference to and contain images (for example), which are
-stored in the directory beneath them _sisu/image. 〔b¤SiSU
-.I plaintext
-markup files are of three types that may be distinguished by the file extension
-used: regular text .sst; master documents, composite documents that incorporate
-other text, which can be any regular text or text insert; and inserts the
-contents of which are like regular text except these are marked .ssi and are
-not processed.
-
-.BR
-
-.B SiSU
-processing can be done directly against a sisu documents; which may be located
-locally or on a remote server for which a url is provided.
-
-.BR
-
-.B SiSU
-source markup can be shared with the command:
-
-.BR
- sisu -s [filename]
-.SH SISU TEXT - REGULAR FILES (.SST)
-
-
-.BR
-The most common form of document in
-.B SiSU,
-see the section on
-.B SiSU
-markup.
-.SH SISU MASTER FILES (.SSM)
-
-
-.BR
-Composite documents which incorporate other
-.B SiSU
-documents which may be either regular
-.B SiSU
-text .sst which may be generated independently, or inserts prepared solely for
-the purpose of being incorporated into one or more master documents.
-
-.BR
-The mechanism by which master files incorporate other documents is described as
-one of the headings under under
-.B SiSU
-markup in the
-.B SiSU
-manual.
-
-.BR
-Note: Master documents may be prepared in a similar way to regular documents,
-and processing will occur normally if a .sst file is renamed .ssm without
-requiring any other documents; the .ssm marker flags that the document may
-contain other documents.
-
-.BR
-Note: a secondary file of the composite document is built prior to processing
-with the same prefix and the suffix ._sst
-.SH SISU INSERT FILES (.SSI)
-
-
-.BR
-Inserts are documents prepared solely for the purpose of being incorporated
-into one or more master documents. They resemble regular
-.B SiSU
-text files (.sst). Since sisu -5.5.0 (6.1.0) .ssi files can like .ssm files
-include other .sst or .ssm files. .ssi files cannot be called by the sisu
-processor directly and can only be incorporated in other documents. Making a
-file a .ssi file is a quick and convenient way of breaking up a document that
-is to be included in a master document, and flagging that the file to be
-incorporated .ssi is not intended that the file should be processed on its own.
-.SH SISUPOD, ZIPPED BINARY CONTAINER (SISUPOD.ZIP, .SSP)
-
-
-.BR
-A sisupod is a zipped
-.B SiSU
-text file or set of
-.B SiSU
-text files and any associated images that they contain (this will be extended
-to include sound and multimedia-files)
-.TP
-.B SiSU
-.I plaintext
-files rely on a recognised directory structure to find contents such as images
-associated with documents, but all images for example for all documents
-contained in a directory are located in the sub-directory _sisu/image. Without
-the ability to create a sisupod it can be inconvenient to manually identify all
-other files associated with a document. A sisupod automatically bundles all
-associated files with the document that is turned into a pod.
-
-.BR
-The structure of the sisupod is such that it may for example contain a single
-document and its associated images; a master document and its associated
-documents and anything else; or the zipped contents of a whole directory of
-prepared
-.B SiSU
-documents.
-
-.BR
-The command to create a sisupod is:
-
-.BR
- sisu -S [filename]
-
-.BR
-Alternatively, make a pod of the contents of a whole directory:
-
-.BR
- sisu -S
-
-.BR
-
-.B SiSU
-processing can be done directly against a sisupod; which may be located locally
-or on a remote server for which a url is provided.
-
-.BR
-<http://www.sisudoc.org/sisu/sisu_commands>
-
-.BR
-<http://www.sisudoc.org/sisu/sisu_manual>
-.SH CONFIGURATION
-
-.SH CONFIGURATION FILES
-
-.SH CONFIG.YML
-
-
-.BR
-
-.B SiSU
-configration parameters are adjusted in the configuration file, which can be
-used to override the defaults set. This includes such things as which directory
-interim processing should be done in and where the generated output should be
-placed.
-
-.BR
-The
-.B SiSU
-configuration file is a yaml file, which means indentation is significant.
-
-.BR
-
-.B SiSU
-resource configuration is determined by looking at the following files if they
-exist:
-
-.BR
- ./_sisu/v7/sisurc.yml
-
-.BR
- ./_sisu/sisurc.yml
-
-.BR
- ~/.sisu/v7/sisurc.yml
-
-.BR
- ~/.sisu/sisurc.yml
-
-.BR
- /etc/sisu/v7/sisurc.yml
-
-.BR
- /etc/sisu/sisurc.yml
-
-.BR
-The search is in the order listed, and the first one found is used.
-
-.BR
-In the absence of instructions in any of these it falls back to the internal
-program defaults.
-
-.BR
-Configuration determines the output and processing directories and the database
-access details.
-
-.BR
-If
-.B SiSU
-is installed a sample sisurc.yml may be found in /etc/sisu/sisurc.yml
-.SH SISU_DOCUMENT_MAKE
-
-
-.BR
-Most sisu document headers relate to metadata, the exception is the @make:
-header which provides processing related information. The default contents of
-the @make header may be set by placing them in a file sisu_document_make.
-
-.BR
-The search order is as for resource configuration:
-
-.BR
- ./_sisu/v7/sisu_document_make
-
-.BR
- ./_sisu/sisu_document_make
-
-.BR
- ~/.sisu/v7/sisu_document_make
-
-.BR
- ~/.sisu/sisu_document_make
-
-.BR
- /etc/sisu/v7/sisu_document_make
-
-.BR
- /etc/sisu/sisu_document_make
-
-.BR
-A sample sisu_document_make can be found in the _sisu/ directory under along
-with the provided sisu markup samples.
-.SH CSS - CASCADING STYLE SHEETS (FOR HTML, XHTML AND XML)
-
-
-.BR
-CSS files to modify the appearance of
-.B SiSU
-html,
-.I XHTML
-or
-.I XML
-may be placed in the configuration directory: ./_sisu/css ; ~/.sisu/css or;
-/etc/sisu/css and these will be copied to the output directories with the
-command sisu -CC.
-
-.BR
-The basic CSS file for html output is html. css, placing a file of that name in
-directory _sisu/css or equivalent will result in the default file of that name
-being overwritten.
-
-.BR
-
-.I HTML:
-html. css
-
-.BR
-
-.I XML
-DOM: dom.css
-
-.BR
-
-.I XML
-SAX: sax.css
-
-.BR
-
-.I XHTML:
-xhtml. css
-
-.BR
-The default homepage may use homepage.css or html. css
-
-.BR
-Under consideration is to permit the placement of a CSS file with a different
-name in directory _sisu/css directory or equivalent.[^12]
-.SH ORGANISING CONTENT - DIRECTORY STRUCTURE AND MAPPING
-
-
-.BR
-
-.B SiSU
-v3 has new options for the source directory tree, and output directory
-structures of which there are 3 alternatives.
-.SH DOCUMENT SOURCE DIRECTORY
-
-
-.BR
-The document source directory is the directory in which sisu processing
-commands are given. It contains the sisu source files (.sst .ssm .ssi), or (for
-sisu v3 may contain) subdirectories with language codes which contain the sisu
-source files, so all English files would go in subdirectory en/, French in fr/,
-Spanish in es/ and so on. ISO 639-1 codes are used (as varied by po4a). A list
-of available languages (and possible sub-directory names) can be obtained with
-the command "sisu --help lang" The list of languages is limited to langagues
-supported by XeTeX polyglosia.
-.SH GENERAL DIRECTORIES
-
-.nf
- ./subject_name/
-
-% files stored at this level e.g. sisu_manual.sst or
-% for sisu v3 may be under language sub-directories
-% e.g.
-
- ./subject_name/en
-
- ./subject_name/fr
-
- ./subject_name/es
-
- ./subject_name/_sisu
-
- ./subject_name/_sisu/css
-
- ./subject_name/_sisu/image
-.fi
-
-.SH DOCUMENT OUTPUT DIRECTORY STRUCTURES
-
-.SH OUTPUT DIRECTORY ROOT
-
-
-.BR
-The output directory root can be set in the sisurc.yml file. Under the root,
-subdirectories are made for each directory in which a document set resides. If
-you have a directory named poems or conventions, that directory will be created
-under the output directory root and the output for all documents contained in
-the directory of a particular name will be generated to subdirectories beneath
-that directory (poem or conventions). A document will be placed in a
-subdirectory of the same name as the document with the filetype identifier
-stripped (.sst .ssm)
-
-.BR
-The last part of a directory path, representing the sub-directory in which a
-document set resides, is the directory name that will be used for the output
-directory. This has implications for the organisation of document collections
-as it could make sense to place documents of a particular subject, or type
-within a directory identifying them. This grouping as suggested could be by
-subject (sales_law, english_literature); or just as conveniently by some other
-classification (X University). The mapping means it is also possible to place
-in the same output directory documents that are for organisational purposes
-kept separately, for example documents on a given subject of two different
-institutions may be kept in two different directories of the same name, under a
-directory named after each institution, and these would be output to the same
-output directory. Skins could be associated with each institution on a
-directory basis and resulting documents will take on the appropriate different
-appearance.
-.SH ALTERNATIVE OUTPUT STRUCTURES
-
-
-.BR
-There are 3 possibile output structures described as being, by language, by
-filetype or by filename, the selection is made in sisurc.yml
-.nf
-#% output_dir_structure_by: language; filetype; or filename
-output_dir_structure_by: language #(language & filetype, preferred?)
-#output_dir_structure_by: filetype
-#output_dir_structure_by: filename #(default, closest to original v1 & v2)
-.fi
-
-.SH BY LANGUAGE
-
-
-.BR
-The by language directory structure places output files
-
-.BR
-The by language directory structure separates output files by language code
-(all files of a given language), and within the language directory by filetype.
-
-.BR
-Its selection is configured in sisurc.yml
-
-.BR
-output_dir_structure_by: language
-.nf
- |-- en
- |-- epub
- |-- hashes
- |-- html
- | |-- viral_spiral.david_bollier
- | |-- manifest
- | |-- qrcode
- | |-- odt
- | |-- pdf
- | |-- sitemaps
- | |-- txt
- | |-- xhtml
- | `-- xml
- |-- po4a
- | `-- live-manual
- | |-- po
- | |-- fr
- | `-- pot
- `-- _sisu
- |-- css
- |-- image
- |-- image_sys -> ../../_sisu/image_sys
- `-- xml
- |-- rnc
- |-- rng
- `-- xsd
-.fi
-
-
-.BR
-#by: language subject_dir/en/manifest/filename.html
-.SH BY FILETYPE
-
-
-.BR
-The by filetype directory structure separates output files by filetype, all
-html files in one directory pdfs in another and so on. Filenames are given a
-language extension.
-
-.BR
-Its selection is configured in sisurc.yml
-
-.BR
-output_dir_structure_by: filetype
-.nf
- |-- epub
- |-- hashes
- |-- html
- |-- viral_spiral.david_bollier
- |-- manifest
- |-- qrcode
- |-- odt
- |-- pdf
- |-- po4a
- |-- live-manual
- | |-- po
- | |-- fr
- | `-- pot
- |-- _sisu
- | |-- css
- | |-- image
- | |-- image_sys -> ../../_sisu/image_sys
- | `-- xml
- | |-- rnc
- | |-- rng
- | `-- xsd
- |-- sitemaps
- |-- txt
- |-- xhtml
- `-- xml
-.fi
-
-
-.BR
-#by: filetype subject_dir/html/filename/manifest.en.html
-.SH BY FILENAME
-
-
-.BR
-The by filename directory structure places most output of a particular file
-(the different filetypes) in a common directory.
-
-.BR
-Its selection is configured in sisurc.yml
-
-.BR
-output_dir_structure_by: filename
-.nf
- |-- epub
- |-- po4a
- |-- live-manual
- | |-- po
- | |-- fr
- | `-- pot
- |-- _sisu
- | |-- css
- | |-- image
- | |-- image_sys -> ../../_sisu/image_sys
- | `-- xml
- | |-- rnc
- | |-- rng
- | `-- xsd
- |-- sitemaps
- |-- src
- |-- pod
- `-- viral_spiral.david_bollier
-.fi
-
-
-.BR
-#by: filename subject_dir/filename/manifest.en.html
-.SH REMOTE DIRECTORIES
-
-.nf
- ./subject_name/
-
-% containing sub_directories named after the generated files from which they are made
-
- ./subject_name/src
-
-% contains shared source files text and binary e.g. sisu_manual.sst and sisu_manual.sst.zip
-
- ./subject_name/_sisu
-
-% configuration file e.g. sisurc.yml
-
- ./subject_name/_sisu/skin
-
-% skins in various skin directories doc, dir, site, yml
-
- ./subject_name/_sisu/css
-
- ./subject_name/_sisu/image
-
-% images for documents contained in this directory
-
- ./subject_name/_sisu/mm
-.fi
-
-.SH SISUPOD
-
-.nf
- ./sisupod/
-
-% files stored at this level e.g. sisu_manual.sst
-
- ./sisupod/_sisu
-
-% configuration file e.g. sisurc.yml
-
- ./sisupod/_sisu/skin
-
-% skins in various skin directories doc, dir, site, yml
-
- ./sisupod/_sisu/css
-
- ./sisupod/_sisu/image
-
-% images for documents contained in this directory
-
- ./sisupod/_sisu/mm
-.fi
-
-.SH HOMEPAGES
-
-
-.BR
-
-.B SiSU
-is about the ability to auto-generate documents. Home pages are regarded as
-custom built items, and are not created by
-.B SiSU.
-More accurately,
-.B SiSU
-has a default home page, which will not be appropriate for use with other
-sites, and the means to provide your own home page instead in one of two ways
-as part of a site's configuration, these being:
-
-.BR
-1. through placing your home page and other custom built documents in the
-subdirectory _sisu/home/ (this probably being the easier and more convenient
-option)
-
-.BR
-2. through providing what you want as the home page in a skin,
-
-.BR
-Document sets are contained in directories, usually organised by site or
-subject. Each directory can/should have its own homepage. See the section on
-directory structure and organisation of content.
-.SH HOME PAGE AND OTHER CUSTOM BUILT PAGES IN A SUB-DIRECTORY
-
-
-.BR
-Custom built pages, including the home page index.html may be placed within the
-configuration directory _sisu/home/ in any of the locations that is searched
-for the configuration directory, namely ./_sisu ; ~/_sisu ; /etc/sisu From
-there they are copied to the root of the output directory with the command:
-
-.BR
- sisu -CC
-.SH MARKUP AND OUTPUT EXAMPLES
-
-.SH MARKUP EXAMPLES
-
-
-.BR
-Current markup examples and document output samples are provided off
-<http://sisudoc.org> or <http://www.jus.uio.no/sisu> and in the sisu
--markup-sample package available off <http://git.sisudoc.org>
-
-.BR
-For some documents hardly any markup at all is required at all, other than a
-header, and an indication that the levels to be taken into account by the
-program in generating its output are.
-.SH SISU MARKUP SAMPLES
-
-
-.BR
-A few additional sample books prepared as sisu markup samples, output formats
-to be generated using
-.B SiSU
-are contained in a separate package sisu -markup-samples. sisu -markup-samples
-contains books (prepared using sisu markup), that were released by their
-authors various licenses mostly different Creative Commons licences that do not
-permit inclusion in the
-.B Debian
-Project as they have requirements that do not meet the
-.B Debian
-Free Software Guidelines for various reasons, most commonly that they require
-that the original substantive text remain unchanged, and sometimes that the
-works be used only non-commercially.
-
-.BR
-
-.I Accelerando,
-Charles Stross (2005)
-accelerando.charles_stross.sst
-
-.BR
-
-.I Alice's Adventures in Wonderland,
-Lewis Carroll (1865)
-alices_adventures_in_wonderland.lewis_carroll.sst
-
-.BR
-
-.I CONTENT,
-Cory Doctorow (2008)
-content.cory_doctorow.sst
-
-.BR
-
-.I Democratizing Innovation,
-Eric von Hippel (2005)
-democratizing_innovation.eric_von_hippel.sst
-
-.BR
-
-.I Down and Out in the Magic Kingdom,
-Cory Doctorow (2003)
-down_and_out_in_the_magic_kingdom.cory_doctorow.sst
-
-.BR
-
-.I For the Win,
-Cory Doctorow (2010)
-for_the_win.cory_doctorow.sst
-
-.BR
-
-.I Free as in Freedom - Richard Stallman's Crusade for Free Software,
-Sam Williams (2002)
-free_as_in_freedom.richard_stallman_crusade_for_free_software.sam_williams.sst
-
-.BR
-
-.I Free as in Freedom 2.0 - Richard Stallman and the Free Software Revolution,
-Sam Williams (2002), Richard M. Stallman (2010)
-free_as_in_freedom_2.richard_stallman_and_the_free_software_revolution.sam_williams.richard_stallman.sst
-
-.BR
-
-.I Free Culture - How Big Media Uses Technology and the Law to Lock Down
-Culture and Control Creativity,
-Lawrence Lessig (2004)
-free_culture.lawrence_lessig.sst
-
-.BR
-
-.I Free For All - How Linux and the Free Software Movement Undercut the High
-Tech Titans,
-Peter Wayner (2002)
-free_for_all.peter_wayner.sst
-
-.BR
-
-.I GNU GENERAL PUBLIC LICENSE v2,
-Free Software Foundation (1991)
-gpl2.fsf.sst
-
-.BR
-
-.I GNU GENERAL PUBLIC LICENSE v3,
-Free Software Foundation (2007)
-gpl3.fsf.sst
-
-.BR
-
-.I Gulliver's Travels,
-Jonathan Swift (1726 / 1735)
-gullivers_travels.jonathan_swift.sst
-
-.BR
-
-.I Little Brother,
-Cory Doctorow (2008)
-little_brother.cory_doctorow.sst
-
-.BR
-
-.I The Cathederal and the Bazaar,
-Eric Raymond (2000)
-the_cathedral_and_the_bazaar.eric_s_raymond.sst
-
-.BR
-
-.I The Public Domain - Enclosing the Commons of the Mind,
-James Boyle (2008)
-the_public_domain.james_boyle.sst
-
-.BR
-
-.I The Wealth of Networks - How Social Production Transforms Markets and
-Freedom,
-Yochai Benkler (2006)
-the_wealth_of_networks.yochai_benkler.sst
-
-.BR
-
-.I Through the Looking Glass,
-Lewis Carroll (1871)
-through_the_looking_glass.lewis_carroll.sst
-
-.BR
-
-.I Two Bits - The Cultural Significance of Free Software,
-Christopher Kelty (2008)
-two_bits.christopher_kelty.sst
-
-.BR
-
-.I UN Contracts for International Sale of Goods,
-UN (1980)
-un_contracts_international_sale_of_goods_convention_1980.sst
-
-.BR
-
-.I Viral Spiral,
-David Bollier (2008)
-viral_spiral.david_bollier.sst
-.SH SISU SEARCH - INTRODUCTION
-
-
-.BR
-Because the document structure of sites created is clearly defined, and the
-text
-.I object citation system
-is available hypothetically at least, for all forms of output, it is possible
-to search the sql database, and either read results from that database, or map
-the results to the html or other output, which has richer text markup.
-
-.BR
-
-.B SiSU
-can populate a relational sql type database with documents at an object level,
-including objects numbers that are shared across different output types. Making
-a document corpus searchable with that degree of granularity. Basically, your
-match criteria is met by these documents and at these locations within each
-document, which can be viewed within the database directly or in various output
-formats.
-
-.BR
-
-.B SiSU
-can populate an sql database (sqlite3 or postgresql) with documents made up of
-their objects. It also can generate a cgi search form that can be used to query
-the database.
-
-.BR
-In order to use the built in search functionality you would take the following
-steps.
-
-.BR
-- use sisu to populate an sql database with with a sisu markup content
-
-.BR
- * sqlite3 should work out of the box
-
-.BR
- * postgresql may require some initial database configuration
-
-.BR
-- provide a way to query the database, which sisu can assist with by
-
-.BR
- * generating a sample ruby cgi search form, required (sisu configuration
- recommended)
-
-.BR
- * adding a query field for this search form to be added to all html files
- (sisu configuration required)
-.SH SQL
-
-.SH POPULATE THE DATABASE
-
-
-.BR
-TO populate the sql database, run sisu against a sisu markup file with one of
-the following sets of flags
-.nf
-sisu --sqlite filename.sst
-.fi
-
-
-.BR
-creates an sqlite3 database containing searchable content of just the sisu
-markup document selected
-.nf
-sisu --sqlite --update filename.sst
-.fi
-
-
-.BR
-creates an sqlite3 database containing searchable content of marked up
-document(s) selected by the user from a common directory
-.nf
-sisu --pg --update filename.sst
-.fi
-
-
-.BR
-fills a postgresql database with searchable content of marked up document(s)
-selected by the user from a common directory
-
-.BR
-For postgresql the first time the command is run in a given directory the user
-will be prompted to create the requisite database, at the time of writing the
-prompt sisu provides is as follows:
-.nf
-no connection with pg database established, you may need to run:
- createdb "SiSU.7a.current"
- after that don't forget to run:
- sisu --pg --createall
- before attempting to populate the database
-.fi
-
-
-.BR
-The named database that sisu expects to find must exist and if necessary be
-created using postgresql tools. If the database exist but the database tables
-do not, sisu will attempt to create the tables it needs, the equivalent of the
-requested sisu --pg --createall command.
-
-.BR
-Once this is done, the sql database is populated and ready to be queried.
-.SH SQL TYPE DATABASES
-
-
-.BR
-
-.B SiSU
-feeds sisu markup documents into sql type databases
-.I PostgreSQL
-[^13] and/or
-.I SQLite
-[^14] database together with information related to document structure.
-
-.BR
-This is one of the more interesting output forms, as all the structural data of
-the documents are retained (though can be ignored by the user of the database
-should they so choose). All site texts/documents are (currently) streamed to
-four tables:
-
-.BR
- * one containing semantic (and other) headers, including, title, author,
- subject, (the
- .I Dublin Core.
- ..);
-
-.BR
- * another the substantive texts by individual "paragraph" (or object) - along
- with structural information, each paragraph being identifiable by its
- paragraph number (if it has one which almost all of them do), and the
- substantive text of each paragraph quite naturally being searchable (both in
- formatted and clean text versions for searching); and
-
-.BR
- * a third containing endnotes cross-referenced back to the paragraph from
- which they are referenced (both in formatted and clean text versions for
- searching).
-
-.BR
- * a fourth table with a one to one relation with the headers table contains
- full text versions of output, eg. pdf, html, xml, and
- .I ascii.
-
-.BR
-There is of course the possibility to add further structures.
-
-.BR
-At this level
-.B SiSU
-loads a relational database with documents chunked into objects, their smallest
-logical structurally constituent parts, as text objects, with their object
-citation number and all other structural information needed to construct the
-document. Text is stored (at this text object level) with and without
-elementary markup tagging, the stripped version being so as to facilitate ease
-of searching.
-
-.BR
-Being able to search a relational database at an object level with the
-.B SiSU
-citation system is an effective way of locating content generated by
-.B SiSU.
-As individual text objects of a document stored (and indexed) together with
-object numbers, and all versions of the document have the same numbering,
-complex searches can be tailored to return just the locations of the search
-results relevant for all available output formats, with live links to the
-precise locations in the database or in html/xml documents; or, the structural
-information provided makes it possible to search the full contents of the
-database and have headings in which search content appears, or to search only
-headings etc. (as the
-.I Dublin Core
-is incorporated it is easy to make use of that as well).
-.SH POSTGRESQL
-
-.SH NAME
-
-
-.BR
-
-.B SiSU
-- Structured information, Serialized Units - a document publishing system,
-postgresql dependency package
-.SH DESCRIPTION
-
-
-.BR
-Information related to using postgresql with sisu (and related to the
-sisu_postgresql dependency package, which is a dummy package to install
-dependencies needed for
-.B SiSU
-to populate a postgresql database, this being part of
-.B SiSU
-- man sisu) .
-.SH SYNOPSIS
-
-
-.BR
- sisu -D [instruction] [filename/wildcard if required]
-
-.BR
- sisu -D --pg --[instruction] [filename/wildcard if required]
-.SH COMMANDS
-
-
-.BR
-Mappings to two databases are provided by default, postgresql and sqlite, the
-same commands are used within sisu to construct and populate databases however
--d (lowercase) denotes sqlite and -D (uppercase) denotes postgresql,
-alternatively --sqlite or --pgsql may be used
-
-.BR
-
-.B -D or --pgsql
-may be used interchangeably.
-.SH CREATE AND DESTROY DATABASE
-
-.TP
-.B --pgsql --createall
-initial step, creates required relations (tables, indexes) in existing
-(postgresql) database (a database should be created manually and given the same
-name as working directory, as requested) (rb.dbi)
-.TP
-.B sisu -D --createdb
-creates database where no database existed before
-.TP
-.B sisu -D --create
-creates database tables where no database tables existed before
-.TP
-.B sisu -D --Dropall
-destroys database (including all its content)! kills data and drops tables,
-indexes and database associated with a given directory (and directories of the
-same name).
-.TP
-.B sisu -D --recreate
-destroys existing database and builds a new empty database structure
-.SH IMPORT AND REMOVE DOCUMENTS
-
-.TP
-.B sisu -D --import -v [filename/wildcard]
-populates database with the contents of the file. Imports documents(s)
-specified to a postgresql database (at an object level).
-.TP
-.B sisu -D --update -v [filename/wildcard]
-updates file contents in database
-.TP
-.B sisu -D --remove -v [filename/wildcard]
-removes specified document from postgresql database.
-.SH SQLITE
-
-.SH NAME
-
-
-.BR
-
-.B SiSU
-- Structured information, Serialized Units - a document publishing system.
-.SH DESCRIPTION
-
-
-.BR
-Information related to using sqlite with sisu (and related to the sisu_sqlite
-dependency package, which is a dummy package to install dependencies needed for
-.B SiSU
-to populate an sqlite database, this being part of
-.B SiSU
-- man sisu) .
-.SH SYNOPSIS
-
-
-.BR
- sisu -d [instruction] [filename/wildcard if required]
-
-.BR
- sisu -d --(sqlite|pg) --[instruction] [filename/wildcard if required]
-.SH COMMANDS
-
-
-.BR
-Mappings to two databases are provided by default, postgresql and sqlite, the
-same commands are used within sisu to construct and populate databases however
--d (lowercase) denotes sqlite and -D (uppercase) denotes postgresql,
-alternatively --sqlite or --pgsql may be used
-
-.SH CREATE AND DESTROY DATABASE
-
-.TP
-.B --sqlite --createall
-initial step, creates required relations (tables, indexes) in existing (sqlite)
-database (a database should be created manually and given the same name as
-working directory, as requested) (rb.dbi)
-.TP
-.B sisu -d --createdb
-creates database where no database existed before
-.TP
-.B sisu -d --create
-creates database tables where no database tables existed before
-.TP
-.B sisu -d --dropall
-destroys database (including all its content)! kills data and drops tables,
-indexes and database associated with a given directory (and directories of the
-same name).
-.TP
-.B sisu -d --recreate
-destroys existing database and builds a new empty database structure
-.SH IMPORT AND REMOVE DOCUMENTS
-
-.TP
-.B sisu -d --import -v [filename/wildcard]
-populates database with the contents of the file. Imports documents(s)
-specified to an sqlite database (at an object level).
-.TP
-.B sisu -d --update -v [filename/wildcard]
-updates file contents in database
-.TP
-.B sisu -d --remove -v [filename/wildcard]
-removes specified document from sqlite database.
-.SH CGI SEARCH FORM
-
-
-.BR
-For the search form, which is a single search page
-
-.BR
-- configure the search form
-
-.BR
-- generate the sample search form with the sisu command, (this will be based on
-the configuration settings and existing found sisu databases)
-
-.BR
-For postgresql web content you may need to edit the search cgi script. Two
-things to look out for are that the user is set as needed, and that the any
-different databases that you wish to be able to query are listed.
-
-.BR
-correctly, you may want www-data rather than your username.
-.nf
-@user='www-data'
-.fi
-
-
-.BR
-- check the search form, copy it to the appropriate cgi directory and set the
-correct permissions
-
-.BR
-For a search form to appear on each html page, you need to:
-
-.BR
-- rely on the above mentioned configuration of the search form
-
-.BR
-- configure the html search form to be on
-
-.BR
-- run the html command
-.SH SETUP SEARCH FORM
-
-
-.BR
-You will need a web server, httpd with cgi enabled, and a postgresql database
-to which you are able to create databases.
-
-.BR
-Setup postgresql, make sure you are able to create and write to the database,
-e.g.:
-.nf
-sudo su postgres
- createuser -d -a ralph
-.fi
-
-
-.BR
-You then need to create the database that sisu will use, for sisu manual in the
-directory manual/en for example, (when you try to populate a database that does
-not exist sisu prompts as to whether it exists):
-.nf
-createdb SiSU.7a.manual
-.fi
-
-
-.BR
-
-.B SiSU
-is then able to create the required tables that allow you to populate the
-database with documents in the directory for which it has been created:
-.nf
-sisu --pg --createall -v
-.fi
-
-
-.BR
-You can then start to populate the database, in this example with a single
-document:
-.nf
-sisu --pg --update -v en/sisu_manual.ssm
-.fi
-
-
-.BR
-To create a sample search form, from within the same directory run:
-.nf
-sisu --sample-search-form --db-pg
-.fi
-
-
-.BR
-and copy the resulting cgi form to your cgi-bin directory
-
-.BR
-A sample setup for nginx is provided that assumes data will be stored under
-/srv/www and cgi scripts under /srv/cgi
-.SH SEARCH - DATABASE FRONTEND SAMPLE, UTILISING DATABASE AND SISU FEATURES,
-INCLUDING OBJECT CITATION NUMBERING (BACKEND CURRENTLY POSTGRESQL)
-
-
-.BR
-Sample search frontend <http://search.sisudoc.org> [^15] A small database and
-sample query front-end (search from) that makes use of the citation system, .I
-object citation numbering
-to demonstrates functionality.[^16]
-
-.BR
-
-.B SiSU
-can provide information on which documents are matched and at what locations
-within each document the matches are found. These results are relevant across
-all outputs using
-.I object citation numbering,
-which includes html,
-.I XML,
-.I EPUB,
-.I LaTeX,
-.I PDF
-and indeed the
-.I SQL
-database. You can then refer to one of the other outputs or in the
-.I SQL
-database expand the text within the matched objects (paragraphs) in the
-documents matched.
-
-.BR
-Note you may set results either for documents matched and object number
-locations within each matched document meeting the search criteria; or display
-the names of the documents matched along with the objects (paragraphs) that
-meet the search criteria.[^17]
-.TP
-.B sisu -F --webserv-webrick
-builds a cgi web search frontend for the database created
-
-.BR
-The following is feedback on the setup on a machine provided by the help
-command:
-
-.BR
- sisu --help sql
-.nf
-Postgresql
- user: ralph
- current db set: SiSU_sisu
- port: 5432
- dbi connect: DBI:Pg:database=SiSU_sisu;port=5432
-
-sqlite
- current db set: /home/ralph/sisu_www/sisu/sisu_sqlite.db
- dbi connect DBI:SQLite:/home/ralph/sisu_www/sisu/sisu_sqlite.db
-.fi
-
-.BR
-Note on databases built
-
-.BR
-By default, [unless otherwise specified] databases are built on a directory
-basis, from collections of documents within that directory. The name of the
-directory you choose to work from is used as the database name, i.e. if you are
-working in a directory called /home/ralph/ebook the database SiSU_ebook is
-used. [otherwise a manual mapping for the collection is necessary]
-
-.SH SEARCH FORM
-
-.TP
-.B sisu -F
-generates a sample search form, which must be copied to the web-server cgi
-directory
-.TP
-.B sisu -F --webserv-webrick
-generates a sample search form for use with the webrick server, which must be
-copied to the web-server cgi directory
-.TP
-.B sisu -W
-starts the webrick server which should be available wherever sisu is properly
-installed
-
-.BR
-The generated search form must be copied manually to the webserver directory as
-instructed
-.SH SISU_WEBRICK
-
-.SH NAME
-
-
-.BR
-
-.B SiSU
-- Structured information, Serialized Units - a document publishing system
-.SH SYNOPSIS
-
-
-.BR
-sisu_webrick [port]
-
-.BR
-or
-
-.BR
-sisu -W [port]
-.SH DESCRIPTION
-
-
-.BR
-sisu_webrick is part of
-.B SiSU
-(man sisu) sisu_webrick starts
-.B Ruby
-' s Webrick web-server and points it to the directories to which
-.B SiSU
-output is written, providing a list of these directories (assuming
-.B SiSU
-is in use and they exist).
-
-.BR
-The default port for sisu_webrick is set to 8081, this may be modified in the
-yaml file: ~/.sisu/sisurc.yml a sample of which is provided as
-/etc/sisu/sisurc.yml (or in the equivalent directory on your system).
-.SH SUMMARY OF MAN PAGE
-
-
-.BR
-sisu_webrick, may be started on it's own with the command: sisu_webrick [port]
-or using the sisu command with the -W flag: sisu -W [port]
-
-.BR
-where no port is given and settings are unchanged the default port is 8081
-.SH DOCUMENT PROCESSING COMMAND FLAGS
-
-
-.BR
-sisu -W [port] starts
-.B Ruby
-Webrick web-server, serving
-.B SiSU
-output directories, on the port provided, or if no port is provided and the
-defaults have not been changed in ~/.sisu/sisurc.yaml then on port 8081
-.SH SUMMARY OF FEATURES
-
-
-.BR
-- sparse/minimal markup (clean utf-8 source texts). Documents are prepared in a
-single
-.I UTF-8
-file using a minimalistic mnemonic syntax. Typical literature, documents like
-"War and Peace" require almost no markup, and most of the headers are optional.
-
-.BR
-- markup is easily readable/parsable by the human eye, (basic markup is simpler
-and more sparse than the most basic
-.I HTML
-) , [this may also be converted to
-.I XML
-representations of the same input/source document].
-
-.BR
-- markup defines document structure (this may be done once in a header
-pattern-match description, or for heading levels individually); basic text
-attributes (bold, italics, underscore, strike-through etc.) as required; and
-semantic information related to the document (header information, extended
-beyond the Dublin core and easily further extended as required); the headers
-may also contain processing instructions.
-.B SiSU
-markup is primarily an abstraction of document structure and document metadata
-to permit taking advantage of the basic strengths of existing alternative
-practical standard ways of representing documents [be that browser viewing,
-paper publication, sql search etc.] (html, epub, xml, odf, latex, pdf, sql)
-
-.BR
-- for output produces reasonably elegant output of established industry and
-institutionally accepted open standard formats.[3] takes advantage of the
-different strengths of various standard formats for representing documents,
-amongst the output formats currently supported are:
-
-.BR
-*
-.I HTML
-- both as a single scrollable text and a segmented document
-
-.BR
-*
-.I XHTML
-
-.BR
-*
-.I EPUB
-
-.BR
-*
-.I XML
-- both in sax and dom style xml structures for further development as required
-
-.BR
-*
-.I ODT
-- Open Document Format text, the iso standard for document storage
-
-.BR
-*
-.I LaTeX
-- used to generate pdf
-
-.BR
-*
-.I PDF
-(via
-.I LaTeX
-)
-
-.BR
-*
-.I SQL
-- population of an sql database (
-.I PostgreSQL
-or
-.I SQLite
-) , (at the same object level that is used to cite text within a document)
-
-.BR
-Also produces: concordance files; document content certificates (md5 or sha256
-digests of headings, paragraphs, images etc.) and html manifests (and sitemaps
-of content). (b) takes advantage of the strengths implicit in these very
-different output types, (e.g. PDFs produced using typesetting of
-.I LaTeX,
-databases populated with documents at an individual object/paragraph level,
-making possible
-.I granular search
-(and related possibilities))
-
-.BR
-- ensuring content can be cited in a meaningful way regardless of selected
-output format. Online publishing (and publishing in multiple document formats)
-lacks a useful way of citing text internally within documents (important to
-academics generally and to lawyers) as page numbers are meaningless across
-browsers and formats. sisu seeks to provide a common way of pinpoint the text
-within a document, (which can be utilized for citation and by search engines).
-The outputs share a common numbering system that is meaningful (to man and
-machine) across all digital outputs whether paper, screen, or database
-oriented, (pdf,
-.I HTML,
-.I EPUB,
-xml, sqlite, postgresql) , this numbering system can be used to reference
-content.
-
-.BR
-- Granular search within documents.
-.I SQL
-databases are populated at an object level (roughly headings, paragraphs,
-verse, tables) and become searchable with that degree of granularity, the
-output information provides the object/paragraph numbers which are relevant
-across all generated outputs; it is also possible to look at just the matching
-paragraphs of the documents in the database; [output indexing also work well
-with search indexing tools like hyperestraier].
-
-.BR
-- long term maintainability of document collections in a world of changing
-formats, having a very sparsely marked-up source document base. there is a
-considerable degree of future-proofing, output representations are
-"upgradeable", and new document formats may be added. e.g. addition of odf
-(open document text) module in 2006, epub in 2009 and in future html5 output
-sometime in future, without modification of existing prepared texts
-
-.BR
-*
-.I SQL
-search aside, documents are generated as required and static once generated.
-
-.BR
-- documents produced are static files, and may be batch processed, this needs
-to be done only once but may be repeated for various reasons as desired
-(updated content, addition of new output formats, updated technology document
-presentations/representations)
-
-.BR
-- document source (
-.I plaintext
-utf-8) if shared on the net may be used as input and processed locally to
-produce the different document outputs
-
-.BR
-- document source may be bundled together (automatically) with associated
-documents (multiple language versions or master document with inclusions) and
-images and sent as a zip file called a sisupod, if shared on the net these too
-may be processed locally to produce the desired document outputs
-
-.BR
-- generated document outputs may automatically be posted to remote sites.
-
-.BR
-- for basic document generation, the only software dependency is
-.B Ruby,
-and a few standard Unix tools (this covers
-.I plaintext,
-.I HTML,
-.I EPUB,
-.I XML,
-.I ODF,
-.I LaTeX
-) . To use a database you of course need that, and to convert the
-.I LaTeX
-generated to pdf, a latex processor like tetex or texlive.
-
-.BR
-- as a developers tool it is flexible and extensible
-
-.BR
-Syntax highlighting for
-.B SiSU
-markup is available for a number of text editors.
-
-.BR
-
-.B SiSU
-is less about document layout than about finding a way with little markup to be
-able to construct an abstract representation of a document that makes it
-possible to produce multiple representations of it which may be rather
-different from each other and used for different purposes, whether layout and
-publishing, or search of content
-
-.BR
-i.e. to be able to take advantage from this minimal preparation starting point
-of some of the strengths of rather different established ways of representing
-documents for different purposes, whether for search (relational database, or
-indexed flat files generated for that purpose whether of complete documents, or
-say of files made up of objects), online viewing (e.g. html, xml, pdf) , or
-paper publication (e.g. pdf) ...
-
-.BR
-the solution arrived at is by extracting structural information about the
-document (about headings within the document) and by tracking objects (which
-are serialized and also given hash values) in the manner described. It makes
-possible representations that are quite different from those offered at
-present. For example objects could be saved individually and identified by
-their hashes, with an index of how the objects relate to each other to form a
-document.
-.TP
-.BI *1.
-square brackets
-
-.BR
-.TP
-.BI *2.
-square brackets
-
-.BR
-.TP
-.BI +1.
-square brackets
-
-.BR
-.TP
-.BI 1.
-<http://www.jus.uio.no/sisu/man/>
-
-.BR
-.TP
-.BI 2.
-<http://www.jus.uio.no/sisu/man/sisu.1.html>
-
-.BR
-.TP
-.BI 3.
-From sometime after SiSU 0.58 it should be possible to describe SiSU markup
-using SiSU, which though not an original design goal is useful.
-
-.BR
-.TP
-.BI 4.
-files should be prepared using UTF-8 character encoding
-
-.BR
-.TP
-.BI 5.
-a footnote or endnote
-
-.BR
-.TP
-.BI 6.
-self contained endnote marker & endnote in one
-
-.BR
-.TP
-.BI *.
-unnumbered asterisk footnote/endnote, insert multiple asterisks if required
-
-.BR
-.TP
-.BI **.
-another unnumbered asterisk footnote/endnote
-
-.BR
-.TP
-.BI *3.
-editors notes, numbered asterisk footnote/endnote series
-
-.BR
-.TP
-.BI +2.
-editors notes, numbered plus symbol footnote/endnote series
-
-.BR
-.TP
-.BI 7.
-<http://www.sisudoc.org/>
-
-.BR
-.TP
-.BI 8.
-<http://www.ruby-lang.org/en/>
-
-.BR
-.TP
-.BI 9.
-Table from the Wealth of Networks by Yochai Benkler
-<http://www.jus.uio.no/sisu/the_wealth_of_networks.yochai_benkler>
-
-.BR
-.TP
-.BI 10.
-for which you may alternatively use the full form author: title: and year:
-
-.BR
-.TP
-.BI 11.
-Quixote and Panza, Taming Windmills (1605), pp 1000 - 1001 also, Benkler, Wealth of Networks (2006), p 1
-
-.BR
-.TP
-.BI 12.
-SiSU has worked this way in the past, though this was dropped as it was
-thought the complexity outweighed the flexibility, however, the balance was
-rather fine and this behaviour could be reinstated.
-
-.BR
-.TP
-.BI 13.
-<http://www.postgresql.org/> <http://advocacy.postgresql.org/>
-<http://en.wikipedia.org/wiki/Postgresql>
-
-.BR
-.TP
-.BI 14.
-<http://www.hwaci.com/sw/sqlite/> <http://en.wikipedia.org/wiki/Sqlite>
-
-.BR
-.TP
-.BI 15.
-<http://search.sisudoc.org>
-
-.BR
-.TP
-.BI 16.
-(which could be extended further with current back-end). As regards scaling
-of the database, it is as scalable as the database (here Postgresql) and
-hardware allow.
-
-.BR
-.TP
-.BI 17.
-of this feature when demonstrated to an IBM software innovations evaluator
-in 2004 he said to paraphrase: this could be of interest to us. We have large
-document management systems, you can search hundreds of thousands of documents
-and we can tell you which documents meet your search criteria, but there is no
-way we can tell you without opening each document where within each your
-matches are found.
-
-.BR
-
-.TP
-.SH SEE ALSO
- sisu(1),
- sisu-epub(1),
- sisu-harvest(1),
- sisu-html(1),
- sisu-odf(1),
- sisu-pdf(1),
- sisu-pg(1),
- sisu-sqlite(1),
- sisu-txt(1).
- sisu_vim(7)
-.TP
-.SH HOMEPAGE
- More information about SiSU can be found at <http://www.sisudoc.org/> or <http://www.jus.uio.no/sisu/>
-.TP
-.SH SOURCE
- <http://git.sisudoc.org/>
-.TP
-.SH AUTHOR
- SiSU is written by Ralph Amissah <ralph@amissah.com>
-#+END_SRC
diff --git a/org/spine_info.org b/org/spine_info.org
index 3dc942c..798836e 100644
--- a/org/spine_info.org
+++ b/org/spine_info.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -14,6 +15,9 @@
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
+[[./spine.org][spine.org]] [[../org/][org/]]
+[[./spine_build_scaffold.org][spine_build_scaffold.org]]
+
* README
#+BEGIN_SRC txt :NO-tangle "../README"
@@ -142,7 +146,6 @@ project_name: Spine, Doc Reform
- Hompages:
[http://www.sisudoc.org]
-
#+END_SRC
#+BEGIN_SRC txt
diff --git a/org/util_cgi_d_sqlite_search.org b/org/util_cgi_d_sqlite_search.org
index 86242f4..e2f3cfd 100644
--- a/org/util_cgi_d_sqlite_search.org
+++ b/org/util_cgi_d_sqlite_search.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -27,13 +28,30 @@ dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/
<<cgi_sqlite_head>>
<<cgi_sqlite_imports>>
void cgi_function_intro(Cgi cgi) {
- <<cgi_sqlite_initialize>>
+ <<cgi_sqlite_initialize_0>>
+ <<cgi_sqlite_initialize_1>>
+ <<cgi_sqlite_initialize_2>>
+ <<cgi_sqlite_initialize_3>>
+ <<cgi_sqlite_initialize_4>>
+ <<cgi_sqlite_initialize_5>>
+ <<cgi_sqlite_initialize_6>>
+ <<cgi_sqlite_initialize_7>>
+ <<cgi_sqlite_initialize_8>>
+ <<cgi_sqlite_initialize_9>>
+ <<cgi_sqlite_initialize_10>>
<<cgi_sqlite_header>>
<<cgi_sqlite_table>>
-<<cgi_sqlite_form>>
+<<cgi_sqlite_form_0>>
+<<cgi_sqlite_form_1>>
+<<cgi_sqlite_form_2>>
+<<cgi_sqlite_form_3>>
+<<cgi_sqlite_form_4>>
+<<cgi_sqlite_form_5>>
<<cgi_sqlite_write>>
<<cgi_sqlite_set_db>>
<<cgi_sqlite_select_statement_0>>
+<<cgi_sqlite_select_statement_1>>
+<<cgi_sqlite_select_statement_2>>
<<cgi_sqlite_db_close>>
<<cgi_sqlite_db_tail>>
}
@@ -65,7 +83,7 @@ import std.process : environment;
** void main
*** initialize
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_0
#+BEGIN_SRC d
string header;
string table;
@@ -74,7 +92,7 @@ string form;
**** config
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_1
#+BEGIN_SRC d
struct Config {
string http_request_type;
@@ -106,7 +124,7 @@ conf.request_method = environment.get("REQUEST_METHOD", "POST");
**** cgi val
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_2
#+BEGIN_SRC d
struct CGI_val {
string db_selected = "";
@@ -128,7 +146,7 @@ cv.db_selected = "spine.search.db"; // config, set db name
**** text fields
***** open
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_3
#+BEGIN_SRC d
auto text_fields() {
string canned_query_str = environment.get("QUERY_STRING", "");
@@ -151,7 +169,7 @@ auto text_fields() {
***** rgx
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_4
#+BEGIN_SRC d
static struct Rgx {
// static canned_query = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
@@ -187,7 +205,7 @@ auto text_fields() {
***** searchfields
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_5
#+BEGIN_SRC d
struct searchFields {
string canned_query = ""; // GET canned_query == cq
@@ -231,7 +249,7 @@ auto text_fields() {
***** env
****** POST
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_6
#+BEGIN_SRC d
if (environment.get("REQUEST_METHOD", "POST") == "POST") {
if ("sf" in cgi.post) {
@@ -383,7 +401,7 @@ auto text_fields() {
****** GET
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_7
#+BEGIN_SRC d
} else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
got.canned_query = environment.get("QUERY_STRING", "");
@@ -495,7 +513,7 @@ auto text_fields() {
***** tail
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_8
#+BEGIN_SRC d
}
auto tf = text_fields; //
@@ -503,7 +521,7 @@ auto tf = text_fields; //
**** SQL select
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_9
#+BEGIN_SRC d
struct SQL_select {
string the_body = "";
@@ -514,7 +532,7 @@ auto sql_select = SQL_select();
**** misc
-#+NAME: cgi_sqlite_initialize
+#+NAME: cgi_sqlite_initialize_10
#+BEGIN_SRC d
string base ; // = "";
string tip ; // = "";
@@ -683,7 +701,7 @@ string previous_next () {
*** cgi html form
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_0
#+BEGIN_SRC d
{
string post_value(string field_name, string type="box", string set="on") {
@@ -726,7 +744,7 @@ string previous_next () {
**** canned search
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_1
#+BEGIN_SRC d
string the_can(string fv) {
string show_the_can = post_value("url");
@@ -764,7 +782,7 @@ string previous_next () {
**** provide tip
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_2
#+BEGIN_SRC d
string provide_tip() {
string searched_tip = post_value("se");
@@ -801,7 +819,7 @@ string previous_next () {
**** the form
***** form html
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_3
#+BEGIN_SRC d
form = format(q"┃
<form action="%s" id="SubmitForm" method="post" accept-charset="UTF-8">
@@ -846,7 +864,7 @@ string previous_next () {
***** form values
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_4
#+BEGIN_SRC d
"spine-search",
(post_value("ec") == "checked") ? post_value("sf", "field") : "",
@@ -870,7 +888,7 @@ string previous_next () {
**** set value (debug)
-#+NAME: cgi_sqlite_form
+#+NAME: cgi_sqlite_form_5
#+BEGIN_SRC d
{
string set_value(string field_name, string default_val) {
@@ -999,7 +1017,7 @@ auto db = Database(conf.db_path ~ cv.db_selected);
**** db select statement
***** the body
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_1
#+BEGIN_SRC d
sql_select.the_body ~= format(q"┃
SELECT
@@ -1042,7 +1060,7 @@ LIMIT %s OFFSET %s
***** html write selected
****** ocn index
-#+NAME: cgi_sqlite_select_statement_0
+#+NAME: cgi_sqlite_select_statement_2
#+BEGIN_SRC d
(cv.checked_sql)
? cgi.write(previous_next ~ "<hr><font size=\"2\" color=\"#666666\">" ~ sql_select.the_body.split("\n ").join(" ").split("\n").join("<br>") ~ "</font>\n")
diff --git a/org/util_cgi_rb_fcgi_sqlite_search.org b/org/util_cgi_rb_fcgi_sqlite_search.org
index 124ac25..d10c163 100644
--- a/org/util_cgi_rb_fcgi_sqlite_search.org
+++ b/org/util_cgi_rb_fcgi_sqlite_search.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/util_spine_markup_conversion_from_sisu.org b/org/util_spine_markup_conversion_from_sisu.org
index 21a5ffb..4204560 100644
--- a/org/util_spine_markup_conversion_from_sisu.org
+++ b/org/util_spine_markup_conversion_from_sisu.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
@@ -207,7 +208,9 @@ if (endnotes.length == endnote_ref_count) {
void main(string[] args) {
<<from_sisu_rb_init>>
<<from_sisu_rb_body_format>>
- <<from_sisu_rb_header_format>>
+ <<from_sisu_rb_header_format_0>>
+ <<from_sisu_rb_header_format_1>>
+ <<from_sisu_rb_header_format_2>>
foreach(arg; args[1..$]) {
if (
!(arg.match(regex(r"--\w+")))
@@ -310,7 +313,7 @@ string format_body_string(string s) {
*** header format
**** format header string
-#+NAME: from_sisu_rb_header_format
+#+NAME: from_sisu_rb_header_format_0
#+BEGIN_SRC d
string format_header_string(string s) {
string o;
@@ -324,7 +327,7 @@ string format_header_string(string s) {
**** format main header
-#+NAME: from_sisu_rb_header_format
+#+NAME: from_sisu_rb_header_format_1
#+BEGIN_SRC d
string format_main_header(string hm, string hs = "", string c = "") {
string o;
@@ -341,7 +344,7 @@ string format_main_header(string hm, string hs = "", string c = "") {
**** format sub header
-#+NAME: from_sisu_rb_header_format
+#+NAME: from_sisu_rb_header_format_2
#+BEGIN_SRC d
string format_sub_header(string hs, string c) {
string o;
diff --git a/org/util_spine_syntax_highlighting_emacs.org b/org/util_spine_syntax_highlighting_emacs.org
index 0007e48..e161b8f 100644
--- a/org/util_spine_syntax_highlighting_emacs.org
+++ b/org/util_spine_syntax_highlighting_emacs.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/org/util_spine_syntax_highlighting_vim.org b/org/util_spine_syntax_highlighting_vim.org
index 137d734..2c4f131 100644
--- a/org/util_spine_syntax_highlighting_vim.org
+++ b/org/util_spine_syntax_highlighting_vim.org
@@ -7,6 +7,7 @@
#+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :eval no
diff --git a/src/doc_reform/io_out/epub3.d b/src/doc_reform/io_out/epub3.d
index 14c328b..f435418 100644
--- a/src/doc_reform/io_out/epub3.d
+++ b/src/doc_reform/io_out/epub3.d
@@ -295,7 +295,7 @@ template outputEPub3() {
</ncx>┃");
return toc;
}
-
+
@system void outputEPub3(D,I)(
const D doc_abstraction,
I doc_matters,
@@ -809,5 +809,5 @@ template outputEPub3() {
}
}
}
-
+
}
diff --git a/src/doc_reform/io_out/html.d b/src/doc_reform/io_out/html.d
index 6a15614..e898bb8 100644
--- a/src/doc_reform/io_out/html.d
+++ b/src/doc_reform/io_out/html.d
@@ -510,7 +510,7 @@ template outputHTML() {
M doc_matters,
) {
{ /+ (copy html images) +/
-
+
auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
if (!exists(pth_html.image)) {
pth_html.image.mkdirRecurse;
diff --git a/src/doc_reform/io_out/odt.d b/src/doc_reform/io_out/odt.d
index d3377dc..e12f93f 100644
--- a/src/doc_reform/io_out/odt.d
+++ b/src/doc_reform/io_out/odt.d
@@ -839,7 +839,7 @@ template outputODT() {
}
return doc_odt;
}
-
+
@safe string odt_tail() {
string _odt_tail = format(q"┃<text:p text:style-name="P_normal">spine: &lt;<text:a xl:type="simple" xl:href="http://www.doc_reform.org">www.doc_reform.org</text:a>&gt; and &lt;<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>&gt;</text:p>
</office:text></office:body></office:document-content>┃",);
@@ -2038,7 +2038,7 @@ template outputODT() {
pth_odt.manifest_rdf("fs"); /+ (manifest.rdf) +/
pth_odt.settings_xml("fs"); /+ (settings.xml) +/
pth_odt.styles_xml("fs"); /+ (styles_xml) +/
-
+
pth_odt.content_xml("fs");
pth_odt.manifest_xml("fs");
pth_odt.meta_xml("fs");
diff --git a/src/doc_reform/io_out/source_pod.d b/src/doc_reform/io_out/source_pod.d
index 5a0fd47..36a86e2 100644
--- a/src/doc_reform/io_out/source_pod.d
+++ b/src/doc_reform/io_out/source_pod.d
@@ -371,7 +371,7 @@ template spinePod() {
// Handle errors
}
}
-
+
} catch (ErrnoException ex) {
// Handle error
}
diff --git a/src/doc_reform/meta/conf_make_meta_yaml.d b/src/doc_reform/meta/conf_make_meta_yaml.d
index 1f22dc8..4d1fdb1 100644
--- a/src/doc_reform/meta/conf_make_meta_yaml.d
+++ b/src/doc_reform/meta/conf_make_meta_yaml.d
@@ -180,7 +180,7 @@ template contentYAMLtoSpineStruct() {
_struct_composite.make.substitute = _mk.substitute(_struct_composite.make_str.substitute);
_struct_composite.make.texpdf_font = _mk.texpdf_font(_struct_composite.make_str.texpdf_font);
}
-
+
/+ conf ------------------------------------------------------------------- +/
if ("webserv" in _yaml
&& _yaml["webserv"].type.sequence
diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d
index bde1a5c..859acc5 100644
--- a/src/doc_reform/meta/metadoc_from_src.d
+++ b/src/doc_reform/meta/metadoc_from_src.d
@@ -2422,7 +2422,7 @@ template docAbstraction() {
dom_structure_markedup_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
-
+
@safe auto doc_has() {
struct DocHas_ {
uint inline_links() {