diff options
-rw-r--r-- | makefile | 2 | ||||
-rw-r--r-- | maker.org | 2 | ||||
-rw-r--r-- | org/default_misc.org | 38 | ||||
-rw-r--r-- | org/default_paths.org | 8 | ||||
-rw-r--r-- | org/default_regex.org | 62 | ||||
-rw-r--r-- | org/imports.org | 14 | ||||
-rw-r--r-- | org/meta_abstraction.org (renamed from org/ao_doc_abstraction.org) | 643 | ||||
-rw-r--r-- | org/meta_conf_make_meta.org (renamed from org/ao_conf_make_meta.org) | 62 | ||||
-rw-r--r-- | org/meta_debugs.org (renamed from org/ao_debugs.org) | 76 | ||||
-rw-r--r-- | org/meta_read_source_files.org (renamed from org/ao_read_source_files.org) | 96 | ||||
-rw-r--r-- | org/output_xmls_css.org | 4 | ||||
-rw-r--r-- | org/sdp.org | 290 | ||||
-rw-r--r-- | src/sdp/meta/composite_make.d (renamed from src/sdp/ao/composite_make.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/conf_make_meta.d (renamed from src/sdp/ao/conf_make_meta.d) | 8 | ||||
-rw-r--r-- | src/sdp/meta/conf_make_meta_native.d (renamed from src/sdp/ao/conf_make_meta_native.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/conf_make_meta_sdlang.d (renamed from src/sdp/ao/conf_make_meta_sdlang.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/defaults.d (renamed from src/sdp/ao/defaults.d) | 2 | ||||
-rw-r--r-- | src/sdp/meta/doc_debugs.d (renamed from src/sdp/ao/doc_debugs.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/metadoc.d (renamed from src/sdp/ao/abstraction.d) | 26 | ||||
-rw-r--r-- | src/sdp/meta/metadoc_from_src.d (renamed from src/sdp/ao/abstract_doc_source.d) | 268 | ||||
-rw-r--r-- | src/sdp/meta/metadoc_summary.d (renamed from src/sdp/ao/abstraction_summary.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/object_setter.d (renamed from src/sdp/ao/object_setter.d) | 5 | ||||
-rw-r--r-- | src/sdp/meta/package.d (renamed from src/sdp/ao/package.d) | 6 | ||||
-rw-r--r-- | src/sdp/meta/read_config_files.d (renamed from src/sdp/ao/read_config_files.d) | 10 | ||||
-rw-r--r-- | src/sdp/meta/read_source_files.d (renamed from src/sdp/ao/read_source_files.d) | 10 | ||||
-rw-r--r-- | src/sdp/meta/rgx.d (renamed from src/sdp/ao/rgx.d) | 4 | ||||
-rw-r--r-- | src/sdp/output/paths_output.d | 2 | ||||
-rw-r--r-- | src/sdp/output/paths_source.d | 4 | ||||
-rwxr-xr-x | src/sdp/sdp.d | 26 | ||||
-rw-r--r-- | views/version.txt | 2 |
30 files changed, 1001 insertions, 699 deletions
@@ -195,7 +195,7 @@ release_rdmd: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC) $(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ $(PRG_SRCDIR)/$(PRG_SRC) skel: - mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/ao; \ + mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/meta; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/conf; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/output; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \ @@ -431,7 +431,7 @@ release_rdmd: distclean tangle $(PRG_SRCDIR)/$(PRG_SRC) #+BEGIN_SRC makefile :tangle makefile skel: - mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/ao; \ + mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/meta; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/conf; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME)/output; \ mkdir -p $(PRG_SRCDIR)/$(PRG_NAME); \ diff --git a/org/default_misc.org b/org/default_misc.org index 4fe8a7b..993d2a0 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -11,33 +11,33 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:meta: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. ao defaults :module:sdp:ao_defaults: +* 0. meta defaults :module:sdp:meta_defaults: ** 0. module template #+name: tangle_defaults -#+BEGIN_SRC d :tangle ../src/sdp/ao/defaults.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/defaults.d /++ default settings +/ -module sdp.ao.defaults; +module sdp.meta.defaults; template SiSUregisters() { - <<ao_defaults_imports>> - <<ao_defaults_template_registers>> + <<meta_defaults_imports>> + <<meta_defaults_template_registers>> } -<<ao_defaults_template_init_flags>> -<<ao_defaults_template_node>> -<<ao_defaults_template_biblio>> +<<meta_defaults_template_init_flags>> +<<meta_defaults_template_node>> +<<meta_defaults_template_biblio>> <<defaults_template_markup>> <<defaults_template_language_codes>> #+END_SRC ** imports -#+name: ao_defaults_imports +#+name: meta_defaults_imports #+BEGIN_SRC d import std.algorithm, @@ -63,7 +63,7 @@ import ** settings metadata associative array indexes :settings: **** conf associative array -#+name: ao_defaults_template_registers +#+name: meta_defaults_template_registers #+BEGIN_SRC d string[string][string] conf_aa_empty() { auto conf_ = [ @@ -144,7 +144,7 @@ string[string][string] conf_aa_empty() { **** meta (metadata) associative array -#+name: ao_defaults_template_registers +#+name: meta_defaults_template_registers #+BEGIN_SRC d string[string][string] meta_aa_empty() { auto meta_ = [ @@ -212,7 +212,7 @@ string[string][string] meta_aa_empty() { ** metadata associative array indexes :header: -#+name: ao_defaults_template_registers +#+name: meta_defaults_template_registers #+BEGIN_SRC d auto ptr_head_main = [ @@ -310,7 +310,7 @@ auto config_jsonstr = `{ *** notes headers -#+name: ao_defaults_template +#+name: meta_defaults_template #+BEGIN_SRC d /+ /+ @@ -390,7 +390,7 @@ header. ** template: flags regex initialize :regex_flags: -#+name: ao_defaults_template_init_flags +#+name: meta_defaults_template_init_flags #+BEGIN_SRC d template SiSUrgxInitFlags() { /+ regex flags +/ @@ -434,7 +434,7 @@ template SiSUrgxInitFlags() { } #+END_SRC -#+name: ao_defaults_template_node +#+name: meta_defaults_template_node #+BEGIN_SRC d template SiSUnode() { string[string] node_metadata_heading_str() { @@ -482,7 +482,7 @@ template SiSUnode() { ** template: bibliography :biblio: -#+name: ao_defaults_template_biblio +#+name: meta_defaults_template_biblio #+BEGIN_SRC d template SiSUbiblio() { // required: deemed_author (author || editor); year; fulltitle; @@ -562,7 +562,7 @@ import std.conv : to; #+END_SRC -* 2. defaults shared by ao & output (generic) +* 2. defaults shared by meta & output (generic) ** template: internal markup :markup: #+name: defaults_template_markup @@ -693,7 +693,7 @@ template SiSUlanguageCodes() { * +set colors for terminal+ (unused) :colors:terminal: -#+name: ao_ansi_colors +#+name: meta_ansi_colors #+BEGIN_SRC d string[string] scr_txt_color = [ "off" : "\033[0m", diff --git a/org/default_paths.org b/org/default_paths.org index 3a250a0..2a414bd 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -11,7 +11,7 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:file:path: +#+FILETAGS: :sdp:rel:path:file: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] @@ -22,14 +22,14 @@ /++ read configuration files<BR> - read config files<BR> - ao_config_files.d + meta_config_files.d +/ module sdp.output.paths_source; import std.array, std.path, std.regex, std.stdio; -import sdp.ao.rgx; +import sdp.meta.rgx; template SiSUpathsSRC() { mixin SiSUrgxInit; auto rgx = Rgx(); @@ -93,7 +93,7 @@ import std.array, std.path, std.regex, std.stdio; -import sdp.ao.rgx; +import sdp.meta.rgx; <<template_paths_sisupod>> <<template_paths_sisupod_zipped_archive>> <<template_paths_sisupod_unzipped_filesystem>> diff --git a/org/default_regex.org b/org/default_regex.org index e1f8d26..95167b4 100644 --- a/org/default_regex.org +++ b/org/default_regex.org @@ -11,11 +11,11 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:meta: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. ao ctRegex :module:sdp:ao_rgx: +* 0. meta ctRegex :module:sdp:meta_rgx: [[./sdp.org][sdp]] [[./][org/]] http://dlang.org/phobos/std_regex.html - Plain string, in which case it's compiled to bytecode before matching. @@ -24,16 +24,16 @@ http://dlang.org/phobos/std_regex.html ** 0. module template -#+name: tangle_ao_rgx -#+BEGIN_SRC d :tangle ../src/sdp/ao/rgx.d +#+name: tangle_meta_rgx +#+BEGIN_SRC d :tangle ../src/sdp/meta/rgx.d /++ regex: regular expressions used in sisu document parser +/ -module sdp.ao.rgx; +module sdp.meta.rgx; template SiSUrgxInit() { - import sdp.ao.defaults; + import sdp.meta.defaults; struct Rgx { - <<ao_rgx>> + <<meta_rgx>> <<prgmkup_rgx>> } } @@ -41,7 +41,7 @@ template SiSUrgxInit() { ** misc :misc: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ misc +/ static true_dollar = ctRegex!(`\$`, "gm"); @@ -76,7 +76,7 @@ static numeric_col = ctRegex!(`^[ 0-9,.$£₤ ** comments :comment: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ comments +/ static comment = ctRegex!(`^%+ `); @@ -85,7 +85,7 @@ static comments = ctRegex!(`^%+ |^%+$`); ** config -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ header +/ static make_simple_substitutions_rb = ctRegex!(`(?P<substitution>/(?P<match>.+?)/,[ ]*['"](?P<replace>.+?)['"])`); @@ -95,7 +95,7 @@ static make_simple_substitutions_d = ctRegex!(`(?P<substitu ** native headers *** native header :native:header: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ header +/ static main_headers = @@ -114,7 +114,7 @@ static raw_author_munge = ctRegex!(`(\S.+?),\s+(.+ *** subheader :native:subheader: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ head +/ static native_subhead_creator = ctRegex!(`^(?:author|translator|illustrator)$`, "m"); @@ -131,7 +131,7 @@ static native_subhead_make = ctRegex!(`^(?:cover_imag ** heading & paragraph operators :paragraph:operator: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ heading & paragraph operators +/ static heading_a = ctRegex!(`^:?[A][~] `, "m"); @@ -162,7 +162,7 @@ static para_attribs = ctRegex!(`^_(?:(?:[0-9]) ** blocked markup *** blocked markup :block:tic: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ blocked markup +/ static block_open = ctRegex!("^((code([.][a-z][0-9a-z_]+)?|poem|group|block|quote|table)[{].*?$)|^`{3} (code([.][a-z][0-9a-z_]+)?|poem|group|block|quote|table)|^[{]table(~h)?(?P<columns>(?:[ ]+[0-9]+;)+)[}]"); @@ -171,7 +171,7 @@ static block_poem_open = ctRegex!("^((poem[{].*?$ ** blocked markup tics :block:tic: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ blocked markup tics +/ static block_tic_open = ctRegex!("^`{3} (code([.][a-z][0-9a-z_]+)?|poem|group|block|quote|table)"); // what of numbered code? @@ -186,7 +186,7 @@ static block_tic_close = ctRegex!("^(`{3})$","m") *** blocked markup curly :block:curly: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ blocked markup curly +/ static block_curly_open = ctRegex!(`^((code([.][a-z][0-9a-z_]+)?|poem|group|block|quote|table)[{].*?$)`); @@ -207,7 +207,7 @@ static block_curly_table_special_markup = ctRegex!(`^[{]table((~h) *** block sub-matches :block:curly: -#+name: ao_rgx +#+name: meta_rgx #+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]?)`); @@ -220,7 +220,7 @@ static table_col_separator_nl = ctRegex!(`[┊]$`, "mg") ** inline markup footnotes endnotes :inline:footnote: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ inline markup footnotes endnotes +/ static inline_notes_curly_gen = ctRegex!(`~\{.+?\}~`, "m"); @@ -246,7 +246,7 @@ static note_ref = ctRegex!(`^\S+?noteref_( *** links/ urls :inline:footnote: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d static inline_url_generic = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg"); static inline_url = ctRegex!(`((?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_]\S*)`, "mg"); @@ -258,14 +258,14 @@ static inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(?P<c *** images :images: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d static image = ctRegex!(`([a-zA-Z0-9._-]+?\.(?:png|gif|jpg))`, "mg"); #+END_SRC *** inline markup book index :inline:bookindex: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ inline markup book index +/ static book_index = ctRegex!(`^=\{\s*(.+?)\}$`, "m"); @@ -275,7 +275,7 @@ static book_index_close = ctRegex!(`^(.*?)\}$`, "m ** no obj_cite_number object :ocn:off:object: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ no obj_cite_number object +/ static obj_cite_number_off = ctRegex!(`~#$`, "m"); @@ -285,7 +285,7 @@ static obj_cite_number_off_all = ctRegex!(`[~-]#$`, "m"); ** no obj_cite_number block :ocn:off:block: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ no obj_cite_number block +/ static obj_cite_number_off_block = ctRegex!(`^--~#$`); @@ -296,7 +296,7 @@ static obj_cite_number_block_marks = ctRegex!(`^--[+~-]#$`); ** ignore outside code blocks :block:code: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ ignore outside code blocks +/ static skip_from_regular_parse = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`); @@ -304,7 +304,7 @@ static skip_from_regular_parse = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$` ** line & page breaks :break: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ line & page breaks +/ static break_line_within_object = ctRegex!(`[\\]{2}( |$)`); @@ -317,7 +317,7 @@ static parent = ctRegex!(`([0-7]):([0-9] ** json :json: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ json +/ static tailing_comma = ctRegex!(`,$`, "m"); @@ -325,7 +325,7 @@ static tailing_comma = ctRegex!(`,$`, "m"); ** biblio tags :biblio:tags: -#+name: ao_rgx +#+name: meta_rgx #+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+(.+)`); @@ -334,7 +334,7 @@ static biblio_abbreviations = ctRegex!(`^(au|ed|ti|lng ** bookindex split :bookindex:split: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ bookindex split +/ static bi_main_terms_split = ctRegex!(`\s*;\s*`); @@ -345,7 +345,7 @@ static bi_term_and_obj_cite_numbers_match = ctRegex!(`^(.+?)\+(\d+)` ** language codes :language:codes: -#+name: ao_rgx +#+name: meta_rgx #+BEGIN_SRC d /+ language codes +/ auto language_codes = @@ -363,7 +363,7 @@ http://dlang.org/phobos/std_regex.html ** 0. module template -#+name: tangle_ao_rgx +#+name: tangle_meta_rgx #+BEGIN_SRC d :tangle ../src/sdp/output/rgx.d /++ regex: regular expressions used in sisu document parser @@ -390,7 +390,7 @@ static xhtml_greater_than = ctRegex!(`[>]`); // > static xhtml_line_break = ctRegex!(` [\\]{2}`); // <br /> #+END_SRC -* 2. ctRegex defaults shared by ao & output (generic) +* 2. ctRegex defaults shared by meta & output (generic) ** misc generic #+name: prgmkup_rgx diff --git a/org/imports.org b/org/imports.org index a76cd3f..a67f24d 100644 --- a/org/imports.org +++ b/org/imports.org @@ -14,21 +14,21 @@ #+FILETAGS: :sdp:rel:imports: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) -* 1. imports for ao +* 1. imports for meta ** package dir -#+BEGIN_SRC d :tangle ../src/sdp/ao/package.d -module sdp.ao; -<<imports_for_ao_general>> +#+BEGIN_SRC d :tangle ../src/sdp/meta/package.d +module sdp.meta; +<<imports_for_meta_general>> #+END_SRC ** import list -#+NAME: imports_for_ao_general +#+NAME: imports_for_meta_general #+BEGIN_SRC d public import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; /+ std +/ public import std.array, diff --git a/org/ao_doc_abstraction.org b/org/meta_abstraction.org index dae2285..afc5eb1 100644 --- a/org/ao_doc_abstraction.org +++ b/org/meta_abstraction.org @@ -11,111 +11,22 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:meta: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. the document notes -** abstraction -- abstract for downstream processing - - identify document structure and objects - - identify document structure (headings/levels/sections) - - identify objects - - set document, generate common abstraction for downstream parsing - - set different document sections, toc, body, endnotes, book index, etc. - - object numbers, heading/ chapter numbering etc, endnote numbers - - unify object representations - - multiple markups for same object type given single representation - - extract object attributes - - unify inline markup on objects - - inline markup made easier to identify - -- simplify downstream parsing - -** document sections - -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| front matter | head | | | | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| toc | toc | | | generated: headings | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| body | body | | | default section | | | | -| | | | | - heading | | | | -| | | | | - para | | | | -| | | | | - code | | | | -| | | | | - poem | | | | -| | | | | - group | | | | -| | | | | - block | | | | -| | | | | - quote | | | | -| | | | | - table | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| back matter | endnote | | | generated: inline note markup | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| | glossary | | | identified section, limited markup | | | | -| | | | | - the heading | | | | -| | | | | - paragraph | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| | bibliography | | | generated from inline special markup | | | | -| | | | | appended to paragraphs contained in body section | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| -| | blurb | | | identified section, limited markup | | | | -| | | | | - the heading | | | | -| | | | | - paragraphs | | | | -|--------------+--------------+---+---+--------------------------------------------------+---+---+---| - -** objects - -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| | | identified by | object notes | attributes | inline | embedded | special | -| | | | | | | appended | characters | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| para | heading | level markers | | | - italics | - endnotes | | -| | | at start of line | | | | - bibliography | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| | paragraph | delimited by two new lines | default object | - indent | - bold | - endnotes | | -| | | | [discard leading & | - bullet | - italics | - bibliography | | -| | | | newline whitespace] | | - underscore | | | -| | | | | | - strikethrough | | | -| | | | | | - superscript | | | -| | | | | | - subscript | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| block | | open and close tags | | | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| TODO | quote | | | - language? | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| TODO | group | | - inline markup applied | - language? | as paragraph | - endnotes | | -| | | | - [discard leading & | | | - bibliography | | -| | | | newline whitespace] | | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| TODO | block | | - inline markup applied | | as paragraph | - endnotes | | -| | | | - whitespace indentation | | | - bibliography | | -| | | | & newlines | | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| | poem / verse | open and close tags | verse is the object | | | - endnotes | | -| | | | - inline markup applied | | | - bibliography | | -| | | (for poem) | - whitespace indentation | | | | | -| | | | & newlines | | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| | code | | - contents untouched | - syntax | | | | -| | | | - whitespace indentation | - numbered | | | | -| | | | & newlines | | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| -| | table | | | - column width | | | | -| | | | | - heading row | | | | -|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| - -* 1. Document Abstraction :module:sdp:ao_abstract_doc_source: +* 1. Document Abstraction :module:sdp:meta_metadoc_from_src: Process markup document, create document abstraction. ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/abstract_doc_source.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/metadoc_from_src.d /++ document abstraction: abstraction of sisu markup for downstream processing - ao_abstract_doc_source.d + meta_metadoc_from_src.d +/ -module sdp.ao.abstract_doc_source; +module sdp.meta.metadoc_from_src; template SiSUdocAbstraction() { /+ ↓ abstraction imports +/ <<abs_top_imports>> @@ -195,32 +106,32 @@ template SiSUdocAbstraction() { <<abs_functions_table>> /+ abstraction functions ↑ +/ /+ ↓ abstraction function emitters +/ - <<ao_emitters_ocn>> + <<meta_emitters_ocn>> /+ +/ - <<ao_emitters_obj_inline_markup_munge>> - <<ao_emitters_obj_inline_markup>> - <<ao_emitters_obj_inline_markup_and_anchor_tags_and_misc>> - <<ao_emitters_obj_inline_markup_table_of_contents>> - <<ao_emitters_obj_inline_markup_private>> - <<ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags>> - <<ao_emitters_obj_inline_markup_close>> + <<meta_emitters_obj_inline_markup_munge>> + <<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_close>> /+ +/ - <<ao_emitters_obj_attributes>> - <<ao_emitters_obj_attributes_public>> - <<ao_emitters_obj_attributes_private>> - <<ao_emitters_obj_attributes_private_an_attribute>> - <<ao_emitters_obj_attributes_private_json>> - <<ao_emitters_obj_attributes_private_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_json>> + <<meta_emitters_obj_attributes_private_close>> /+ +/ - <<ao_emitters_book_index_nugget>> - <<ao_emitters_book_index_report_indented>> - <<ao_emitters_book_index_report_section>> + <<meta_emitters_book_index_nugget>> + <<meta_emitters_book_index_report_indented>> + <<meta_emitters_book_index_report_section>> /+ +/ - <<ao_emitters_endnotes>> + <<meta_emitters_endnotes>> /+ +/ - <<ao_emitters_bibliography>> + <<meta_emitters_bibliography>> /+ +/ - <<ao_emitters_metadata>> + <<meta_emitters_metadata>> /+ abstraction functions emitters ↑ +/ /+ ↓ abstraction functions assertions +/ <<abs_functions_assertions>> @@ -231,11 +142,11 @@ template SiSUdocAbstraction() { ** 1. _pre loop processing_ :pre: *** imports :imports: -[[./ao_defaults.org][ao_defaults]] +[[./meta_defaults.org][meta_defaults]] #+name: abs_top_imports #+BEGIN_SRC d -import sdp.ao; +import sdp.meta; import std.algorithm, std.container, @@ -243,9 +154,9 @@ import std.json, std.path; import - sdp.ao.defaults, - sdp.ao.object_setter, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.object_setter, + sdp.meta.rgx; #+END_SRC *** mixins :mixins: @@ -320,57 +231,58 @@ enum DomTags { none, open, close, close_and_open, open_still, } #+name: abs_top_init_struct #+BEGIN_SRC d -void heading_ancestors(O)( - auto return ref O obj, - return ref string[] lv_ancestors, +auto obj_heading_ancestors(O)( + O obj, + string[] lv_ancestors_txt, ) { switch (obj.heading_lev_markup) { case 0: - lv_ancestors[0] = obj.text.to!string; + lv_ancestors_txt[0] = obj.text.to!string; foreach(k; 1..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 1: - lv_ancestors[1] = obj.text.to!string; + lv_ancestors_txt[1] = obj.text.to!string; foreach(k; 2..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 2: - lv_ancestors[2] = obj.text.to!string; + lv_ancestors_txt[2] = obj.text.to!string; foreach(k; 3..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 3: - lv_ancestors[3] = obj.text.to!string; + lv_ancestors_txt[3] = obj.text.to!string; foreach(k; 4..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 4: - lv_ancestors[4] = obj.text.to!string; + lv_ancestors_txt[4] = obj.text.to!string; foreach(k; 5..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 5: - lv_ancestors[5] = obj.text.to!string; + lv_ancestors_txt[5] = obj.text.to!string; foreach(k; 6..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 6: - lv_ancestors[6] = obj.text.to!string; - lv_ancestors[7] = ""; + lv_ancestors_txt[6] = obj.text.to!string; + lv_ancestors_txt[7] = ""; goto default; case 7: - lv_ancestors[7] = obj.text.to!string; + lv_ancestors_txt[7] = obj.text.to!string; goto default; default: - obj.heading_ancestors_text = lv_ancestors.dup; + obj.heading_ancestors_text = lv_ancestors_txt.dup; } + return obj; } #+END_SRC @@ -378,7 +290,11 @@ void heading_ancestors(O)( #+name: abs_top_init_struct #+BEGIN_SRC d -auto dom_set_markup_tags(int[] dom, int lev) { +auto obj_dom_set_markup_tags(O)( + O obj, + int[] dom, + int lev +) { foreach (i; 0 .. 8) { if (i < lev) { if (dom[i] == DomTags.open @@ -415,7 +331,8 @@ auto dom_set_markup_tags(int[] dom, int lev) { debug(dom_magic_numbers) { writeln("marked up: ", lev, ": ", dom); } - return dom; + obj.dom_markedup = dom.dup; + return obj; } #+END_SRC @@ -423,7 +340,11 @@ auto dom_set_markup_tags(int[] dom, int lev) { #+name: abs_top_init_struct #+BEGIN_SRC d -auto dom_set_collapsed_tags(int[] dom, int lev) { +auto obj_dom_set_collapsed_tags(O)( + O obj, + int[] dom, + int lev +) { foreach (i; 0 .. 8) { if (i < lev) { if (dom[i] == DomTags.open @@ -460,7 +381,8 @@ auto dom_set_collapsed_tags(int[] dom, int lev) { debug(dom_magic_numbers) { writeln("collapsed: ", lev, ": ", dom); } - return dom; + obj.dom_collapsed = dom.dup; + return obj; } #+END_SRC @@ -521,7 +443,7 @@ string[string] obj_cite_number_poem = [ "start" : "", "end" : "" ]; -string[] lv_ancestors = [ "", "", "", "", "", "", "", "", ]; +string[] lv_ancestors_txt = [ "", "", "", "", "", "", "", "", ]; int[string] lv = [ "lv" : State.off, "h0" : State.off, @@ -583,6 +505,8 @@ comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; comp_obj_heading_.ptr_html_segnames = html_segnames_ptr; comp_obj_heading_.anchor_tags = ["toc"]; +comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; +comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; auto toc_head = comp_obj_heading_; html_segnames_ptr_cntr++; the_table_of_contents_section = [ @@ -722,6 +646,8 @@ if there is a glossary section you need to: comp_obj_heading_.heading_lev_collapsed = 1; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 0, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 0, 0, 0, 0, 0, 0]; the_glossary_section ~= comp_obj_heading_; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.use = "backmatter"; @@ -736,6 +662,8 @@ if there is a glossary section you need to: comp_obj_heading_.heading_lev_collapsed = 2; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; comp_obj_heading_.anchor_tags = ["glossary"]; the_glossary_section ~= comp_obj_heading_; } else { @@ -804,6 +732,8 @@ if there is a blurb section you need to: comp_obj_heading_.heading_lev_collapsed = 1; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 0, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 0, 0, 0, 0, 0, 0]; the_blurb_section ~= comp_obj_heading_; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.use = "backmatter"; @@ -819,6 +749,8 @@ if there is a blurb section you need to: comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; comp_obj_heading_.anchor_tags = ["blurb"]; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; the_blurb_section ~= comp_obj_heading_; } else if (line.matchFirst(rgx.heading) && (opt_action["backmatter"] && opt_action["section_blurb"])) { @@ -1191,7 +1123,7 @@ if ((type["heading"] == State.on) obj_cite_number, // int cntr, // int heading_ptr, // int - lv_ancestors, // string[] + lv_ancestors_txt, // string[] an_object["is"], // string html_segnames_ptr, // int substantive_object_and_anchor_tags_tuple[sObj.notes_reg], @@ -1721,16 +1653,23 @@ the_document_head_section ~= the_document_body_section[0]; the_document_body_section=the_document_body_section[1..$]; #+END_SRC -*** _minor loops_ :post: -**** 1. loop: backmatter loop up to lev4: html_segnames, set backmatter pointers +*** _post main-loop loops_ :post: +**** 1. _loop backmatter:_ loop up to lev4, extract html_segnames, set pointers + +this extra loop is needed to determine pre and (in particular) next segment for +html, that is then used in a subsequent loop -could optimise by -- skipping second and third pass unless the output html seg or epub is being made! -NOTE there are issues attempting to do this on first pass -- as +NOTE there are issues attempting to do this on first pass as: - backmatter is created out of sequence and - it is not certain which are present -it is quite neat to have all in one place as we have here: + + - it is quite neat to have all in one place as we have here + + - could optimise a bit by + - skipping second (and third) loop unless the html seg or epub output is + selected + +***** section: endnotes #+name: abs_post #+BEGIN_SRC d @@ -1745,6 +1684,12 @@ if (the_endnotes_section.length > 1) { } html_segnames_ptr_cntr++; } +#+END_SRC + +***** section: glossary + +#+name: abs_post +#+BEGIN_SRC d if (the_glossary_section.length > 1) { html_segnames ~= "glossary"; html_segnames_ptr = html_segnames_ptr_cntr; @@ -1756,6 +1701,12 @@ if (the_glossary_section.length > 1) { } html_segnames_ptr_cntr++; } +#+END_SRC + +***** section: bibliography + +#+name: abs_post +#+BEGIN_SRC d if (the_bibliography_section.length > 1) { html_segnames ~= "bibliography"; html_segnames_ptr = html_segnames_ptr_cntr; @@ -1767,6 +1718,12 @@ if (the_bibliography_section.length > 1) { } html_segnames_ptr_cntr++; } +#+END_SRC + +***** section: book index + +#+name: abs_post +#+BEGIN_SRC d if (the_bookindex_section["scroll"].length > 1) { html_segnames ~= "bookindex"; html_segnames_ptr = html_segnames_ptr_cntr; @@ -1784,6 +1741,12 @@ if (the_bookindex_section["scroll"].length > 1) { } html_segnames_ptr_cntr++; } +#+END_SRC + +***** section: blurb + +#+name: abs_post +#+BEGIN_SRC d if (the_blurb_section.length > 1) { html_segnames ~= "blurb"; html_segnames_ptr = html_segnames_ptr_cntr; @@ -1797,7 +1760,7 @@ if (the_blurb_section.length > 1) { } #+END_SRC -**** 2. loop: all objects structural relationships (sections, segments, objects) +**** 2. _loop all objects:_ encode _structural relationships_ (sections, segments, objects) needed for DOM structure, segnames & subtoc, backmatter pointers & unique image list @@ -1824,6 +1787,8 @@ Build here: during the third pass all previous and next segment names are known next are not yet known for backmatter during the second pass +***** images + #+name: abs_post #+BEGIN_SRC d string[] _images; @@ -1835,6 +1800,12 @@ auto extract_images(S)(S content_block) { return images_; } string[] segnames_0_4; +#+END_SRC + +***** section: head + +#+name: abs_post +#+BEGIN_SRC d foreach (ref obj; the_document_head_section) { if (obj.is_a == "heading") { debug(dom) { @@ -1843,19 +1814,27 @@ foreach (ref obj; the_document_head_section) { if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } +#+END_SRC + +***** section: toc + +#+name: abs_post +#+BEGIN_SRC d if (the_table_of_contents_section["scroll"].length > 1) { + /+ scroll +/ dom_markedup_buffer = dom_markedup.dup; dom_collapsed_buffer = dom_collapsed.dup; foreach (ref obj; the_table_of_contents_section["scroll"]) { @@ -1867,18 +1846,20 @@ if (the_table_of_contents_section["scroll"].length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } + /+ seg +/ dom_markedup = dom_markedup_buffer.dup; dom_collapsed = dom_collapsed_buffer.dup; foreach (ref obj; the_table_of_contents_section["seg"]) { @@ -1897,15 +1878,19 @@ if (the_table_of_contents_section["scroll"].length > 1) { || (opt_action["html-scroll"]) || (opt_action["html-seg"]) || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } +#+END_SRC + +***** section: document body + +#+name: abs_post +#+BEGIN_SRC d /+ multiple 1~ levels, loop through document body +/ if (the_document_body_section.length > 1) { foreach (ref obj; the_document_body_section) { @@ -1924,22 +1909,29 @@ if (the_document_body_section.length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "para") { _images ~= extract_images(obj.text); } } } auto images=uniq(_images.sort()); +#+END_SRC + +***** section: endnotes + +#+name: abs_post +#+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_endnotes_section.length > 1) { dom_markedup_buffer = dom_markedup.dup; @@ -1961,19 +1953,26 @@ if (the_endnotes_section.length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } +#+END_SRC + +***** section: glossary + +#+name: abs_post +#+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_glossary_section.length > 1) { foreach (ref obj; the_glossary_section) { @@ -1991,19 +1990,26 @@ if (the_glossary_section.length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } +#+END_SRC + +***** section: bibliography + +#+name: abs_post +#+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_bibliography_section.length > 1) { foreach (ref obj; the_bibliography_section) { @@ -2021,21 +2027,29 @@ if (the_bibliography_section.length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } +#+END_SRC + +***** section: book index (scroll, seg) + +#+name: abs_post +#+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_bookindex_section["scroll"].length > 1) { + /+ scroll +/ dom_markedup_buffer = dom_markedup.dup; dom_collapsed_buffer = dom_collapsed.dup; foreach (ref obj; the_bookindex_section["scroll"]) { @@ -2052,18 +2066,20 @@ if (the_bookindex_section["scroll"].length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } + /+ seg +/ dom_markedup = dom_markedup_buffer.dup; dom_collapsed = dom_collapsed_buffer.dup; foreach (ref obj; the_bookindex_section["seg"]) { @@ -2081,19 +2097,26 @@ if (the_bookindex_section["scroll"].length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } +#+END_SRC + +***** section: blurb + +#+name: abs_post +#+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_blurb_section.length > 1) { foreach (ref obj; the_blurb_section) { @@ -2111,42 +2134,53 @@ if (the_blurb_section.length > 1) { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } +} +#+END_SRC + +**** TODO update BUG? + +#+name: abs_post +#+BEGIN_SRC d /+ TODO - note create/insert heading object sole purpose eof close all open tags sort out: - obj.dom_markedup = dom_markedup; - obj.dom_collapsed = dom_collapsed; +/ - dom_markedup = dom_set_markup_tags(dom_markedup, 0); - dom_collapsed = dom_set_collapsed_tags(dom_collapsed, 0); - comp_obj_heading_ = comp_obj_heading_.init; - comp_obj_heading_.use = "empty"; - comp_obj_heading_.is_of = "para"; - comp_obj_heading_.is_a = "heading"; - comp_obj_heading_.ocn = 0; - comp_obj_para.obj_cite_number = ""; - comp_obj_heading_.segment_anchor_tag = ""; - comp_obj_heading_.marked_up_level = ""; - comp_obj_heading_.heading_lev_markup = 9; - comp_obj_heading_.heading_lev_collapsed = 9; - comp_obj_heading_.parent_ocn = 0; - comp_obj_heading_.parent_lev_markup = 0; - comp_obj_heading_.dom_markedup = dom_markedup.dup; - comp_obj_heading_.dom_collapsed = dom_collapsed.dup; - the_dom_tail_section ~= comp_obj_heading_; -} +comp_obj_heading_ = comp_obj_heading_.init; +comp_obj_heading_.use = "empty"; +comp_obj_heading_.is_of = "para"; +comp_obj_heading_.is_a = "heading"; +comp_obj_heading_.ocn = 0; +comp_obj_para.obj_cite_number = ""; +comp_obj_heading_.segment_anchor_tag = ""; +comp_obj_heading_.marked_up_level = ""; +comp_obj_heading_.heading_lev_markup = 9; +comp_obj_heading_.heading_lev_collapsed = 9; +comp_obj_heading_.parent_ocn = 0; +comp_obj_heading_.parent_lev_markup = 0; +comp_obj_heading_.dom_markedup = dom_markedup.dup; +comp_obj_heading_.dom_collapsed = dom_collapsed.dup; +obj_dom_set_markup_tags(comp_obj_heading_, dom_markedup, 0); +obj_dom_set_collapsed_tags(comp_obj_heading_, dom_collapsed, 0); +obj_heading_ancestors(comp_obj_heading_, lv_ancestors_txt); +comp_obj_heading_ = obj_dom_set_markup_tags(comp_obj_heading_, dom_markedup, 0); +comp_obj_heading_ = obj_dom_set_collapsed_tags(comp_obj_heading_, dom_collapsed, 0); +comp_obj_heading_ = obj_heading_ancestors(comp_obj_heading_, lv_ancestors_txt); +the_dom_tail_section ~= comp_obj_heading_; #+END_SRC ** 4. _return document tuple_ :post: @@ -2178,7 +2212,8 @@ auto document_the = [ #+BEGIN_SRC d string[][string] document_section_keys_sequenced = [ "seg": ["head", "toc_seg", "body",], - "scroll": ["head", "toc_scroll", "body",] + "scroll": ["head", "toc_scroll", "body",], + "sql": ["head", "body",] ]; if (document_the["endnotes"].length > 1) { document_section_keys_sequenced["seg"] ~= "endnotes"; @@ -2187,13 +2222,16 @@ if (document_the["endnotes"].length > 1) { if (document_the["glossary"].length > 1) { document_section_keys_sequenced["seg"] ~= "glossary"; document_section_keys_sequenced["scroll"] ~= "glossary"; + document_section_keys_sequenced["sql"] ~= "glossary"; } if (document_the["bibliography"].length > 1) { document_section_keys_sequenced["seg"] ~= "bibliography"; document_section_keys_sequenced["scroll"] ~= "bibliography"; + document_section_keys_sequenced["sql"] ~= "bibliography"; } if (document_the["bookindex_seg"].length > 1) { document_section_keys_sequenced["seg"] ~= "bookindex_seg"; + document_section_keys_sequenced["sql"] ~= "bookindex_seg"; } if (document_the["bookindex_scroll"].length > 1) { document_section_keys_sequenced["scroll"] ~= "bookindex_scroll"; @@ -2201,6 +2239,7 @@ if (document_the["bookindex_scroll"].length > 1) { if (document_the["blurb"].length > 1) { document_section_keys_sequenced["seg"] ~= "blurb"; document_section_keys_sequenced["scroll"] ~= "blurb"; + document_section_keys_sequenced["sql"] ~= "blurb"; } if ((opt_action["html"]) || (opt_action["html-scroll"]) @@ -4357,7 +4396,7 @@ auto table_substantive_munge_special(O,T)( **** object :object: ***** ocn :ocn: -#+name: ao_emitters_ocn +#+name: meta_emitters_ocn #+BEGIN_SRC d struct OCNemitter { int obj_cite_number, obj_cite_number_; @@ -4383,7 +4422,7 @@ struct OCNemitter { ****** { struct, inline markup munge -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d struct ObjInlineMarkupMunge { string[string] obj_txt; @@ -4403,7 +4442,7 @@ struct ObjInlineMarkupMunge { ****** url links -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d string url_links(Ot)(Ot obj_txt_in) { debug(asserts) { @@ -4466,7 +4505,7 @@ struct ObjInlineMarkupMunge { ****** footnotes endnotes markup -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto footnotes_endnotes_markup_and_number_or_stars(Ot)(Ot obj_txt_in, bool reset_note_numbers) { debug(asserts) { @@ -4528,7 +4567,7 @@ struct ObjInlineMarkupMunge { ****** object notes and links -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d private auto object_notes_and_links_(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { @@ -4590,7 +4629,7 @@ struct ObjInlineMarkupMunge { - identified text by heading level marker followed by text until two new lines - general markup -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto munge_heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { @@ -4624,7 +4663,7 @@ struct ObjInlineMarkupMunge { - footnotes/endnotes - links -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto munge_para(Ot)(Ot obj_txt_in) in { @@ -4649,7 +4688,7 @@ struct ObjInlineMarkupMunge { ****** quote -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d string munge_quote(Ot)(Ot obj_txt_in) in { @@ -4674,7 +4713,7 @@ struct ObjInlineMarkupMunge { - links - newlines detected and kept? -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto munge_group(string obj_txt_in) in { } @@ -4696,7 +4735,7 @@ struct ObjInlineMarkupMunge { - links - newlines detected and kept? -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto munge_block(Ot)(Ot obj_txt_in) in { @@ -4722,7 +4761,7 @@ struct ObjInlineMarkupMunge { - footnotes/endnotes - links? -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d auto munge_verse(Ot)(Ot obj_txt_in) in { @@ -4747,7 +4786,7 @@ struct ObjInlineMarkupMunge { - no general markup - one special character represented by mkup.nbsp ░ -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d string munge_code(Ot)(Ot obj_txt_in) in { @@ -4768,7 +4807,7 @@ struct ObjInlineMarkupMunge { - table block identified by open an close tags - table markup -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d string munge_table(Ot)(Ot obj_txt_in) in { @@ -4786,7 +4825,7 @@ struct ObjInlineMarkupMunge { ****** comment -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d string munge_comment(Ot)(Ot obj_txt_in) in { @@ -4804,7 +4843,7 @@ struct ObjInlineMarkupMunge { ****** } -#+name: ao_emitters_obj_inline_markup_munge +#+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d } #+END_SRC @@ -4812,7 +4851,7 @@ struct ObjInlineMarkupMunge { ***** toc, tags, object inline markup :markup:inline: ****** { -#+name: ao_emitters_obj_inline_markup +#+name: meta_emitters_obj_inline_markup #+BEGIN_SRC d struct ObjInlineMarkup { auto rgx = Rgx(); @@ -4822,7 +4861,7 @@ struct ObjInlineMarkup { ****** object inline markup and anchor tags :markup:inline: -#+name: ao_emitters_obj_inline_markup_and_anchor_tags_and_misc +#+name: meta_emitters_obj_inline_markup_and_anchor_tags_and_misc #+BEGIN_SRC d auto obj_inline_markup_and_anchor_tags_and_misc(O,K,Ma)( O obj_, @@ -4912,7 +4951,7 @@ struct ObjInlineMarkup { ****** toc (table of contents), build, gather headings :markup:inline: -#+name: ao_emitters_obj_inline_markup_table_of_contents +#+name: meta_emitters_obj_inline_markup_table_of_contents #+BEGIN_SRC d auto _clean_heading_toc_(Toc)( Toc heading_toc_, @@ -5092,14 +5131,14 @@ struct ObjInlineMarkup { ****** private: -#+name: ao_emitters_obj_inline_markup_private +#+name: meta_emitters_obj_inline_markup_private #+BEGIN_SRC d private: #+END_SRC ******* make heading number & segment anchor tags if instructed :markup:inline:segment:anchor:tags: -#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags +#+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags #+BEGIN_SRC d static string _configured_auto_heading_numbering_and_segment_anchor_tags(M,O,Ma)( M munge_, @@ -5240,7 +5279,7 @@ private: ******* make segment anchor tags if not provided :markup:inline:segment:anchor:tags: -#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags +#+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags #+BEGIN_SRC d static string _make_segment_anchor_tags_if_none_provided(M,Lv)(M munge_, Lv lev_) { debug(asserts) { @@ -5272,7 +5311,7 @@ private: ******** unittests -#+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags +#+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags #+BEGIN_SRC d unittest { string txt_lev="1"; @@ -5322,7 +5361,7 @@ private: ****** } -#+name: ao_emitters_obj_inline_markup_close +#+name: meta_emitters_obj_inline_markup_close #+BEGIN_SRC d } #+END_SRC @@ -5330,7 +5369,7 @@ private: ***** object attrib :attributes: ****** { attributes structure open, public -#+name: ao_emitters_obj_attributes +#+name: meta_emitters_obj_attributes #+BEGIN_SRC d struct ObjAttributes { string[string] _obj_attrib; @@ -5338,7 +5377,7 @@ struct ObjAttributes { ****** emitter obj attributes, public -#+name: ao_emitters_obj_attributes_public +#+name: meta_emitters_obj_attributes_public #+BEGIN_SRC d string obj_attributes(Oi,OR,OH)( Oi obj_is_, @@ -5413,7 +5452,7 @@ struct ObjAttributes { ****** private -#+name: ao_emitters_obj_attributes_private +#+name: meta_emitters_obj_attributes_private #+BEGIN_SRC d private: string _obj_attributes; @@ -5422,7 +5461,7 @@ struct ObjAttributes { ******* attrubutes ******** para & blocks -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _para_and_blocks(Ot)(Ot obj_txt_in) in { @@ -5458,7 +5497,7 @@ struct ObjAttributes { ******** heading -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _heading(Ot)(Ot obj_txt_in) in { @@ -5478,7 +5517,7 @@ struct ObjAttributes { ******** para -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _para(Ot)(Ot obj_txt_in) in { @@ -5498,7 +5537,7 @@ struct ObjAttributes { ******** quote -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _quote(Ot)(Ot obj_txt_in) in { @@ -5518,7 +5557,7 @@ struct ObjAttributes { ******** group -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _group(Ot)(Ot obj_txt_in) in { @@ -5538,7 +5577,7 @@ struct ObjAttributes { ******** block -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _block(Ot)(Ot obj_txt_in) in { @@ -5558,7 +5597,7 @@ struct ObjAttributes { ******** verse -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _verse(Ot)(Ot obj_txt_in) in { @@ -5578,7 +5617,7 @@ struct ObjAttributes { ******** code -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _code(Ot)(Ot obj_txt_in) in { @@ -5598,7 +5637,7 @@ struct ObjAttributes { ******** table -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _table(Ot)(Ot obj_txt_in) in { @@ -5618,7 +5657,7 @@ struct ObjAttributes { ******** comment -#+name: ao_emitters_obj_attributes_private_an_attribute +#+name: meta_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _comment(Ot)(Ot obj_txt_in) in { @@ -5638,7 +5677,7 @@ struct ObjAttributes { ******* set additional attribute values, parse as json -#+name: ao_emitters_obj_attributes_private_json +#+name: meta_emitters_obj_attributes_private_json #+BEGIN_SRC d string _set_additional_values_parse_as_json(OA,Oi,OH)( OA _obj_attrib, @@ -5672,7 +5711,7 @@ struct ObjAttributes { ****** } -#+name: ao_emitters_obj_attributes_private_close +#+name: meta_emitters_obj_attributes_private_close #+BEGIN_SRC d } #+END_SRC @@ -5680,7 +5719,7 @@ struct ObjAttributes { **** book index :book:index: ***** book index nugget hash :hash:nugget: -#+name: ao_emitters_book_index_nugget +#+name: meta_emitters_book_index_nugget #+BEGIN_SRC d struct BookIndexNuggetHash { string main_term, sub_term, sub_term_bits; @@ -5766,7 +5805,7 @@ struct BookIndexNuggetHash { ***** book index (sort &) report indented :report:indented: -#+name: ao_emitters_book_index_report_indented +#+name: meta_emitters_book_index_report_indented #+BEGIN_SRC d struct BookIndexReportIndent { int mkn, skn; @@ -5802,7 +5841,7 @@ struct BookIndexReportIndent { ***** book index (sort &) report section :report:section: ****** { book index struct open -#+name: ao_emitters_book_index_report_section +#+name: meta_emitters_book_index_report_section #+BEGIN_SRC d struct BookIndexReportSection { int mkn, skn; @@ -5812,7 +5851,7 @@ struct BookIndexReportSection { ****** bookindex write section -#+name: ao_emitters_book_index_report_section +#+name: meta_emitters_book_index_report_section #+BEGIN_SRC d auto bookindex_write_section(BI)( BI bookindex_unordered_hashes @@ -5847,7 +5886,7 @@ struct BookIndexReportSection { ****** book index (sort &) build section :report:section: -#+name: ao_emitters_book_index_report_section +#+name: meta_emitters_book_index_report_section #+BEGIN_SRC d auto bookindex_build_abstraction_section(BI,N,B)( BI bookindex_unordered_hashes, @@ -6010,14 +6049,14 @@ struct BookIndexReportSection { ****** } -#+name: ao_emitters_book_index_report_section +#+name: meta_emitters_book_index_report_section #+BEGIN_SRC d } #+END_SRC **** (end)notes section :endnotes:section: -#+name: ao_emitters_endnotes +#+name: meta_emitters_endnotes #+BEGIN_SRC d struct NotesSection { string[string] object_notes; @@ -6028,7 +6067,7 @@ struct NotesSection { ***** { gather notes for endnote section struct open -#+name: ao_emitters_endnotes +#+name: meta_emitters_endnotes #+BEGIN_SRC d private auto gather_notes_for_endnote_section( ObjGenericComposite[] contents_am, @@ -6090,7 +6129,7 @@ struct NotesSection { ***** gathered notes -#+name: ao_emitters_endnotes +#+name: meta_emitters_endnotes #+BEGIN_SRC d private auto gathered_notes() in { @@ -6110,7 +6149,7 @@ struct NotesSection { ***** endnote objects -#+name: ao_emitters_endnotes +#+name: meta_emitters_endnotes #+BEGIN_SRC d private auto endnote_objects( int obj_cite_number, @@ -6205,7 +6244,7 @@ struct NotesSection { ***** } -#+name: ao_emitters_endnotes +#+name: meta_emitters_endnotes #+BEGIN_SRC d } #+END_SRC @@ -6213,14 +6252,14 @@ struct NotesSection { **** bibliography :bibliography: ***** { biblio struct -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d struct Bibliography { #+END_SRC ***** biblio -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d public JSONValue[] _bibliography_(Bi,BJ)( return ref Bi biblio_unsorted_incomplete, @@ -6258,7 +6297,7 @@ struct Bibliography { ***** biblio unsorted complete -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d final private JSONValue[] _biblio_unsorted_complete_(Bi,BJ)( Bi biblio_unordered, @@ -6299,7 +6338,7 @@ struct Bibliography { ***** biblio sort -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d final private JSONValue[] biblio_sort(BJ)(BJ biblio_unordered) { debug(asserts) { @@ -6323,7 +6362,7 @@ struct Bibliography { ***** biblio debug -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d void biblio_debug(BJ)(BJ biblio_sorted) { debug(asserts) { @@ -6341,7 +6380,7 @@ struct Bibliography { ***** } -#+name: ao_emitters_bibliography +#+name: meta_emitters_bibliography #+BEGIN_SRC d } #+END_SRC @@ -6349,7 +6388,7 @@ struct Bibliography { **** node structure metadata :structure:metadata:node: ***** { metadata node struct -#+name: ao_emitters_metadata +#+name: meta_emitters_metadata #+BEGIN_SRC d struct NodeStructureMetadata { int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7; @@ -6360,7 +6399,7 @@ struct NodeStructureMetadata { ***** node metadata emitter -#+name: ao_emitters_metadata +#+name: meta_emitters_metadata #+BEGIN_SRC d ObjGenericComposite node_location_emitter(Lv,Ta,N,C,P,I)( Lv lev_markup_number, @@ -6424,7 +6463,7 @@ struct NodeStructureMetadata { ***** node metadata emitter heading, (including most segnames & their pointers) -#+name: ao_emitters_metadata +#+name: meta_emitters_metadata #+BEGIN_SRC d ObjGenericComposite node_emitter_heading(T,L,Lm,Lc,Ta,N,C,P,LA,I,PSn,fNr,fNs,fL)( T _text, @@ -6435,7 +6474,7 @@ struct NodeStructureMetadata { N obj_cite_number_, C cntr_, P ptr_, - LA lv_ancestors, + LA lv_ancestors_txt, I is_, PSn html_segnames_ptr, fNr flag_notes_reg, @@ -6452,7 +6491,7 @@ struct NodeStructureMetadata { static assert(is(typeof(obj_cite_number_) == int)); static assert(is(typeof(cntr_) == int)); static assert(is(typeof(ptr_) == int)); - static assert(is(typeof(lv_ancestors) == string[])); + static assert(is(typeof(lv_ancestors_txt) == string[])); static assert(is(typeof(is_) == string)); static assert(is(typeof(html_segnames_ptr) == int)); } @@ -6564,7 +6603,7 @@ struct NodeStructureMetadata { _comp_obj_heading_.heading_lev_collapsed = (!(lev_collapsed_number.empty) ? lev_collapsed_number.to!int : 0); _comp_obj_heading_.parent_ocn = p_["obj_cite_number"]; _comp_obj_heading_.parent_lev_markup = p_["lev_markup_number"]; - _comp_obj_heading_.heading_ancestors_text = lv_ancestors; + _comp_obj_heading_.heading_ancestors_text = lv_ancestors_txt; _comp_obj_heading_.ptr_doc_object = cntr_; _comp_obj_heading_.ptr_html_segnames = ((lev_markup_number == "4") ? html_segnames_ptr : 0); _comp_obj_heading_.ptr_heading = ptr_; @@ -6619,7 +6658,7 @@ struct NodeStructureMetadata { ***** } -#+name: ao_emitters_metadata +#+name: meta_emitters_metadata #+BEGIN_SRC d } #+END_SRC @@ -6854,35 +6893,38 @@ template docSectKeysSeq() { auto scroll() { return document_section_keys_sequenced["scroll"]; } + auto sql() { + return document_section_keys_sequenced["sql"]; + } } return doc_sect_keys_seq(); } } #+END_SRC -* 2. Object Setter (Set Abstract Object) :module:sdp:ao_object_setter: +* 2. Object Setter (Set Abstract Object) :module:sdp:meta_object_setter: set abstracted objects for downstream processing ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/object_setter.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/object_setter.d /++ object setter: setting of sisu objects for downstream processing - ao_object_setter.d + meta_object_setter.d +/ -module sdp.ao.object_setter; +module sdp.meta.object_setter; template ObjectSetter() { /+ structs +/ - <<ao_structs_init>> + <<meta_structs_init>> } #+END_SRC ** 1. initialize structs :struct: *** heading attribute -#+name: ao_structs_init +#+name: meta_structs_init #+BEGIN_SRC d struct HeadingAttrib { string lev = "9"; @@ -6897,7 +6939,7 @@ struct HeadingAttrib { *** [#A] _composite object_ -#+name: ao_structs_init +#+name: meta_structs_init #+BEGIN_SRC d struct ObjGenericComposite { // size_t id; @@ -6932,6 +6974,7 @@ struct ObjGenericComposite { int heading_lev_collapsed = 9; int[] dom_markedup = [ 0, 0, 0, 0, 0, 0, 0, 0,]; int[] dom_collapsed = [ 0, 0, 0, 0, 0, 0, 0, 0,]; + int[] heading_ancestors = [ 0, 0, 0, 0, 0, 0, 0, 0,]; string[] heading_ancestors_text = [ "", "", "", "", "", "", "", "", ]; string[] lev4_subtoc = []; int heading_array_ptr = 0; @@ -6946,7 +6989,7 @@ struct ObjGenericComposite { *** The Objects: generic composite object array -#+name: ao_structs_init +#+name: meta_structs_init #+BEGIN_SRC d struct TheObjects { ObjGenericComposite[] oca; diff --git a/org/ao_conf_make_meta.org b/org/meta_conf_make_meta.org index 25bcd4d..5e4cb6d 100644 --- a/org/ao_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -11,14 +11,14 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:meta: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. header extract (native & sdlang) to AA :module:sdp:ao_conf_make_meta: +* 0. header extract (native & sdlang) to AA :module:sdp:meta_conf_make_meta: ** module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/conf_make_meta.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta.d /++ extract native/orig header return associative array<BR> @@ -29,7 +29,7 @@ converting the metadata and make instructions to a common json format used by program internally. Moved to associative array. +/ -module sdp.ao.conf_make_meta; +module sdp.meta.conf_make_meta; template docHeaderMakeAndMetaTupExtractAndConvertToAA() { import std.exception, @@ -41,9 +41,9 @@ template docHeaderMakeAndMetaTupExtractAndConvertToAA() { std.conv : to; import sdlang; import - sdp.ao.conf_make_meta_native, - sdp.ao.conf_make_meta_sdlang, - sdp.ao.rgx; + sdp.meta.conf_make_meta_native, + sdp.meta.conf_make_meta_sdlang, + sdp.meta.rgx; mixin SiSUrgxInit; mixin SiSUheaderExtractNative; mixin SiSUextractSDLang; @@ -70,15 +70,15 @@ template docHeaderMakeAndMetaTupExtractAndConvertToAA() { } #+END_SRC -* A. module sdlang :module:sdp:ao_conf_make_meta_sdlang: +* A. module sdlang :module:sdp:meta_conf_make_meta_sdlang: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/conf_make_meta_sdlang.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_sdlang.d /++ sdlang headers<BR> extract sdlang header return sdlang +/ -module sdp.ao.conf_make_meta_sdlang; +module sdp.meta.conf_make_meta_sdlang; template SiSUextractSDLang() { import std.exception, @@ -90,20 +90,20 @@ template SiSUextractSDLang() { std.utf, std.conv : to; import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; struct extractSDL { mixin SiSUregisters; mixin SiSUrgxInit; auto rgx = Rgx(); - <<ao_conf_make_meta_sdl>> + <<meta_conf_make_meta_sdl>> } } #+END_SRC ** 1. sdlang header _extract root Tag_ :sdlang:root:tag: -#+name: ao_conf_make_meta_sdl +#+name: meta_conf_make_meta_sdl #+BEGIN_SRC d private auto docHeaderSDLtagGet(Hs)(Hs src_header) { debug(asserts){ @@ -158,7 +158,7 @@ private auto docHeaderSDLtagGet(Hs)(Hs src_header) { ** 2a. _sdlang to associative array_ -#+name: ao_conf_make_meta_sdl +#+name: meta_conf_make_meta_sdl #+BEGIN_SRC d private auto sdlangToAA(C,Tag)(C conf, Tag conf_sdlang) { debug(asserts){ @@ -200,7 +200,7 @@ private auto sdlangToAA(C,Tag)(C conf, Tag conf_sdlang) { ** 2b. sdlang header to _associative array_ make sdlTag in :sdlang:aa: -#+name: ao_conf_make_meta_sdl +#+name: meta_conf_make_meta_sdl #+BEGIN_SRC d private auto docHeaderSDLtoAA(Ma, Tag)(Ma dochead_make, Tag header_sdlang) { debug(asserts){ @@ -250,15 +250,15 @@ private auto docHeaderSDLtoAA(Ma, Tag)(Ma dochead_make, Tag header_sdlang) { } #+END_SRC -* B. module native document header :module:sdp:ao_conf_make_meta_native: +* B. module native document header :module:sdp:meta_conf_make_meta_native: ** module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/conf_make_meta_native.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/conf_make_meta_native.d /++ native headers using<br>@title:<BR>:subtitle:<BR>type tags<BR> extract native/orig header return associative array +/ -module sdp.ao.conf_make_meta_native; +module sdp.meta.conf_make_meta_native; template SiSUheaderExtractNative() { import std.exception, @@ -270,8 +270,8 @@ template SiSUheaderExtractNative() { std.utf, std.conv : to; import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; struct HeaderDocMetadataAndMakeNativeToAA { mixin SiSUregisters; mixin SiSUrgxInitFlags; @@ -279,14 +279,14 @@ template SiSUheaderExtractNative() { auto rgx = Rgx(); enum State { off, on } string hm, hs; - <<ao_markup_header_extract_native>> + <<meta_markup_header_extract_native>> } } #+END_SRC ** native header document metadata in associative array :aa: -#+name: ao_markup_header_extract_native +#+name: meta_markup_header_extract_native #+BEGIN_SRC d auto header_metadata_and_make_aa(H,Me,Ma)( H header, @@ -482,7 +482,7 @@ body { ** native header extract to string object :string: -#+name: ao_markup_header_extract_native +#+name: meta_markup_header_extract_native #+BEGIN_SRC d private auto native_header_extract(L,Lo,O,T)( L line, @@ -532,7 +532,7 @@ private auto native_header_extract(L,Lo,O,T)( ** native header reset states :reset: -#+name: ao_markup_header_extract_native +#+name: meta_markup_header_extract_native #+BEGIN_SRC d auto header_reset_states_common(Lo,O,T)( return ref Lo line_occur, @@ -555,7 +555,7 @@ auto header_reset_states_common(Lo,O,T)( ** hub: native header start :hub: -#+name: ao_markup_header_extract_native +#+name: meta_markup_header_extract_native #+BEGIN_SRC d private auto headerNativeToAA(Hn)(Hn src_header) { debug(asserts){ @@ -611,16 +611,16 @@ private auto headerNativeToAA(Hn)(Hn src_header) { } #+END_SRC -* 0. composite make :module:sdp:ao_composite_make: +* 0. composite make :module:sdp:meta_composite_make: ** TODO 0. template *** composite make -#+BEGIN_SRC d :tangle ../src/sdp/ao/composite_make.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/composite_make.d /++ output hub<BR> check & generate output types requested +/ -module sdp.ao.composite_make; +module sdp.meta.composite_make; template compositeMkCnf() { <<imports>> mixin SiSUrgxInit; @@ -688,7 +688,7 @@ template compositeMkCnf() { #+END_SRC *** composite make aa -#+BEGIN_SRC d :tangle ../src/sdp/ao/composite_make.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/composite_make.d /++ output hub<BR> check & generate output types requested @@ -733,6 +733,6 @@ template compositeMkCnfAA() { #+name: imports #+BEGIN_SRC d -import sdp.ao; +import sdp.meta; import std.array; #+END_SRC diff --git a/org/ao_debugs.org b/org/meta_debugs.org index 1111d55..fb34b34 100644 --- a/org/ao_debugs.org +++ b/org/meta_debugs.org @@ -11,18 +11,18 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:meta: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 1. abstraction debugs :module:sdp:ao_doc_debugs: +* 1. abstraction debugs :module:sdp:meta_doc_debugs: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/doc_debugs.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/doc_debugs.d /++ output debugs +/ -module sdp.ao.doc_debugs; +module sdp.meta.doc_debugs; template SiSUdebugs() { <<debug_imports>> auto SiSUdebugs(S,T)( @@ -32,11 +32,11 @@ template SiSUdebugs() { mixin SiSUrgxInit; mixin InternalMarkup; <<initialize>> - <<ao_output_debugs>> + <<meta_output_debugs>> debug(checkdoc) { if ((doc_matters.opt_action["debug"])) { - <<ao_output_debugs_summary>> - <<ao_output_debugs_checkdoc>> + <<meta_output_debugs_summary>> + <<meta_output_debugs_checkdoc>> } } } @@ -48,8 +48,8 @@ template SiSUdebugs() { #+name: debug_imports #+BEGIN_SRC d import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; import std.algorithm, std.array, @@ -79,7 +79,7 @@ string key; ** (parent) :parent: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(parent) { writefln( @@ -107,7 +107,7 @@ debug(parent) { ** (dumpdoc) :objects: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(dumpdoc) { writefln( @@ -131,7 +131,7 @@ debug(dumpdoc) { ** (segnames) :objects: -#+name: ao_output_debugs_checkdoc +#+name: meta_output_debugs_checkdoc #+BEGIN_SRC d debug(checkdoc) { void out_segnames(S,T)( @@ -154,7 +154,7 @@ debug(checkdoc) { ** shared output section arrange *** out toc -#+name: ao_output_debugs_checkdoc +#+name: meta_output_debugs_checkdoc #+BEGIN_SRC d debug(checkdoc) { void out_toc(S)( @@ -178,7 +178,7 @@ debug(checkdoc) { *** out endnotes :endnotes: -#+name: ao_output_debugs_checkdoc +#+name: meta_output_debugs_checkdoc #+BEGIN_SRC d debug(checkdoc) { void out_endnotes(S)( @@ -200,7 +200,7 @@ debug(checkdoc) { *** out bookindex :bookindex: -#+name: ao_output_debugs_checkdoc +#+name: meta_output_debugs_checkdoc #+BEGIN_SRC d debug(checkdoc) { void out_bookindex(S)( @@ -224,7 +224,7 @@ debug(checkdoc) { ** sections *** heading_section :heading: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_head) { key="head"; @@ -244,7 +244,7 @@ debug(section_head) { *** toc_section (seg & scroll) **** toc -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_toc) { key="toc_seg"; @@ -254,7 +254,7 @@ debug(section_toc) { **** toc seg -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_toc_seg) { key="toc_seg"; @@ -264,7 +264,7 @@ debug(section_toc_seg) { **** toc scroll -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_toc_scroll) { key="toc_scroll"; @@ -272,7 +272,7 @@ debug(section_toc_scroll) { } #+END_SRC -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(segnames) { writeln(__LINE__); @@ -282,7 +282,7 @@ debug(segnames) { *** body_section :body: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_body) { key="body"; @@ -301,7 +301,7 @@ debug(section_body) { *** dom structure :body: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(toc_nav_dom) { enum DomTags { none, open, close, close_and_open, open_still, } @@ -364,7 +364,7 @@ debug(toc_nav_dom) { *** endnotes_section (seg & scroll) :endnotes: **** endnotes -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_endnotes) { key="endnotes"; @@ -374,7 +374,7 @@ debug(section_endnotes) { **** endnotes seg -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_endnotes_seg) { key="endnotes"; @@ -384,7 +384,7 @@ debug(section_endnotes_seg) { *** glossary_section :glossary: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_glossary) { key="glossary"; @@ -403,7 +403,7 @@ debug(section_glossary) { *** bibliography_section (seg & scroll) :bibliography: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_bibliography) { key="bibliography"; @@ -423,7 +423,7 @@ debug(section_bibliography) { *** bookindex_section (seg & scroll) :bookindex: **** bookindex -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_bookindex) { key="bookindex_seg"; @@ -433,7 +433,7 @@ debug(section_bookindex) { **** bookindex seg -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_bookindex_seg) { key="bookindex_seg"; @@ -443,7 +443,7 @@ debug(section_bookindex_seg) { **** bookindex scroll -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(section_bookindex_scroll) { key="bookindex_scroll"; @@ -453,7 +453,7 @@ debug(section_bookindex_scroll) { *** section_blurb :blurb: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(blurb_section) { key="blurb"; @@ -472,7 +472,7 @@ debug(blurb_section) { ** (objects) :objects: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(objects) { writefln( @@ -496,7 +496,7 @@ debug(objects) { ** (headermakejson) :json:header: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(headermakejson) { writefln( @@ -528,7 +528,7 @@ debug(headermakejson) { ** (headermetadatajson) :json:header: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(headermetadatajson) { writefln( @@ -656,7 +656,7 @@ debug(headermetadatajson) { ** anchor tags -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(anchor) { writefln( @@ -684,7 +684,7 @@ debug(anchor) { ** (headings) :headings: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(heading) { // heading foreach (k; doc_matters.keys_seq.seg) { @@ -705,7 +705,7 @@ debug(heading) { // heading ** (summary) [+1] :summary: -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(headings) { writefln( @@ -730,7 +730,7 @@ debug(headings) { } #+END_SRC -#+name: ao_output_debugs +#+name: meta_output_debugs #+BEGIN_SRC d debug(summary) { string[string] check = [ @@ -741,7 +741,7 @@ debug(summary) { *** compare number of obj_cite_number for known sisu markup output (checkdoc) -#+name: ao_output_debugs_summary +#+name: meta_output_debugs_summary #+BEGIN_SRC d debug(checkdoc) { if (auto mfn=match(doc_matters.source_filename, rgx.src_fn)) { diff --git a/org/ao_read_source_files.org b/org/meta_read_source_files.org index 7bbaca9..06c3cb7 100644 --- a/org/ao_read_source_files.org +++ b/org/meta_read_source_files.org @@ -11,7 +11,7 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao:read:file +#+FILETAGS: :sdp:rel:meta:read:file #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] @@ -20,29 +20,29 @@ #+name: imports_std #+BEGIN_SRC d import - sdp.ao, + sdp.meta, std.file, std.path; #+END_SRC -* 1. get _config file_ (read in) :module:sdp:ao_read_config_files: +* 1. get _config file_ (read in) :module:sdp:meta_read_config_files: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/read_config_files.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/read_config_files.d /++ read configuration files<BR> - read config files<BR> - ao_config_files.d + meta_config_files.d +/ -module sdp.ao.read_config_files; -<<ao_config_file_in>> -<<ao_config_file_sdl>> -<<ao_config_file_hub>> +module sdp.meta.read_config_files; +<<meta_config_file_in>> +<<meta_config_file_sdl>> +<<meta_config_file_hub>> #+END_SRC ** 1. read config file, (conf.sdl & sisu_document_make) :file:config: -#+name: ao_config_file_in +#+name: meta_config_file_in #+BEGIN_SRC d template configIn() { <<imports_std>> @@ -84,7 +84,7 @@ template configIn() { ** 2. config files get sdlang root tag *** 0. template -#+name: ao_config_file_sdl +#+name: meta_config_file_sdl #+BEGIN_SRC d /+ @@ -92,13 +92,13 @@ template configIn() { template ConfigSDLang() { import sdlang; <<imports_std>> - <<ao_config_file_sdlang>> + <<meta_config_file_sdlang>> } #+END_SRC *** config file get sdl root tag :file:conf:sdlang: -#+name: ao_config_file_sdlang +#+name: meta_config_file_sdlang #+BEGIN_SRC d auto ConfigSDLang(string configuration, string conf_sdl_filename) { Tag sdl_root_conf; @@ -116,19 +116,19 @@ auto ConfigSDLang(string configuration, string conf_sdl_filename) { ** 3. config file (conf.sdl & sisu_document_make) :file:config:hub: *** 0. template -#+name: ao_config_file_hub +#+name: meta_config_file_hub #+BEGIN_SRC d /+ +/ template configRead() { <<imports_std>> - <<ao_config_file_import_sdlang>> - <<ao_config_file_sdlang_hub>> + <<meta_config_file_import_sdlang>> + <<meta_config_file_sdlang_hub>> } #+END_SRC *** config hub import sdlang -#+name: ao_config_file_import_mixin +#+name: meta_config_file_import_mixin #+BEGIN_SRC d import sdlang; #+END_SRC @@ -137,7 +137,7 @@ import sdlang; Read in sdl config file name given, and return sdl root -#+name: ao_config_file_sdlang_hub +#+name: meta_config_file_sdlang_hub #+BEGIN_SRC d final auto configRead(C,E)(C conf_sdl, E env) { auto configuration = configIn!()(conf_sdl, env); @@ -146,19 +146,19 @@ final auto configRead(C,E)(C conf_sdl, E env) { } #+END_SRC -* 2. get _markup source_, read file :module:sdp:ao_read_source_files: +* 2. get _markup source_, read file :module:sdp:meta_read_source_files: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/read_source_files.d +#+BEGIN_SRC d :tangle ../src/sdp/meta/read_source_files.d /++ - module ao_read_source_files;<BR> + module meta_read_source_files;<BR> - open markup files<BR> - if master file scan for addional files to import/insert +/ -module sdp.ao.read_source_files; +module sdp.meta.read_source_files; template SiSUrawMarkupContent() { import - sdp.ao.rgx; + sdp.meta.rgx; <<imports_std>> mixin SiSUrgxInit; auto rgx = Rgx(); @@ -201,36 +201,36 @@ template SiSUrawMarkupContent() { } struct MarkupRawUnit { import std.file; - <<ao_markup_source_raw_read_file_source_string>> - <<ao_markup_source_raw_doc_header_and_content_split>> - <<ao_markup_source_raw_source_line_array>> - <<ao_markup_source_raw_read_in_file>> - <<ao_markup_source_raw_tuple_of_header_and_body>> - <<ao_markup_source_raw_get_insert_source_line_array>> + <<meta_markup_source_raw_read_file_source_string>> + <<meta_markup_source_raw_doc_header_and_content_split>> + <<meta_markup_source_raw_source_line_array>> + <<meta_markup_source_raw_read_in_file>> + <<meta_markup_source_raw_tuple_of_header_and_body>> + <<meta_markup_source_raw_get_insert_source_line_array>> } struct Inserts { - import sdp.ao.defaults; + import sdp.meta.defaults; auto scan_subdoc_source( char[][] markup_sourcefile_insert_content, string fn_src ) { mixin SiSUrgxInitFlags; - <<ao_inserts_scan>> + <<meta_inserts_scan>> foreach (line; markup_sourcefile_insert_content) { - <<ao_inserts_scan_loop>> + <<meta_inserts_scan_loop>> } // end src subdoc (inserts) loop - <<ao_inserts_scan_post>> + <<meta_inserts_scan_post>> } auto scan_master_src_for_insert_files_and_import_content( char[][] sourcefile_body_content, string fn_src ) { mixin SiSUrgxInitFlags; - <<ao_master_doc_scan_for_insert_filenames>> + <<meta_master_doc_scan_for_insert_filenames>> foreach (line; sourcefile_body_content) { - <<ao_master_doc_scan_for_insert_filenames_loop>> + <<meta_master_doc_scan_for_insert_filenames_loop>> } // end src doc loop - <<ao_master_doc_scan_for_insert_filenames_post>> + <<meta_master_doc_scan_for_insert_filenames_post>> } } } @@ -239,7 +239,7 @@ template SiSUrawMarkupContent() { ** get markup source, read file :source:markup: *** [#A] read file, source string :string: -#+name: ao_markup_source_raw_read_file_source_string +#+name: meta_markup_source_raw_read_file_source_string #+BEGIN_SRC d final private string readInMarkupSource(in char[] fn_src) { enforce( @@ -276,7 +276,7 @@ catch (ErrnoException ex) { here you split document header and body, an array.length == 2 split is on first match of level A~ (which is required) -#+name: ao_markup_source_raw_doc_header_and_content_split +#+name: meta_markup_source_raw_doc_header_and_content_split #+BEGIN_SRC d final private char[][] header0Content1(in string src_text) { /+ split string on _first_ match of "^:?A~\s" into [header, content] array/tuple +/ @@ -295,7 +295,7 @@ final private char[][] header0Content1(in string src_text) { *** source line array :array: -#+name: ao_markup_source_raw_source_line_array +#+name: meta_markup_source_raw_source_line_array #+BEGIN_SRC d final private char[][] markupSourceLineArray(in char[] src_text) { char[][] source_line_arr = @@ -310,7 +310,7 @@ final private char[][] markupSourceLineArray(in char[] src_text) { **** read in file -#+name: ao_markup_source_raw_read_in_file +#+name: meta_markup_source_raw_read_in_file #+BEGIN_SRC d auto markupSourceReadIn(in string fn_src) { auto rgx = Rgx(); @@ -325,7 +325,7 @@ auto markupSourceReadIn(in string fn_src) { **** tuple header and body content -#+name: ao_markup_source_raw_tuple_of_header_and_body +#+name: meta_markup_source_raw_tuple_of_header_and_body #+BEGIN_SRC d auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { string[] file_insert_list = []; @@ -344,7 +344,7 @@ auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { **** get insert source line array -#+name: ao_markup_source_raw_get_insert_source_line_array +#+name: meta_markup_source_raw_get_insert_source_line_array #+BEGIN_SRC d final char[][] getInsertMarkupSourceContentRawLineArray( in char[] fn_src_insert, @@ -366,7 +366,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray( *** scan inserts (sub-document) source :scan_insert_src: **** scan subdoc source -#+name: ao_inserts_scan +#+name: meta_inserts_scan #+BEGIN_SRC d char[][] contents_insert; auto type1 = flags_type_init; @@ -376,7 +376,7 @@ auto markup_src_file_path = fn_pth_full.captures[1]; **** loop insert (sub-document) -#+name: ao_inserts_scan_loop +#+name: meta_inserts_scan_loop #+BEGIN_SRC d if (type1["curly_code"] == 1) { type1["header_make"] = 0; @@ -452,7 +452,7 @@ if (type1["curly_code"] == 1) { **** post loop -#+name: ao_inserts_scan_post +#+name: meta_inserts_scan_post #+BEGIN_SRC d return contents_insert; #+END_SRC @@ -460,7 +460,7 @@ return contents_insert; *** scan document source :scan_src: **** scan doc source -#+name: ao_master_doc_scan_for_insert_filenames +#+name: meta_master_doc_scan_for_insert_filenames #+BEGIN_SRC d char[][] contents; auto type = flags_type_init; @@ -471,7 +471,7 @@ string[] insert_file_list =[]; **** include inserts: _loop master_ scan for inserts (insert documents) -#+name: ao_master_doc_scan_for_insert_filenames_loop +#+name: meta_master_doc_scan_for_insert_filenames_loop #+BEGIN_SRC d if (type["curly_code"] == 1) { if (line.matchFirst(rgx.block_curly_code_close)) { @@ -533,7 +533,7 @@ if (type["curly_code"] == 1) { **** post loop -#+name: ao_master_doc_scan_for_insert_filenames_post +#+name: meta_master_doc_scan_for_insert_filenames_post #+BEGIN_SRC d debug(insert_file) { writeln(__LINE__); diff --git a/org/output_xmls_css.org b/org/output_xmls_css.org index 0a9afb5..1adb168 100644 --- a/org/output_xmls_css.org +++ b/org/output_xmls_css.org @@ -11,11 +11,11 @@ #+PROPERTY: header-args :padline no :exports code :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport -#+FILETAGS: :sdp:rel:ao: +#+FILETAGS: :sdp:rel:output: #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. ao css defaults :module:sdp:output_xmls_css: +* 0. output css defaults :module:sdp:output_xmls_css: ** 0. module template #+BEGIN_SRC d :tangle ../src/sdp/output/xmls_css.d diff --git a/org/sdp.org b/org/sdp.org index d4e40b4..63557ed 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -25,7 +25,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 17, 0); +enum ver = Version(0, 18, 0); #+END_SRC * 1. sdp (sisu document parser) :sdp: @@ -50,7 +50,7 @@ enum ver = Version(0, 17, 0); module sdp.sisu_document_parser; import sdp.conf.compile_time_info, - sdp.ao.abstraction; + sdp.meta.metadoc; <<imports_sdp>> <<mixin_sdp_version>> <<mixin_pre_main>> @@ -92,22 +92,22 @@ unittest { #+NAME: imports_sdp #+BEGIN_SRC d /+ sdp: sisu document parser, see http://sisudoc.org +/ -import sdp.ao; +import sdp.meta; import std.getopt, std.process; import - sdp.ao.abstraction_summary, - sdp.ao.abstract_doc_source, - sdp.ao.composite_make, - sdp.ao.conf_make_meta, - // sdp.ao.conf_make_meta_native, - sdp.ao.conf_make_meta_sdlang, - sdp.ao.defaults, - sdp.ao.doc_debugs, - sdp.ao.read_config_files, - sdp.ao.read_source_files, - sdp.ao.rgx, + sdp.meta.metadoc_summary, + sdp.meta.metadoc_from_src, + sdp.meta.composite_make, + sdp.meta.conf_make_meta, + // sdp.meta.conf_make_meta_native, + sdp.meta.conf_make_meta_sdlang, + sdp.meta.defaults, + sdp.meta.doc_debugs, + sdp.meta.read_config_files, + sdp.meta.read_source_files, + sdp.meta.rgx, sdp.output.hub, sdp.output.paths_source; #+END_SRC @@ -116,17 +116,17 @@ import ├── src │ ├── sdp.d │ └── sdp -│ ├── ao_abstract_doc_source.d +│ ├── meta_metadoc_from_src.d │ ├── ... │ └── compile_time_info.d └── views └── version.txt -[[./ao_abstract_doc_source.org][ao_abstract_doc_source]] -[[./ao_conf_make_meta.org][ao_conf_make_meta]] -[[./ao_defaults.org][ao_defaults]] -[[./ao_output_debugs.org][ao_output_debugs]] -[[./ao_read_source_files.org][ao_read_source_files]] +[[./meta_metadoc_from_src.org][meta_metadoc_from_src]] +[[./meta_conf_make_meta.org][meta_conf_make_meta]] +[[./meta_defaults.org][meta_defaults]] +[[./meta_output_debugs.org][meta_output_debugs]] +[[./meta_read_source_files.org][meta_read_source_files]] [[./compile_time_info.org][compile time info]] [[./output.org][output]] [[./sdp.org][sdp]] @@ -386,7 +386,7 @@ if (doc_matters.opt_action["verbose"]) { } #+END_SRC **** 1. _debug_ (document parts, checkdoc) :debug:checkdoc: -- [[./ao_output_debugs.org][ao_output_debugs]] +- [[./meta_output_debugs.org][meta_output_debugs]] #+NAME: sdp_each_file_do_debugs_checkdoc #+BEGIN_SRC d @@ -435,8 +435,8 @@ break; // terminate, stop * 2. _document abstraction functions_ :module:sdp:abstraction: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/abstraction.d -module sdp.ao.abstraction; +#+BEGIN_SRC d :tangle ../src/sdp/meta/metadoc.d +module sdp.meta.metadoc; template SiSUabstraction() { <<imports_sdp>> <<sdp_mixin>> @@ -458,7 +458,7 @@ template SiSUabstraction() { #+END_SRC ** 1. (a) _read in raw file_ (b) split content into: _doc header & doc content_ -- [[./ao_read_source_files.org][ao_read_source_files]] +- [[./meta_read_source_files.org][meta_read_source_files]] - read in the source marked up document and - split the document into: @@ -486,7 +486,7 @@ debug(header_and_body) { #+END_SRC ** 2. _document metadata_ & _make instructions_ :doc:header:metadata:make: -- [[./ao_conf_make_meta.org][ao_conf_make_meta]] +- [[./meta_conf_make_meta.org][meta_conf_make_meta]] - read document header, split into: - metadata @@ -531,7 +531,7 @@ auto _make_and_conf_composite_static_plus_docheader_aa = compositeMkCnfAA!()( #+END_SRC ** 4. _document abstraction, tuple_ (pre-output-processing) :processing: -- [[./ao_doc_abstraction.org][ao_doc_abstraction]] +- [[./meta_abstraction.org][meta_abstraction]] - prepare the document abstraction used in downstream processing @@ -629,21 +629,21 @@ struct DocumentMatters { auto doc_matters = DocumentMatters(); #+END_SRC -* 3. document abstraction _summary_ :module:sdp:abstraction_summary: +* 3. document abstraction _summary_ :module:sdp:metadoc_summary: ** 0. module template -#+BEGIN_SRC d :tangle ../src/sdp/ao/abstraction_summary.d -module sdp.ao.abstraction_summary; +#+BEGIN_SRC d :tangle ../src/sdp/meta/metadoc_summary.d +module sdp.meta.metadoc_summary; template SiSUabstractionSummary() { auto SiSUabstractionSummary(S,T)( auto return ref const S doc_abstraction, auto return ref T doc_matters, ) { - <<abstraction_summary_imports>> + <<metadoc_summary_imports>> mixin InternalMarkup; - <<abstraction_summary_initialize>> + <<metadoc_summary_initialize>> if (doc_matters.opt_action["verbose"]) { - <<ao_abstraction_summary>> + <<meta_metadoc_summary>> } } } @@ -652,11 +652,11 @@ template SiSUabstractionSummary() { ** init *** imports -#+name: abstraction_summary_imports +#+name: metadoc_summary_imports #+BEGIN_SRC d import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; import std.array, std.exception, @@ -672,14 +672,14 @@ import *** initialize :report: -#+name: abstraction_summary_initialize +#+name: metadoc_summary_initialize #+BEGIN_SRC d auto markup = InlineMarkup(); #+END_SRC ** (last ocn) -#+name: ao_abstraction_summary +#+name: meta_metadoc_summary #+BEGIN_SRC d string[string] check = [ "last_obj_cite_number" : "NA [debug \"checkdoc\" not run]", @@ -697,7 +697,7 @@ foreach (k; doc_matters.keys_seq.seg) { ** summary -#+name: ao_abstraction_summary +#+name: meta_metadoc_summary #+BEGIN_SRC d auto min_repeat_number = 66; auto char_repeat_number = (doc_matters.dochead_meta["title"]["full"].length @@ -743,3 +743,217 @@ writefln( markup.repeat_character_by_number_provided("-", min_repeat_number), ); #+END_SRC + +* __END__ +dev notes + +** sdp glossary / terms + +|------+-------------------------------------| +| sdp | sisu document parser | +|------+-------------------------------------| +| dmso | document markup, structure, objects | +|------+-------------------------------------| +| meta | meta document, document abstraction | +| mda | meta, meta document abstraction | +| adr | abstract document representation | +| dar | document abstract representation | +| (da) | (document abstraction) | +| | (code representation of document) | +|------+-------------------------------------| +| ao | abstract objects | +| | (code representation of objects) | +|------+-------------------------------------| + +consider +|-------+----------------------------------------------| +| dao | document abstraction, objects | +|-------+----------------------------------------------| +| daso | document abstraction, structure, objects | +|-------+----------------------------------------------| +| drso | document representation, structure, objects | +|-------+----------------------------------------------| +| daows | document abstraction, objects with structure | +|-------+----------------------------------------------| + +** the document notes +*** document sections +**** summary + +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| section | part | opt. | | objects | ocn | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| front matter | head | * | | | no | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| toc | toc | | | generated from headings | no | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| body | body | * | | default section | yes | | | +| | | | | - headings | | | | +| | | | | - paras | | | | +| | | | | - code | | | | +| | | | | - poem | | | | +| | | | | - group | | | | +| | | | | - block | | | | +| | | | | - quote | | | | +| | | | | - table | | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| back matter | endnote | | | generated from inline note markup | no (each endnote belongs to | | | +| | | | | | a (body) object) | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| | glossary | | | identified section, limited markup | possibly, to make searchable | | | +| | | | | - heading | hidden | | | +| | | | | - paras | | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| | bibliography | | | generated from inline special markup | possibly, to make searchable | | | +| | | | | appended to paragraphs contained in body section | hidden | | | +| | | | | - heading | | | | +| | | | | - paras | | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| | book index | | | generated from inline special markup | possibly, special numbering or | | | +| | | | | - heading | could use term as anchor? | | | +| | | | | - paras | to make searchable | | | +| | | | | | hidden | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| +| | blurb | | | identified section, limited markup | no (unless non-substantive | | | +| | | | | - heading | given special numbering) | | | +| | | | | - paras | | | | +|--------------+--------------+------+---+--------------------------------------------------+--------------------------------+---+---| + +**** on abstraction + +- abstract for downstream processing + - identify document structure and objects + - identify document structure (headings/levels/sections) + - identify objects (headings, paragraphs, tables, code blocks, verse ...) + - set document, generate common abstraction for downstream parsing + - set different _document sections_: + - _head_, toc, _body_, endnotes, glossary, bibliography, book index, blurb + - _object numbers_, heading/ chapter numbering etc, endnote numbers + - _regular ocn_ + - body objects + - glossary objects + - bibliography objects + - _special ocn_ + - non substantive text (provide special numbers) + - blurb objects + - book index + - special (_exceptions_) + - endnotes + - unify object representations + - multiple markups for same object type given single representation + - extract object attributes + - unify inline markup on objects + - inline markup made easier to identify + +- simplify downstream parsing + +*** objects +**** summary + +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| | | identified by | object notes | attributes | inline | embedded | special | +| | | | | | | appended | characters | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| para | heading | level markers | | | - italics | - endnotes | | +| | | at start of line | | | | - bibliography | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| | paragraph | delimited by two new lines | default object | - indent | - bold | - endnotes | | +| | | | [discard leading & | - bullet | - italics | - bibliography | | +| | | | newline whitespace] | | - underscore | | | +| | | | | | - strikethrough | | | +| | | | | | - superscript | | | +| | | | | | - subscript | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| block | | open and close tags | | | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| TODO | quote | | | - language? | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| TODO | group | | - inline markup applied | - language? | as paragraph | - endnotes | | +| | | | - [discard leading & | | | - bibliography | | +| | | | newline whitespace] | | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| TODO | block | | - inline markup applied | | as paragraph | - endnotes | | +| | | | - whitespace indentation | | | - bibliography | | +| | | | & newlines | | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| | poem / verse | open and close tags | verse is the object | | | - endnotes | | +| | | | - inline markup applied | | | - bibliography | | +| | | (for poem) | - whitespace indentation | | | | | +| | | | & newlines | | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| | code | | - contents untouched | - syntax | | | | +| | | | - whitespace indentation | - numbered | | | | +| | | | & newlines | | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| +| | table | | | - column width | | | | +| | | | | - heading row | | | | +|-------+--------------+----------------------------+--------------------------+----------------+-----------------+----------------+------------| + +**** ocn + +|-------------+----------------------+-----------------------+--------------+---| +| *objects | section / part | ocn described | how used* | | +|-------------+----------------------+-----------------------+--------------+---| +| regular ocn | | | | | +|-------------+----------------------+-----------------------+--------------+---| +| | body objects | seq. digit | anchor | | +| | | | visible | | +|-------------+----------------------+-----------------------+--------------+---| +| | glossary objects | seq. digit | anchor | | +| | | | not-visible | | +| | | | (for search) | | +|-------------+----------------------+-----------------------+--------------+---| +| | bibliography objects | seq. digit | anchor | | +| | | | not-visible | | +| | | | (for search) | | +|-------------+----------------------+-----------------------+--------------+---| +| special ocn | | | | | +|-------------+----------------------+-----------------------+--------------+---| +| | non-substantive text | x char + seq. digit | anchor | | +| | | | not-visible | | +| | | | (for search) | | +|-------------+----------------------+-----------------------+--------------+---| +| | book index | i char + seq. digit | anchor | | +| | | | not-visible | | +| | | | (for search) | | +|-------------+----------------------+-----------------------+--------------+---| +| exceptions | | | | | +|-------------+----------------------+-----------------------+--------------+---| +| | endnotes | ocn of parent object | anchor | | +| | | + footnote seq. digit | visible | | +|-------------+----------------------+-----------------------+--------------+---| + +** make config - _composite make_ + +work on composite make a unification of make instructions for each document run + +extract instructions from all config files, unify the make instructions and +provide the result as a single set of make instructions for each document parsed + +|----+---------------------------------+----------------------------------------+----------------+---+---| +| | make instruction source | | | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| +| 0. | unify the following as a single | take into account all the instructions | | | | +| | set of make instructions | provided below, provide interface | | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| +| 1. | config | local site specific | every document | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| +| 2. | document_make | to be applied to all documents | every document | | | +| | | (unless subsequently overridden) | | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| +| 3. | document header make | make instructions contained | per document | | | +| | | in document header | | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| +| 4. | command line instruction | make instruction passed | every document | | | +|----+---------------------------------+----------------------------------------+----------------+---+---| + +- local, site specific (site local instructions such as the site's url, cgi + location etc.) +- general, document_make config file (to be applied to all documents unless + overridden by document or command line instruction) +- each document header, make (the document header contains metadata and may + include make instructions for that document) + - make + - meta +- command line instruction, make (some make instructions may be passed through + the command line) diff --git a/src/sdp/ao/composite_make.d b/src/sdp/meta/composite_make.d index c9df4a8..dc28206 100644 --- a/src/sdp/ao/composite_make.d +++ b/src/sdp/meta/composite_make.d @@ -2,9 +2,9 @@ output hub<BR> check & generate output types requested +/ -module sdp.ao.composite_make; +module sdp.meta.composite_make; template compositeMkCnf() { - import sdp.ao; + import sdp.meta; import std.array; mixin SiSUrgxInit; string[] _substitutions; @@ -73,7 +73,7 @@ template compositeMkCnf() { check & generate output types requested +/ template compositeMkCnfAA() { - import sdp.ao; + import sdp.meta; import std.array; mixin SiSUrgxInit; string[] _substitutions; diff --git a/src/sdp/ao/conf_make_meta.d b/src/sdp/meta/conf_make_meta.d index 1d7d86d..5beeae2 100644 --- a/src/sdp/ao/conf_make_meta.d +++ b/src/sdp/meta/conf_make_meta.d @@ -8,7 +8,7 @@ converting the metadata and make instructions to a common json format used by program internally. Moved to associative array. +/ -module sdp.ao.conf_make_meta; +module sdp.meta.conf_make_meta; template docHeaderMakeAndMetaTupExtractAndConvertToAA() { import std.exception, @@ -20,9 +20,9 @@ template docHeaderMakeAndMetaTupExtractAndConvertToAA() { std.conv : to; import sdlang; import - sdp.ao.conf_make_meta_native, - sdp.ao.conf_make_meta_sdlang, - sdp.ao.rgx; + sdp.meta.conf_make_meta_native, + sdp.meta.conf_make_meta_sdlang, + sdp.meta.rgx; mixin SiSUrgxInit; mixin SiSUheaderExtractNative; mixin SiSUextractSDLang; diff --git a/src/sdp/ao/conf_make_meta_native.d b/src/sdp/meta/conf_make_meta_native.d index aae0b4d..fc7912f 100644 --- a/src/sdp/ao/conf_make_meta_native.d +++ b/src/sdp/meta/conf_make_meta_native.d @@ -2,7 +2,7 @@ native headers using<br>@title:<BR>:subtitle:<BR>type tags<BR> extract native/orig header return associative array +/ -module sdp.ao.conf_make_meta_native; +module sdp.meta.conf_make_meta_native; template SiSUheaderExtractNative() { import std.exception, @@ -14,8 +14,8 @@ template SiSUheaderExtractNative() { std.utf, std.conv : to; import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; struct HeaderDocMetadataAndMakeNativeToAA { mixin SiSUregisters; mixin SiSUrgxInitFlags; diff --git a/src/sdp/ao/conf_make_meta_sdlang.d b/src/sdp/meta/conf_make_meta_sdlang.d index f9fb17d..f4af643 100644 --- a/src/sdp/ao/conf_make_meta_sdlang.d +++ b/src/sdp/meta/conf_make_meta_sdlang.d @@ -2,7 +2,7 @@ sdlang headers<BR> extract sdlang header return sdlang +/ -module sdp.ao.conf_make_meta_sdlang; +module sdp.meta.conf_make_meta_sdlang; template SiSUextractSDLang() { import std.exception, @@ -14,8 +14,8 @@ template SiSUextractSDLang() { std.utf, std.conv : to; import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; struct extractSDL { mixin SiSUregisters; mixin SiSUrgxInit; diff --git a/src/sdp/ao/defaults.d b/src/sdp/meta/defaults.d index caee701..fb95e3a 100644 --- a/src/sdp/ao/defaults.d +++ b/src/sdp/meta/defaults.d @@ -1,7 +1,7 @@ /++ default settings +/ -module sdp.ao.defaults; +module sdp.meta.defaults; template SiSUregisters() { import std.algorithm, diff --git a/src/sdp/ao/doc_debugs.d b/src/sdp/meta/doc_debugs.d index 87a64f4..6d94b05 100644 --- a/src/sdp/ao/doc_debugs.d +++ b/src/sdp/meta/doc_debugs.d @@ -1,11 +1,11 @@ /++ output debugs +/ -module sdp.ao.doc_debugs; +module sdp.meta.doc_debugs; template SiSUdebugs() { import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; import std.algorithm, std.array, diff --git a/src/sdp/ao/abstraction.d b/src/sdp/meta/metadoc.d index b25f354..4174b67 100644 --- a/src/sdp/ao/abstraction.d +++ b/src/sdp/meta/metadoc.d @@ -1,22 +1,22 @@ -module sdp.ao.abstraction; +module sdp.meta.metadoc; template SiSUabstraction() { /+ sdp: sisu document parser, see http://sisudoc.org +/ - import sdp.ao; + import sdp.meta; import std.getopt, std.process; import - sdp.ao.abstraction_summary, - sdp.ao.abstract_doc_source, - sdp.ao.composite_make, - sdp.ao.conf_make_meta, - // sdp.ao.conf_make_meta_native, - sdp.ao.conf_make_meta_sdlang, - sdp.ao.defaults, - sdp.ao.doc_debugs, - sdp.ao.read_config_files, - sdp.ao.read_source_files, - sdp.ao.rgx, + sdp.meta.metadoc_summary, + sdp.meta.metadoc_from_src, + sdp.meta.composite_make, + sdp.meta.conf_make_meta, + // sdp.meta.conf_make_meta_native, + sdp.meta.conf_make_meta_sdlang, + sdp.meta.defaults, + sdp.meta.doc_debugs, + sdp.meta.read_config_files, + sdp.meta.read_source_files, + sdp.meta.rgx, sdp.output.hub, sdp.output.paths_source; mixin SiSUrgxInit; diff --git a/src/sdp/ao/abstract_doc_source.d b/src/sdp/meta/metadoc_from_src.d index f935df3..ab7f883 100644 --- a/src/sdp/ao/abstract_doc_source.d +++ b/src/sdp/meta/metadoc_from_src.d @@ -1,12 +1,12 @@ /++ document abstraction: abstraction of sisu markup for downstream processing - ao_abstract_doc_source.d + meta_metadoc_from_src.d +/ -module sdp.ao.abstract_doc_source; +module sdp.meta.metadoc_from_src; template SiSUdocAbstraction() { /+ ↓ abstraction imports +/ - import sdp.ao; + import sdp.meta; import std.algorithm, std.container, @@ -14,9 +14,9 @@ template SiSUdocAbstraction() { std.json, std.path; import - sdp.ao.defaults, - sdp.ao.object_setter, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.object_setter, + sdp.meta.rgx; /+ ↓ abstraction mixins +/ mixin ObjectSetter; mixin InternalMarkup; @@ -74,59 +74,64 @@ template SiSUdocAbstraction() { int[] dom_collapsed = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; int[] dom_collapsed_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; enum DomTags { none, open, close, close_and_open, open_still, } - void heading_ancestors(O)( - auto return ref O obj, - return ref string[] lv_ancestors, + auto obj_heading_ancestors(O)( + O obj, + string[] lv_ancestors_txt, ) { switch (obj.heading_lev_markup) { case 0: - lv_ancestors[0] = obj.text.to!string; + lv_ancestors_txt[0] = obj.text.to!string; foreach(k; 1..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 1: - lv_ancestors[1] = obj.text.to!string; + lv_ancestors_txt[1] = obj.text.to!string; foreach(k; 2..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 2: - lv_ancestors[2] = obj.text.to!string; + lv_ancestors_txt[2] = obj.text.to!string; foreach(k; 3..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 3: - lv_ancestors[3] = obj.text.to!string; + lv_ancestors_txt[3] = obj.text.to!string; foreach(k; 4..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 4: - lv_ancestors[4] = obj.text.to!string; + lv_ancestors_txt[4] = obj.text.to!string; foreach(k; 5..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 5: - lv_ancestors[5] = obj.text.to!string; + lv_ancestors_txt[5] = obj.text.to!string; foreach(k; 6..8) { - lv_ancestors[k] = ""; + lv_ancestors_txt[k] = ""; } goto default; case 6: - lv_ancestors[6] = obj.text.to!string; - lv_ancestors[7] = ""; + lv_ancestors_txt[6] = obj.text.to!string; + lv_ancestors_txt[7] = ""; goto default; case 7: - lv_ancestors[7] = obj.text.to!string; + lv_ancestors_txt[7] = obj.text.to!string; goto default; default: - obj.heading_ancestors_text = lv_ancestors.dup; + obj.heading_ancestors_text = lv_ancestors_txt.dup; } + return obj; } - auto dom_set_markup_tags(int[] dom, int lev) { + auto obj_dom_set_markup_tags(O)( + O obj, + int[] dom, + int lev + ) { foreach (i; 0 .. 8) { if (i < lev) { if (dom[i] == DomTags.open @@ -163,9 +168,14 @@ template SiSUdocAbstraction() { debug(dom_magic_numbers) { writeln("marked up: ", lev, ": ", dom); } - return dom; + obj.dom_markedup = dom.dup; + return obj; } - auto dom_set_collapsed_tags(int[] dom, int lev) { + auto obj_dom_set_collapsed_tags(O)( + O obj, + int[] dom, + int lev + ) { foreach (i; 0 .. 8) { if (i < lev) { if (dom[i] == DomTags.open @@ -202,7 +212,8 @@ template SiSUdocAbstraction() { debug(dom_magic_numbers) { writeln("collapsed: ", lev, ": ", dom); } - return dom; + obj.dom_collapsed = dom.dup; + return obj; } int ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); @@ -260,7 +271,7 @@ template SiSUdocAbstraction() { "start" : "", "end" : "" ]; - string[] lv_ancestors = [ "", "", "", "", "", "", "", "", ]; + string[] lv_ancestors_txt = [ "", "", "", "", "", "", "", "", ]; int[string] lv = [ "lv" : State.off, "h0" : State.off, @@ -322,6 +333,8 @@ template SiSUdocAbstraction() { comp_obj_heading_.parent_lev_markup = 0; comp_obj_heading_.ptr_html_segnames = html_segnames_ptr; comp_obj_heading_.anchor_tags = ["toc"]; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; auto toc_head = comp_obj_heading_; html_segnames_ptr_cntr++; the_table_of_contents_section = [ @@ -430,6 +443,8 @@ template SiSUdocAbstraction() { comp_obj_heading_.heading_lev_collapsed = 1; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 0, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 0, 0, 0, 0, 0, 0]; the_glossary_section ~= comp_obj_heading_; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.use = "backmatter"; @@ -444,6 +459,8 @@ template SiSUdocAbstraction() { comp_obj_heading_.heading_lev_collapsed = 2; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; comp_obj_heading_.anchor_tags = ["glossary"]; the_glossary_section ~= comp_obj_heading_; } else { @@ -499,6 +516,8 @@ template SiSUdocAbstraction() { comp_obj_heading_.heading_lev_collapsed = 1; comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 0, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 0, 0, 0, 0, 0, 0]; the_blurb_section ~= comp_obj_heading_; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.use = "backmatter"; @@ -514,6 +533,8 @@ template SiSUdocAbstraction() { comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; comp_obj_heading_.anchor_tags = ["blurb"]; + comp_obj_heading_.dom_markedup = [ 1, 1, 0, 0, 1, 0, 0, 0]; + comp_obj_heading_.dom_collapsed = [ 1, 1, 1, 0, 0, 0, 0, 0]; the_blurb_section ~= comp_obj_heading_; } else if (line.matchFirst(rgx.heading) && (opt_action["backmatter"] && opt_action["section_blurb"])) { @@ -790,7 +811,7 @@ template SiSUdocAbstraction() { obj_cite_number, // int cntr, // int heading_ptr, // int - lv_ancestors, // string[] + lv_ancestors_txt, // string[] an_object["is"], // string html_segnames_ptr, // int substantive_object_and_anchor_tags_tuple[sObj.notes_reg], @@ -1288,19 +1309,21 @@ template SiSUdocAbstraction() { if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } if (the_table_of_contents_section["scroll"].length > 1) { + /+ scroll +/ dom_markedup_buffer = dom_markedup.dup; dom_collapsed_buffer = dom_collapsed.dup; foreach (ref obj; the_table_of_contents_section["scroll"]) { @@ -1312,18 +1335,20 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } + /+ seg +/ dom_markedup = dom_markedup_buffer.dup; dom_collapsed = dom_collapsed_buffer.dup; foreach (ref obj; the_table_of_contents_section["seg"]) { @@ -1342,12 +1367,10 @@ template SiSUdocAbstraction() { || (opt_action["html-scroll"]) || (opt_action["html-seg"]) || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } @@ -1369,16 +1392,17 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "para") { _images ~= extract_images(obj.text); } @@ -1406,16 +1430,17 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } @@ -1436,16 +1461,17 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } @@ -1466,21 +1492,23 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } /+ optional only one 1~ level +/ if (the_bookindex_section["scroll"].length > 1) { + /+ scroll +/ dom_markedup_buffer = dom_markedup.dup; dom_collapsed_buffer = dom_collapsed.dup; foreach (ref obj; the_bookindex_section["scroll"]) { @@ -1497,18 +1525,20 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } + /+ seg +/ dom_markedup = dom_markedup_buffer.dup; dom_collapsed = dom_collapsed_buffer.dup; foreach (ref obj; the_bookindex_section["seg"]) { @@ -1526,16 +1556,17 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } } @@ -1556,42 +1587,47 @@ template SiSUdocAbstraction() { assert(obj.segment_anchor_tag == html_segnames[obj.ptr_html_segnames]); } } + /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) || (opt_action["html-seg"]) - || (opt_action["epub"])) { - obj.dom_markedup = - dom_set_markup_tags(dom_markedup, obj.heading_lev_markup).dup; - obj.dom_collapsed = - dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; + || (opt_action["epub"]) + || (opt_action["sqlite"]) + || (opt_action["postgresql"])) { + obj = obj_dom_set_markup_tags(obj, dom_markedup, obj.heading_lev_markup); + obj = obj_dom_set_collapsed_tags(obj, dom_collapsed, obj.heading_lev_collapsed); } - heading_ancestors(obj, lv_ancestors); + obj = obj_heading_ancestors(obj, lv_ancestors_txt); } } + } /+ TODO - note create/insert heading object sole purpose eof close all open tags sort out: - obj.dom_markedup = dom_markedup; - obj.dom_collapsed = dom_collapsed; +/ - dom_markedup = dom_set_markup_tags(dom_markedup, 0); - dom_collapsed = dom_set_collapsed_tags(dom_collapsed, 0); - comp_obj_heading_ = comp_obj_heading_.init; - comp_obj_heading_.use = "empty"; - comp_obj_heading_.is_of = "para"; - comp_obj_heading_.is_a = "heading"; - comp_obj_heading_.ocn = 0; - comp_obj_para.obj_cite_number = ""; - comp_obj_heading_.segment_anchor_tag = ""; - comp_obj_heading_.marked_up_level = ""; - comp_obj_heading_.heading_lev_markup = 9; - comp_obj_heading_.heading_lev_collapsed = 9; - comp_obj_heading_.parent_ocn = 0; - comp_obj_heading_.parent_lev_markup = 0; - comp_obj_heading_.dom_markedup = dom_markedup.dup; - comp_obj_heading_.dom_collapsed = dom_collapsed.dup; - the_dom_tail_section ~= comp_obj_heading_; - } + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "empty"; + comp_obj_heading_.is_of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.ocn = 0; + comp_obj_para.obj_cite_number = ""; + comp_obj_heading_.segment_anchor_tag = ""; + comp_obj_heading_.marked_up_level = ""; + comp_obj_heading_.heading_lev_markup = 9; + comp_obj_heading_.heading_lev_collapsed = 9; + comp_obj_heading_.parent_ocn = 0; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.dom_markedup = dom_markedup.dup; + comp_obj_heading_.dom_collapsed = dom_collapsed.dup; + obj_dom_set_markup_tags(comp_obj_heading_, dom_markedup, 0); + obj_dom_set_collapsed_tags(comp_obj_heading_, dom_collapsed, 0); + obj_heading_ancestors(comp_obj_heading_, lv_ancestors_txt); + comp_obj_heading_ = obj_dom_set_markup_tags(comp_obj_heading_, dom_markedup, 0); + comp_obj_heading_ = obj_dom_set_collapsed_tags(comp_obj_heading_, dom_collapsed, 0); + comp_obj_heading_ = obj_heading_ancestors(comp_obj_heading_, lv_ancestors_txt); + the_dom_tail_section ~= comp_obj_heading_; auto document_the = [ "head": the_document_head_section, "toc_seg": the_table_of_contents_section["seg"], @@ -1610,7 +1646,8 @@ template SiSUdocAbstraction() { ]; string[][string] document_section_keys_sequenced = [ "seg": ["head", "toc_seg", "body",], - "scroll": ["head", "toc_scroll", "body",] + "scroll": ["head", "toc_scroll", "body",], + "sql": ["head", "body",] ]; if (document_the["endnotes"].length > 1) { document_section_keys_sequenced["seg"] ~= "endnotes"; @@ -1619,13 +1656,16 @@ template SiSUdocAbstraction() { if (document_the["glossary"].length > 1) { document_section_keys_sequenced["seg"] ~= "glossary"; document_section_keys_sequenced["scroll"] ~= "glossary"; + document_section_keys_sequenced["sql"] ~= "glossary"; } if (document_the["bibliography"].length > 1) { document_section_keys_sequenced["seg"] ~= "bibliography"; document_section_keys_sequenced["scroll"] ~= "bibliography"; + document_section_keys_sequenced["sql"] ~= "bibliography"; } if (document_the["bookindex_seg"].length > 1) { document_section_keys_sequenced["seg"] ~= "bookindex_seg"; + document_section_keys_sequenced["sql"] ~= "bookindex_seg"; } if (document_the["bookindex_scroll"].length > 1) { document_section_keys_sequenced["scroll"] ~= "bookindex_scroll"; @@ -1633,6 +1673,7 @@ template SiSUdocAbstraction() { if (document_the["blurb"].length > 1) { document_section_keys_sequenced["seg"] ~= "blurb"; document_section_keys_sequenced["scroll"] ~= "blurb"; + document_section_keys_sequenced["sql"] ~= "blurb"; } if ((opt_action["html"]) || (opt_action["html-scroll"]) @@ -5142,7 +5183,7 @@ template SiSUdocAbstraction() { N obj_cite_number_, C cntr_, P ptr_, - LA lv_ancestors, + LA lv_ancestors_txt, I is_, PSn html_segnames_ptr, fNr flag_notes_reg, @@ -5159,7 +5200,7 @@ template SiSUdocAbstraction() { static assert(is(typeof(obj_cite_number_) == int)); static assert(is(typeof(cntr_) == int)); static assert(is(typeof(ptr_) == int)); - static assert(is(typeof(lv_ancestors) == string[])); + static assert(is(typeof(lv_ancestors_txt) == string[])); static assert(is(typeof(is_) == string)); static assert(is(typeof(html_segnames_ptr) == int)); } @@ -5271,7 +5312,7 @@ template SiSUdocAbstraction() { _comp_obj_heading_.heading_lev_collapsed = (!(lev_collapsed_number.empty) ? lev_collapsed_number.to!int : 0); _comp_obj_heading_.parent_ocn = p_["obj_cite_number"]; _comp_obj_heading_.parent_lev_markup = p_["lev_markup_number"]; - _comp_obj_heading_.heading_ancestors_text = lv_ancestors; + _comp_obj_heading_.heading_ancestors_text = lv_ancestors_txt; _comp_obj_heading_.ptr_doc_object = cntr_; _comp_obj_heading_.ptr_html_segnames = ((lev_markup_number == "4") ? html_segnames_ptr : 0); _comp_obj_heading_.ptr_heading = ptr_; @@ -5540,6 +5581,9 @@ template docSectKeysSeq() { auto scroll() { return document_section_keys_sequenced["scroll"]; } + auto sql() { + return document_section_keys_sequenced["sql"]; + } } return doc_sect_keys_seq(); } diff --git a/src/sdp/ao/abstraction_summary.d b/src/sdp/meta/metadoc_summary.d index 2b909c7..e2b85b8 100644 --- a/src/sdp/ao/abstraction_summary.d +++ b/src/sdp/meta/metadoc_summary.d @@ -1,12 +1,12 @@ -module sdp.ao.abstraction_summary; +module sdp.meta.metadoc_summary; template SiSUabstractionSummary() { auto SiSUabstractionSummary(S,T)( auto return ref const S doc_abstraction, auto return ref T doc_matters, ) { import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; import std.array, std.exception, diff --git a/src/sdp/ao/object_setter.d b/src/sdp/meta/object_setter.d index b05ac98..385c3d2 100644 --- a/src/sdp/ao/object_setter.d +++ b/src/sdp/meta/object_setter.d @@ -1,9 +1,9 @@ /++ object setter: setting of sisu objects for downstream processing - ao_object_setter.d + meta_object_setter.d +/ -module sdp.ao.object_setter; +module sdp.meta.object_setter; template ObjectSetter() { /+ structs +/ struct HeadingAttrib { @@ -48,6 +48,7 @@ template ObjectSetter() { int heading_lev_collapsed = 9; int[] dom_markedup = [ 0, 0, 0, 0, 0, 0, 0, 0,]; int[] dom_collapsed = [ 0, 0, 0, 0, 0, 0, 0, 0,]; + int[] heading_ancestors = [ 0, 0, 0, 0, 0, 0, 0, 0,]; string[] heading_ancestors_text = [ "", "", "", "", "", "", "", "", ]; string[] lev4_subtoc = []; int heading_array_ptr = 0; diff --git a/src/sdp/ao/package.d b/src/sdp/meta/package.d index 63b4f3e..fcc6b13 100644 --- a/src/sdp/ao/package.d +++ b/src/sdp/meta/package.d @@ -1,7 +1,7 @@ -module sdp.ao; +module sdp.meta; public import - sdp.ao.defaults, - sdp.ao.rgx; + sdp.meta.defaults, + sdp.meta.rgx; /+ std +/ public import std.array, diff --git a/src/sdp/ao/read_config_files.d b/src/sdp/meta/read_config_files.d index 8f525f3..2410316 100644 --- a/src/sdp/ao/read_config_files.d +++ b/src/sdp/meta/read_config_files.d @@ -1,12 +1,12 @@ /++ read configuration files<BR> - read config files<BR> - ao_config_files.d + meta_config_files.d +/ -module sdp.ao.read_config_files; +module sdp.meta.read_config_files; template configIn() { import - sdp.ao, + sdp.meta, std.file, std.path; final string configIn(C,E)(C conf_sdl, E env) { @@ -49,7 +49,7 @@ template configIn() { template ConfigSDLang() { import sdlang; import - sdp.ao, + sdp.meta, std.file, std.path; auto ConfigSDLang(string configuration, string conf_sdl_filename) { @@ -68,7 +68,7 @@ template ConfigSDLang() { +/ template configRead() { import - sdp.ao, + sdp.meta, std.file, std.path; diff --git a/src/sdp/ao/read_source_files.d b/src/sdp/meta/read_source_files.d index db20cfd..60f0777 100644 --- a/src/sdp/ao/read_source_files.d +++ b/src/sdp/meta/read_source_files.d @@ -1,14 +1,14 @@ /++ - module ao_read_source_files;<BR> + module meta_read_source_files;<BR> - open markup files<BR> - if master file scan for addional files to import/insert +/ -module sdp.ao.read_source_files; +module sdp.meta.read_source_files; template SiSUrawMarkupContent() { import - sdp.ao.rgx; + sdp.meta.rgx; import - sdp.ao, + sdp.meta, std.file, std.path; mixin SiSUrgxInit; @@ -128,7 +128,7 @@ template SiSUrawMarkupContent() { } } struct Inserts { - import sdp.ao.defaults; + import sdp.meta.defaults; auto scan_subdoc_source( char[][] markup_sourcefile_insert_content, string fn_src diff --git a/src/sdp/ao/rgx.d b/src/sdp/meta/rgx.d index 595087d..854e9cc 100644 --- a/src/sdp/ao/rgx.d +++ b/src/sdp/meta/rgx.d @@ -1,9 +1,9 @@ /++ regex: regular expressions used in sisu document parser +/ -module sdp.ao.rgx; +module sdp.meta.rgx; template SiSUrgxInit() { - import sdp.ao.defaults; + import sdp.meta.defaults; struct Rgx { /+ misc +/ static true_dollar = ctRegex!(`\$`, "gm"); diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d index 3edcb67..bf88b54 100644 --- a/src/sdp/output/paths_output.d +++ b/src/sdp/output/paths_output.d @@ -6,7 +6,7 @@ import std.array, std.path, std.regex, std.stdio; -import sdp.ao.rgx; +import sdp.meta.rgx; template SiSUpathsSisupod() { mixin SiSUrgxInit; auto rgx = Rgx(); diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d index 80e2c1a..d7b326f 100644 --- a/src/sdp/output/paths_source.d +++ b/src/sdp/output/paths_source.d @@ -1,14 +1,14 @@ /++ read configuration files<BR> - read config files<BR> - ao_config_files.d + meta_config_files.d +/ module sdp.output.paths_source; import std.array, std.path, std.regex, std.stdio; -import sdp.ao.rgx; +import sdp.meta.rgx; template SiSUpathsSRC() { mixin SiSUrgxInit; auto rgx = Rgx(); diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d index 0b90096..1abf462 100755 --- a/src/sdp/sdp.d +++ b/src/sdp/sdp.d @@ -7,24 +7,24 @@ module sdp.sisu_document_parser; import sdp.conf.compile_time_info, - sdp.ao.abstraction; + sdp.meta.metadoc; /+ sdp: sisu document parser, see http://sisudoc.org +/ -import sdp.ao; +import sdp.meta; import std.getopt, std.process; import - sdp.ao.abstraction_summary, - sdp.ao.abstract_doc_source, - sdp.ao.composite_make, - sdp.ao.conf_make_meta, - // sdp.ao.conf_make_meta_native, - sdp.ao.conf_make_meta_sdlang, - sdp.ao.defaults, - sdp.ao.doc_debugs, - sdp.ao.read_config_files, - sdp.ao.read_source_files, - sdp.ao.rgx, + sdp.meta.metadoc_summary, + sdp.meta.metadoc_from_src, + sdp.meta.composite_make, + sdp.meta.conf_make_meta, + // sdp.meta.conf_make_meta_native, + sdp.meta.conf_make_meta_sdlang, + sdp.meta.defaults, + sdp.meta.doc_debugs, + sdp.meta.read_config_files, + sdp.meta.read_source_files, + sdp.meta.rgx, sdp.output.hub, sdp.output.paths_source; mixin(import("version.txt")); diff --git a/views/version.txt b/views/version.txt index 44ecfb4..07683c2 100644 --- a/views/version.txt +++ b/views/version.txt @@ -4,4 +4,4 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 17, 0); +enum ver = Version(0, 18, 0); |