diff options
author | Ralph Amissah <ralph@amissah.com> | 2017-03-14 12:25:23 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 |
commit | 1eba4830ee85784dfe44e56be9508151349b7e4e (patch) | |
tree | f66b538b5539eba10155e2a627f625f06a000a59 | |
parent | work on outputs (diff) |
org files minor touches
-rw-r--r-- | org/ao_doc_abstraction.org | 922 | ||||
-rw-r--r-- | org/ao_read_source_files.org | 2 | ||||
-rw-r--r-- | org/defaults.org | 66 | ||||
-rw-r--r-- | org/output.org | 457 | ||||
-rw-r--r-- | src/sdp/ao_abstract_doc_source.d | 621 | ||||
-rw-r--r-- | src/sdp/ao_defaults.d | 62 | ||||
-rw-r--r-- | src/sdp/ao_read_source_files.d | 2 | ||||
-rw-r--r-- | src/sdp/ao_rgx.d | 2 | ||||
-rw-r--r-- | src/sdp/output_html.d | 455 | ||||
-rw-r--r-- | src/sdp/output_xhtmls.d | 2 |
10 files changed, 927 insertions, 1664 deletions
diff --git a/org/ao_doc_abstraction.org b/org/ao_doc_abstraction.org index 0074e1c..2188e94 100644 --- a/org/ao_doc_abstraction.org +++ b/org/ao_doc_abstraction.org @@ -13,6 +13,79 @@ #+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 +** 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 :abstract:process: Process markup document, create document abstraction. @@ -39,7 +112,7 @@ template SiSUdocAbstraction() { Opt opt_action_bool, ) { auto rgx = Rgx(); - debug(asserts){ + debug(asserts) { static assert(is(typeof(markup_sourcefile_content) == char[][])); static assert(is(typeof(dochead_make_aa) == string[string][string])); static assert(is(typeof(dochead_meta_aa) == string[string][string])); @@ -58,6 +131,7 @@ template SiSUdocAbstraction() { } else if (!matchFirst(line, rgx.skip_from_regular_parse)) { /+ object other than "code block" object (includes regular text paragraph, headings & blocks other than code) +/ + /+ heading, glossary, blurb, poem, group, block, quote, table +/ <<abs_in_loop_body_non_code_obj>> } else { /+ not within a block group +/ @@ -91,9 +165,9 @@ template SiSUdocAbstraction() { <<abs_functions_block_code>> <<abs_functions_block_biblio>> // <<abs_functions_block_glossary>> - <<abs_functions_block_poem>> <<abs_functions_block_group>> <<abs_functions_block_block>> + <<abs_functions_block_poem>> <<abs_functions_block_quote>> <<abs_functions_block_table>> <<abs_functions_block_line_status_empty>> @@ -135,7 +209,7 @@ template SiSUdocAbstraction() { } /+ ← closed: template SiSUdocAbstraction +/ #+END_SRC -** 1. _pre loop processing_ :pre: +** 1. _pre loop processing_ :pre: *** imports :imports: [[./ao_defaults.org][ao_defaults]] @@ -516,7 +590,7 @@ string[][string] lev4_subtoc; string[] html_segnames=["toc"]; #+END_SRC -** 2. _loop: process document body_ [+6] :loop: +** 2. _loop: process document body_ [+6] :loop: *** loop scope :scope: #+name: abs_in_loop_body_00 @@ -558,7 +632,7 @@ if (!line.empty) { #+END_SRC *** [#A] separate _code blocks_ from _other markup text_ [+5] -**** code blocks :block:code: +**** _code blocks_ :block:code: #+name: abs_in_loop_body_00_code_block #+BEGIN_SRC d @@ -567,9 +641,9 @@ _code_block_(line, an_object, type); continue; #+END_SRC -**** non code objects (other blocks or regular text) [+4] :non_code: +**** _non code objects_ (other blocks or regular text) [+4] :non_code: ***** in section (biblio, glossary, blurb) +(block group)+ [+1] :block:active: -****** within section: biblio :biblio: +****** in section: biblio :biblio: #+name: abs_in_loop_body_non_code_obj #+BEGIN_SRC d @@ -592,7 +666,7 @@ if ((matchFirst(line, rgx.heading_biblio) continue; #+END_SRC -****** within section: glossary :glossary: +****** in section: glossary :glossary: if there is a glossary section you need to: - extract it @@ -674,7 +748,7 @@ if there is a glossary section you need to: continue; #+END_SRC -****** within section: blurb :blurb: +****** in section: blurb :blurb: if there is a blurb section you need to: - extract it @@ -772,17 +846,7 @@ if there is a blurb section you need to: #+END_SRC ***** in blocks [+1] :block:active: -****** within block: poem :poem: - -#+name: abs_in_loop_body_non_code_obj -#+BEGIN_SRC d -} else if (type["poem"] == TriState.on) { - /+ within block object: poem +/ - _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa); - continue; -#+END_SRC - -****** within block: group :group: +****** in block: group :group: #+name: abs_in_loop_body_non_code_obj #+BEGIN_SRC d @@ -793,7 +857,7 @@ if there is a blurb section you need to: continue; #+END_SRC -****** within block: block :block: +****** in block: block :block: #+name: abs_in_loop_body_non_code_obj #+BEGIN_SRC d @@ -803,7 +867,17 @@ if there is a blurb section you need to: continue; #+END_SRC -****** within block: quote :quote: +****** in block: poem :poem: + +#+name: abs_in_loop_body_non_code_obj +#+BEGIN_SRC d +} else if (type["poem"] == TriState.on) { + /+ within block object: poem +/ + _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa); + continue; +#+END_SRC + +****** in block: quote :quote: #+name: abs_in_loop_body_non_code_obj #+BEGIN_SRC d @@ -813,7 +887,7 @@ if there is a blurb section you need to: continue; #+END_SRC -****** within block: table :table: +****** in block: table :table: #+name: abs_in_loop_body_non_code_obj #+BEGIN_SRC d @@ -836,7 +910,7 @@ assert( assertions_flag_types_block_status_none_or_closed(type); #+END_SRC -****** block open +****** catch misc +block open+ #+name: abs_in_loop_body_open_block_obj #+BEGIN_SRC d @@ -1104,7 +1178,8 @@ if ((type["heading"] == State.on) #+name: abs_in_loop_body_not_block_obj_line_empty #+BEGIN_SRC d -} else if ((type["para"] == State.on) && (line_occur["para"] > State.off)) { +} else if ((type["para"] == State.on) +&& (line_occur["para"] > State.off)) { /+ paragraph object (current line empty) +/ obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = @@ -1164,10 +1239,9 @@ if ((type["heading"] == State.on) /+ unless (the_document_body_section.length == 0) ? +/ if (the_document_body_section.length > 0) { if (((the_document_body_section[$-1].is_a == "para") - || (the_document_body_section[$-1].is_a == "heading") - || (the_document_body_section[$-1].is_a == "group")) - && (the_document_body_section.length > previous_length) -) { + || (the_document_body_section[$-1].is_a == "heading") + || (the_document_body_section[$-1].is_a == "group")) + && (the_document_body_section.length > previous_length)) { if ((the_document_body_section[$-1].is_a == "heading") && (the_document_body_section[$-1].heading_lev_markup < 5)) { type["biblio_section"] = State.off; @@ -1191,6 +1265,8 @@ if (the_document_body_section.length > 0) { #+END_SRC ** 3. _post main-loop processing_ :post: +*** misc + /+ Backmatter: - endnotes @@ -1585,7 +1661,7 @@ the_document_head_section ~= the_document_body_section[0]; the_document_body_section=the_document_body_section[1..$]; #+END_SRC -*** TODO minor loops :post: +*** minor loops :post: **** 1. loop: backmatter loop up to lev4: html_segnames, set backmatter pointers could optimise by @@ -1978,8 +2054,8 @@ if (the_blurb_section.length > 1) { } #+END_SRC -** 4. _return document tuple_ :post: -*** _the document_ :document: +** 4. _return document tuple_ :post: +*** _the document_ :document: #+name: abs_post #+BEGIN_SRC d @@ -2097,7 +2173,7 @@ functions used in document abstraction #+name: abs_functions_object_reset #+BEGIN_SRC d auto object_reset(O)(ref O an_object) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(an_object) == string[string])); } an_object.remove("body_nugget"); @@ -2117,7 +2193,7 @@ auto _common_reset_(L,O,T)( return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2138,7 +2214,7 @@ void _check_ocn_status_(L,T)( L line, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(type) == int[string])); } @@ -2187,7 +2263,7 @@ void _check_ocn_status_(L,T)( *** block :block: **** block start (open) block :start: -***** function open for block starts +***** { block starts function #+name: abs_functions_block #+BEGIN_SRC d @@ -2196,7 +2272,7 @@ void _start_block_(L,T,N)( return ref T type, N obj_cite_number_poem ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(type) == int[string])); static assert(is(typeof(obj_cite_number_poem) == string[string])); @@ -2274,8 +2350,8 @@ void _start_block_(L,T,N)( line ); } - type["blocks"] = TriState.on; - type["table"] = TriState.on; + type["blocks"] = TriState.on; + type["table"] = TriState.on; type["curly_table"] = TriState.on; #+END_SRC @@ -2348,13 +2424,13 @@ void _start_block_(L,T,N)( line ); } - type["blocks"] = TriState.on; - type["table"] = TriState.on; + type["blocks"] = TriState.on; + type["table"] = TriState.on; type["tic_table"] = TriState.on; } #+END_SRC -***** function close for block starts +***** } #+name: abs_functions_block #+BEGIN_SRC d @@ -2362,7 +2438,7 @@ void _start_block_(L,T,N)( #+END_SRC **** block continue (an open block) :continue: -***** code block (special status, deal with first) :code: +***** _code block_ (special status, deal with first) :code: #+name: abs_functions_block_code #+BEGIN_SRC d @@ -2371,7 +2447,7 @@ void _code_block_(L,O,T)( return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2415,7 +2491,7 @@ void _code_block_(L,O,T)( #+name: abs_functions_block_biblio #+BEGIN_SRC d final string biblio_tag_map(A)(A abr) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(abr) == string)); } auto btm = [ @@ -2443,7 +2519,7 @@ final string biblio_tag_map(A)(A abr) { #+name: none #+BEGIN_SRC d final string biblio_tag_map_(A)(A abr) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(abr) == string)); } string name; @@ -2626,7 +2702,101 @@ void _biblio_block_( } #+END_SRC -***** TODO poem block, verse objects :poem:verse: +***** group block :group: + +#+name: abs_functions_block_group +#+BEGIN_SRC d +void _group_block_(L,O,T)( + return ref L line, + return ref O an_object, + return ref T type +) { + debug(asserts) { + static assert(is(typeof(line) == char[])); + static assert(is(typeof(an_object) == string[string])); + static assert(is(typeof(type) == int[string])); + } + auto rgx = Rgx(); + if (type["curly_group"] == State.on) { + if (matchFirst(line, rgx.block_curly_group_close)) { + debug(group) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["group"] = TriState.closing; + type["curly_group"] = TriState.off; + } else { + debug(group) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) + } + } else if (type["tic_group"] == TriState.on) { + if (matchFirst(line, rgx.block_tic_close)) { + debug(group) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["group"] = TriState.closing; + type["tic_group"] = TriState.off; + } else { + debug(group) { // group + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) + } + } +} +#+END_SRC + +***** block block :block: + +#+name: abs_functions_block_block +#+BEGIN_SRC d +void _block_block_(L,O,T)( + return ref L line, + return ref O an_object, + return ref T type +) { + debug(asserts) { + static assert(is(typeof(line) == char[])); + static assert(is(typeof(an_object) == string[string])); + static assert(is(typeof(type) == int[string])); + } + auto rgx = Rgx(); + if (type["curly_block"] == TriState.on) { + if (matchFirst(line, rgx.block_curly_block_close)) { + debug(block) { // block (curly) close + writeln(line); + } + type["blocks"] = TriState.closing; + type["block"] = TriState.closing; + type["curly_block"] = TriState.off; + } else { + debug(block) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) + } + } else if (type["tic_block"] == TriState.on) { + if (matchFirst(line, rgx.block_tic_close)) { + debug(block) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["block"] = TriState.closing; + type["tic_block"] = TriState.off; + } else { + debug(block) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) + } + } +} +#+END_SRC + +***** poem block, verse objects :poem:verse: why extra object stuff only in poem/verse? @@ -2640,7 +2810,7 @@ void _poem_block_(L,O,T,C,N,Ma)( N obj_cite_number_poem, Ma dochead_make_aa, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2848,100 +3018,6 @@ void _poem_block_(L,O,T,C,N,Ma)( } #+END_SRC -***** group block :group: - -#+name: abs_functions_block_group -#+BEGIN_SRC d -void _group_block_(L,O,T)( - return ref L line, - return ref O an_object, - return ref T type -) { - debug(asserts){ - static assert(is(typeof(line) == char[])); - static assert(is(typeof(an_object) == string[string])); - static assert(is(typeof(type) == int[string])); - } - auto rgx = Rgx(); - if (type["curly_group"] == State.on) { - if (matchFirst(line, rgx.block_curly_group_close)) { - debug(group) { // group (curly) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["group"] = TriState.closing; - type["curly_group"] = TriState.off; - } else { - debug(group) { // group - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) - } - } else if (type["tic_group"] == TriState.on) { - if (matchFirst(line, rgx.block_tic_close)) { - debug(group) { // group (tic) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["group"] = TriState.closing; - type["tic_group"] = TriState.off; - } else { - debug(group) { // group - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) - } - } -} -#+END_SRC - -***** block block :block: - -#+name: abs_functions_block_block -#+BEGIN_SRC d -void _block_block_(L,O,T)( - return ref L line, - return ref O an_object, - return ref T type -) { - debug(asserts){ - static assert(is(typeof(line) == char[])); - static assert(is(typeof(an_object) == string[string])); - static assert(is(typeof(type) == int[string])); - } - auto rgx = Rgx(); - if (type["curly_block"] == TriState.on) { - if (matchFirst(line, rgx.block_curly_block_close)) { - debug(block) { // block (curly) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["block"] = TriState.closing; - type["curly_block"] = TriState.off; - } else { - debug(block) { // block - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) - } - } else if (type["tic_block"] == TriState.on) { - if (matchFirst(line, rgx.block_tic_close)) { - debug(block) { // block (tic) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["block"] = TriState.closing; - type["tic_block"] = TriState.off; - } else { - debug(block) { // block - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) - } - } -} -#+END_SRC - ***** quote block :quote: #+name: abs_functions_block_quote @@ -2951,7 +3027,7 @@ void _quote_block_(L,O,T)( return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2962,8 +3038,8 @@ void _quote_block_(L,O,T)( debug(quote) { // quote (curly) close writeln(line); } - type["blocks"] = TriState.closing; - type["quote"] = TriState.closing; + type["blocks"] = TriState.closing; + type["quote"] = TriState.closing; type["curly_quote"] = TriState.off; } else { debug(quote) { @@ -2976,8 +3052,8 @@ void _quote_block_(L,O,T)( debug(quote) { // quote (tic) close writeln(line); } - type["blocks"] = TriState.closing; - type["quote"] = TriState.closing; + type["blocks"] = TriState.closing; + type["quote"] = TriState.closing; type["tic_quote"] = TriState.off; } else { debug(quote) { @@ -2998,7 +3074,7 @@ void _table_block_(L,O,T)( return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -3038,11 +3114,13 @@ void _table_block_(L,O,T)( **** block end (close an open block): line empty, block flag :close: +***** { line empty, make block + #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d void _block_flag_line_empty_(B)( - B bookindex_extract_hash, - char[] line, + B bookindex_extract_hash, + char[] line, return ref string[string] an_object, return ref ObjGenericComposite[] the_document_body_section, return ref string[][string][string] bookindex_unordered_hashes, @@ -3063,14 +3141,24 @@ void _block_flag_line_empty_(B)( "code block status: closed" ); assertions_flag_types_block_status_none_or_closed(type); - if (type["code"] == TriState.closing) { +#+END_SRC + +***** make: group block + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + if (type["group"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "code"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "group"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -3084,57 +3172,39 @@ void _block_flag_line_empty_(B)( obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; - comp_obj_code = comp_obj_code.init; - comp_obj_code.use = "body"; - comp_obj_code.is_of = "block"; - comp_obj_code.is_a = "code"; - comp_obj_code.ocn = obj_cite_number; - comp_obj_code.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - comp_obj_code.text = an_object["substantive"]; - comp_obj_code.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; - comp_obj_code.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; - comp_obj_code.inline_links = substantive_obj_misc_tuple[sObj.links]; - the_document_body_section ~= comp_obj_code; + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "body"; + comp_obj_block.is_of = "block"; + comp_obj_block.is_a = "group"; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + comp_obj_block.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; + comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; + comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; + the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["group"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["code"] = TriState.off; - } else if (type["poem"] == TriState.closing) { +#+END_SRC + +***** make: block + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + } else if (type["block"] == TriState.closing) { + obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "verse"; // check also - auto comp_obj_location = - node_construct.node_location_emitter( - content_non_header, - segment_anchor_tag_that_object_belongs_to, + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], obj_cite_number, - cntr, - heading_ptr-1, - an_object["is"] + segment_anchor_tag_that_object_belongs_to ); - comp_obj_poem_ocn = comp_obj_poem_ocn.init; - comp_obj_poem_ocn.use = "body"; - comp_obj_poem_ocn.is_of = "block"; - comp_obj_poem_ocn.is_a = "poem"; - comp_obj_poem_ocn.ocn = obj_cite_number; - comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); - comp_obj_poem_ocn.text = ""; // an_object["substantive"]; - the_document_body_section ~= comp_obj_poem_ocn; - object_reset(an_object); - processing.remove("verse"); - type["blocks"] = TriState.off; - type["poem"] = TriState.off; - } else if (type["table"] == TriState.closing) { - obj_cite_number = - ocn_emit(type["ocn_status"]); - an_object["bookindex_nugget"] = - ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; - bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "table"; + an_object["is"] = "block"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -3143,7 +3213,7 @@ void _block_flag_line_empty_(B)( cntr, heading_ptr-1, an_object["is"] - ); + ); auto substantive_obj_misc_tuple = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; @@ -3151,7 +3221,7 @@ void _block_flag_line_empty_(B)( comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "table"; + comp_obj_block.is_a = "block"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -3159,19 +3229,29 @@ void _block_flag_line_empty_(B)( comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["block"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["table"] = TriState.off; - } else if (type["group"] == TriState.closing) { +#+END_SRC + +***** make: code block + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + } else if (type["code"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "group"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "code"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -3185,29 +3265,38 @@ void _block_flag_line_empty_(B)( obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; - comp_obj_block = comp_obj_block.init; - comp_obj_block.use = "body"; - comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "group"; - comp_obj_block.ocn = obj_cite_number; - comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - comp_obj_block.text = an_object["substantive"]; - comp_obj_block.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; - comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; - comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; - the_document_body_section ~= comp_obj_block; + comp_obj_code = comp_obj_code.init; + comp_obj_code.use = "body"; + comp_obj_code.is_of = "block"; + comp_obj_code.is_a = "code"; + comp_obj_code.ocn = obj_cite_number; + comp_obj_code.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_code.text = an_object["substantive"]; + comp_obj_code.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; + comp_obj_code.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; + comp_obj_code.inline_links = substantive_obj_misc_tuple[sObj.links]; + the_document_body_section ~= comp_obj_code; + type["blocks"] = TriState.off; + type["code"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["group"] = TriState.off; - } else if (type["block"] == TriState.closing) { - obj_cite_number = ocn_emit(type["ocn_status"]); +#+END_SRC + +***** make: poem + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + } else if (type["poem"] == TriState.closing) { an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "block"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "verse"; // check also auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -3216,15 +3305,54 @@ void _block_flag_line_empty_(B)( cntr, heading_ptr-1, an_object["is"] - ); + ); + comp_obj_poem_ocn = comp_obj_poem_ocn.init; + comp_obj_poem_ocn.use = "body"; + comp_obj_poem_ocn.is_of = "block"; + comp_obj_poem_ocn.is_a = "poem"; + comp_obj_poem_ocn.ocn = obj_cite_number; + comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); + comp_obj_poem_ocn.text = ""; // an_object["substantive"]; + the_document_body_section ~= comp_obj_poem_ocn; + type["blocks"] = TriState.off; + type["poem"] = TriState.off; + object_reset(an_object); + processing.remove("verse"); +#+END_SRC + +***** make: quote block + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + } else if (type["quote"] == TriState.closing) { + obj_cite_number = + ocn_emit(type["ocn_status"]); + an_object["bookindex_nugget"] = + ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; + bookindex_unordered_hashes = + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "quote"; + auto comp_obj_location = + node_construct.node_location_emitter( + content_non_header, + segment_anchor_tag_that_object_belongs_to, + obj_cite_number, + cntr, + heading_ptr-1, + an_object["is"] + ); auto substantive_obj_misc_tuple = - obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); - an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; + obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); // ... + an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; // ... anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "block"; + comp_obj_block.is_a = "quote"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -3236,15 +3364,25 @@ void _block_flag_line_empty_(B)( processing.remove("verse"); ++cntr; type["blocks"] = TriState.off; - type["block"] = TriState.off; - } else if (type["quote"] == TriState.closing) { + type["quote"] = TriState.off; +#+END_SRC + +***** make: table + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d + } else if (type["table"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "quote"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "table"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -3255,13 +3393,13 @@ void _block_flag_line_empty_(B)( an_object["is"] ); auto substantive_obj_misc_tuple = - obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); // ... - an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; // ... + obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); + an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "quote"; + comp_obj_block.is_a = "table"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -3269,12 +3407,18 @@ void _block_flag_line_empty_(B)( comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["table"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["quote"] = TriState.off; } +#+END_SRC + +***** } + +#+name: abs_functions_block_line_status_empty +#+BEGIN_SRC d } #+END_SRC @@ -3289,7 +3433,7 @@ auto _book_index_(L,I,O,T,B)( return ref T type, B opt_action_bool, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(book_idx_tmp) == string)); static assert(is(typeof(an_object) == string[string])); @@ -3355,7 +3499,7 @@ auto _heading_found_(L,X,H,R,T)( return ref R heading_match_rgx, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(dochead_make_identify_unmarked_headings) == string)); static assert(is(typeof(heading_match_str) == string[string])); @@ -3442,7 +3586,7 @@ auto _heading_found_(L,X,H,R,T)( } #+END_SRC -**** heading make set :heading: +**** heading make set :heading: #+name: abs_functions_heading #+BEGIN_SRC d @@ -3452,7 +3596,7 @@ auto _heading_make_set_(L,C,R,T)( return ref R heading_match_rgx, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(heading_match_rgx) == Regex!(char)[string])); @@ -3524,7 +3668,7 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)( return ref T type, return ref Me dochead_meta_aa, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(an_object) == string[string])); @@ -3684,7 +3828,7 @@ void _para_match_(L,O,K,I,B,T,C)( return ref T type, return ref C line_occur, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(an_object_key) == string)); @@ -3738,7 +3882,7 @@ void _para_match_(L,O,K,I,B,T,C)( } #+END_SRC -**** TODO text font face +**** text font face #+name: abs_functions_para #+BEGIN_SRC d @@ -3785,7 +3929,7 @@ struct OCNemitter { ***** object inline markup munge :markup:inline: -****** 0. struct, inline markup munge +****** { struct, inline markup munge #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d @@ -3810,7 +3954,7 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d string url_links(Ot)(Ot obj_txt_in) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } /+ url matched +/ @@ -3870,7 +4014,7 @@ struct ObjInlineMarkupMunge { #+name: ao_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){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } /+ endnotes (regular) +/ @@ -3933,7 +4077,7 @@ struct ObjInlineMarkupMunge { #+BEGIN_SRC d private auto object_notes_and_links_(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { - debug(asserts){ + debug(asserts) { assert(is(typeof(obj_txt_in) == string)); } } @@ -3989,27 +4133,24 @@ struct ObjInlineMarkupMunge { } #+END_SRC -****** para -- paragraph text without other identification until two new lines +****** heading +- identified text by heading level marker followed by text until two new lines - general markup - - paragraph attributes - - font faces (bold, italics, underscore etc.) - - footnotes/endnotes - - links #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto para(Ot)(Ot obj_txt_in) + auto munge_heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { obj_txt["munge"]=(obj_txt_in) - .replaceFirst(rgx.para_attribs, "") - .replaceFirst(rgx.obj_cite_number_off_all, ""); - auto t = object_notes_and_links_(obj_txt["munge"]); + .replaceFirst(rgx.heading, "") + .replaceFirst(rgx.obj_cite_number_off_all, "") + .strip; + auto t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers); debug(munge) { writeln(__LINE__); writeln(obj_txt_in); @@ -4018,26 +4159,31 @@ struct ObjInlineMarkupMunge { } return t; } + invariant() { + } #+END_SRC -****** heading -- identified text by heading level marker followed by text until two new lines +****** para +- paragraph text without other identification until two new lines - general markup + - paragraph attributes + - font faces (bold, italics, underscore etc.) + - footnotes/endnotes + - links #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) + auto munge_para(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { obj_txt["munge"]=(obj_txt_in) - .replaceFirst(rgx.heading, "") - .replaceFirst(rgx.obj_cite_number_off_all, "") - .strip; - auto t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers); + .replaceFirst(rgx.para_attribs, "") + .replaceFirst(rgx.obj_cite_number_off_all, ""); + auto t = object_notes_and_links_(obj_txt["munge"]); debug(munge) { writeln(__LINE__); writeln(obj_txt_in); @@ -4046,31 +4192,6 @@ struct ObjInlineMarkupMunge { } return t; } - invariant() { - } -#+END_SRC - -****** code -- newlines -- indentation -- possibly identify syntax for coloring -- no general markup - -#+name: ao_emitters_obj_inline_markup_munge -#+BEGIN_SRC d - string code(Ot)(Ot obj_txt_in) - in { - debug(asserts){ - assert(is(typeof(obj_txt_in) == string)); - } - } - body { - obj_txt_in = (obj_txt_in).replaceAll(rgx.two_spaces, mkup.nbsp ~ mkup.nbsp); - obj_txt["munge"] = obj_txt_in; - return obj_txt["munge"]; - } - invariant() { - } #+END_SRC ****** group @@ -4084,7 +4205,7 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto group(string obj_txt_in) + auto munge_group(string obj_txt_in) in { } body { obj_txt["munge"]=obj_txt_in; @@ -4106,9 +4227,9 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto block(Ot)(Ot obj_txt_in) + auto munge_block(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4132,9 +4253,9 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - auto verse(Ot)(Ot obj_txt_in) + auto munge_verse(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4147,18 +4268,25 @@ struct ObjInlineMarkupMunge { } #+END_SRC -****** quote +****** code +- newlines +- indentation +- possibly identify syntax for coloring (obj attribute) +- numbered code blocks (markup/obj attribute?) +- no general markup +- one special character represented by mkup.nbsp ░ #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string quote(Ot)(Ot obj_txt_in) + string munge_code(Ot)(Ot obj_txt_in) in { - debug(asserts){ - static assert(is(typeof(obj_txt_in) == string)); + debug(asserts) { + assert(is(typeof(obj_txt_in) == string)); } } body { - obj_txt["munge"]=obj_txt_in; + obj_txt_in = (obj_txt_in).replaceAll(rgx.two_spaces, mkup.nbsp ~ mkup.nbsp); + obj_txt["munge"] = obj_txt_in; return obj_txt["munge"]; } invariant() { @@ -4171,9 +4299,27 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string table(Ot)(Ot obj_txt_in) + string munge_table(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { + static assert(is(typeof(obj_txt_in) == string)); + } + } + body { + obj_txt["munge"]=obj_txt_in; + return obj_txt["munge"]; + } + invariant() { + } +#+END_SRC + +****** quote + +#+name: ao_emitters_obj_inline_markup_munge +#+BEGIN_SRC d + string munge_quote(Ot)(Ot obj_txt_in) + in { + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4189,9 +4335,9 @@ struct ObjInlineMarkupMunge { #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d - string comment(Ot)(Ot obj_txt_in) + string munge_comment(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4203,7 +4349,7 @@ struct ObjInlineMarkupMunge { } #+END_SRC -****** 0. close +****** } #+name: ao_emitters_obj_inline_markup_munge #+BEGIN_SRC d @@ -4211,7 +4357,7 @@ struct ObjInlineMarkupMunge { #+END_SRC ***** toc, tags, object inline markup :markup:inline: -****** open +****** { #+name: ao_emitters_obj_inline_markup #+BEGIN_SRC d @@ -4231,15 +4377,15 @@ struct ObjInlineMarkup { Ma dochead_make_aa ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(obj_key_) == string)); static assert(is(typeof(dochead_make_aa) == string[string][string])); } } body { - obj_txt["munge"]=obj_[obj_key_].dup; - obj_txt["munge"]=(match(obj_["is"], ctRegex!(`verse|code`))) + obj_txt["munge"] = obj_[obj_key_].dup; + obj_txt["munge"] = (match(obj_["is"], ctRegex!(`verse|code`))) ? obj_txt["munge"] : strip(obj_txt["munge"]); static __gshared string[] anchor_tags_ = []; @@ -4260,37 +4406,38 @@ struct ObjInlineMarkup { } else if (obj_["lev"] == "1") { writeln("heading anchor tag missing: ", obj_txt["munge"]); } - x =munge.heading(obj_txt["munge"], reset_note_numbers); + x =munge.munge_heading(obj_txt["munge"], reset_note_numbers); reset_note_numbers=false; goto default; case "para": - x = munge.para(obj_txt["munge"]); + x = munge.munge_para(obj_txt["munge"]); goto default; case "group": - x = munge.group(obj_txt["munge"]); + x = munge.munge_group(obj_txt["munge"]); goto default; case "block": - x = munge.block(obj_txt["munge"]); + x = munge.munge_block(obj_txt["munge"]); goto default; case "verse": - x = munge.verse(obj_txt["munge"]); + x = munge.munge_verse(obj_txt["munge"]); goto default; case "code": - obj_txt["munge"]=munge.code(obj_txt["munge"]); - break; - case "quote": - obj_txt["munge"]=munge.quote(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_code(obj_txt["munge"]); break; case "table": - obj_txt["munge"]=munge.table(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_table(obj_txt["munge"]); + break; + case "quote": + obj_txt["munge"] = munge.munge_quote(obj_txt["munge"]); break; case "comment": - obj_txt["munge"]=munge.comment(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_comment(obj_txt["munge"]); break; case "doc_end_reset": munge.initialize_note_numbers(); break; default: + /+ para, heading, group, block, verse +/ obj_txt["munge"]=x[0]; obj_notes_and_links["notes_reg"] = x[1]; obj_notes_and_links["notes_star"] = x[2]; @@ -4311,14 +4458,14 @@ struct ObjInlineMarkup { } #+END_SRC -****** toc, table of contents build, gather headings :markup:inline: +****** toc (table of contents), build, gather headings :markup:inline: #+name: ao_emitters_obj_inline_markup_table_of_contents #+BEGIN_SRC d auto _clean_heading_toc_(Toc)( Toc heading_toc_, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(heading_toc_) == char[])); } auto m = matchFirst(cast(char[]) heading_toc_, rgx.heading); @@ -4336,7 +4483,7 @@ struct ObjInlineMarkup { Toc the_table_of_contents_section, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(dochead_make_aa) == string[string][string])); static assert(is(typeof(segment_anchor_tag_that_object_belongs_to) == string)); @@ -4505,13 +4652,12 @@ private: O obj_, Ma dochead_make_aa ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(munge_) == string)); static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(dochead_make_aa) == string[string][string])); } if (dochead_make_aa["make"]["num_top"].length > 0) { - // if (!(match(munge_, rgx.heading_anchor_tag))) { static __gshared int heading_num_top_level=9; static __gshared int heading_num_depth=2; static __gshared int heading_num_0 = 0; @@ -4650,7 +4796,7 @@ private: #+BEGIN_SRC d static string _make_segment_anchor_tags_if_none_provided(M,Lv)(M munge_, Lv lev_) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(munge_) == string)); static assert(is(typeof(lev_) == string)); } @@ -4727,7 +4873,7 @@ private: } #+END_SRC -****** close +****** } #+name: ao_emitters_obj_inline_markup_close #+BEGIN_SRC d @@ -4735,7 +4881,7 @@ private: #+END_SRC ***** object attrib :attributes: -****** attributes structure open, public +****** { attributes structure open, public #+name: ao_emitters_obj_attributes #+BEGIN_SRC d @@ -4743,7 +4889,7 @@ struct ObjAttributes { string[string] _obj_attrib; #+END_SRC -****** attributes structure open, public +****** emitter obj attributes, public #+name: ao_emitters_obj_attributes_public #+BEGIN_SRC d @@ -4753,7 +4899,7 @@ struct ObjAttributes { OH _comp_obj_heading, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_is_) == string)); static assert(is(typeof(obj_raw) == string)); static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); @@ -4827,13 +4973,13 @@ struct ObjAttributes { #+END_SRC ******* attrubutes -******** para and block +******** para & blocks #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d string _para_and_blocks(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4863,160 +5009,160 @@ struct ObjAttributes { } #+END_SRC -******** para +******** heading #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _para(Ot)(Ot obj_txt_in) + string _heading(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," - ~ " \"is\": \"para\""; + ~ " \"is\": \"heading\""; return _obj_attributes; } invariant() { } #+END_SRC -******** heading +******** para #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _heading(Ot)(Ot obj_txt_in) + string _para(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," - ~ " \"is\": \"heading\""; + ~ " \"is\": \"para\""; return _obj_attributes; } invariant() { } #+END_SRC -******** code +******** group #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _code(Ot)(Ot obj_txt_in) + string _group(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"code\""; + ~ " \"is\": \"group\""; return _obj_attributes; } invariant() { } #+END_SRC -******** group +******** block #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _group(Ot)(Ot obj_txt_in) + string _block(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"group\""; + ~ " \"is\": \"block\""; return _obj_attributes; } invariant() { } #+END_SRC -******** block +******** verse #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _block(Ot)(Ot obj_txt_in) + string _verse(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"block\""; + ~ " \"is\": \"verse\""; return _obj_attributes; } invariant() { } #+END_SRC -******** verse +******** code #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _verse(Ot)(Ot obj_txt_in) + string _code(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"verse\""; + ~ " \"is\": \"code\""; return _obj_attributes; } invariant() { } #+END_SRC -******** quote +******** table #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _quote(Ot)(Ot obj_txt_in) + string _table(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"quote\""; + ~ " \"is\": \"table\""; return _obj_attributes; } invariant() { } #+END_SRC -******** table +******** quote #+name: ao_emitters_obj_attributes_private_an_attribute #+BEGIN_SRC d - string _table(Ot)(Ot obj_txt_in) + string _quote(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"table\""; + ~ " \"is\": \"quote\""; return _obj_attributes; } invariant() { @@ -5029,7 +5175,7 @@ struct ObjAttributes { #+BEGIN_SRC d string _comment(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -5052,7 +5198,7 @@ struct ObjAttributes { Oi obj_is_, OH _comp_obj_heading, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(_obj_attrib) == string)); static assert(is(typeof(obj_is_) == string)); static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); @@ -5077,7 +5223,7 @@ struct ObjAttributes { } #+END_SRC -****** close +****** } #+name: ao_emitters_obj_attributes_private_close #+BEGIN_SRC d @@ -5102,7 +5248,7 @@ struct BookIndexNuggetHash { S segment_anchor_tag, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_section) == string)); static assert(is(typeof(obj_cite_number) == int)); } @@ -5182,7 +5328,7 @@ struct BookIndexReportIndent { auto bookindex_report_indented(BI)( BI bookindex_unordered_hashes ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); } auto mainkeys= @@ -5209,7 +5355,7 @@ struct BookIndexReportIndent { #+END_SRC ***** book index (sort &) report section :report:section: -****** book index struct open +****** { book index struct open #+name: ao_emitters_book_index_report_section #+BEGIN_SRC d @@ -5226,7 +5372,7 @@ struct BookIndexReportSection { auto bookindex_write_section(BI)( BI bookindex_unordered_hashes ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); } auto mainkeys=bookindex_unordered_hashes.byKey.array.sort().release; @@ -5263,7 +5409,7 @@ struct BookIndexReportSection { N obj_cite_number, B opt_action_bool, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); static assert(is(typeof(obj_cite_number) == int)); static assert(is(typeof(opt_action_bool) == bool[string])); @@ -5416,7 +5562,7 @@ struct BookIndexReportSection { } #+END_SRC -****** book index struct close +****** } #+name: ao_emitters_book_index_report_section #+BEGIN_SRC d @@ -5434,7 +5580,7 @@ struct NotesSection { auto rgx = Rgx(); #+END_SRC -***** gather notes for endnote section struct open +***** { gather notes for endnote section struct open #+name: ao_emitters_endnotes #+BEGIN_SRC d @@ -5608,7 +5754,7 @@ struct NotesSection { } #+END_SRC -***** gather notes for endnote section struct close +***** } #+name: ao_emitters_endnotes #+BEGIN_SRC d @@ -5616,7 +5762,7 @@ struct NotesSection { #+END_SRC **** bibliography :bibliography: -***** biblio struct open +***** { biblio struct #+name: ao_emitters_bibliography #+BEGIN_SRC d @@ -5632,7 +5778,7 @@ struct Bibliography { return ref BJ bib_arr_json ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unsorted_incomplete) == string[])); static assert(is(typeof(bib_arr_json) == JSONValue[])); } @@ -5669,7 +5815,7 @@ struct Bibliography { Bi biblio_unordered, return ref BJ bib_arr_json ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unordered) == string[])); static assert(is(typeof(bib_arr_json) == JSONValue[])); } @@ -5706,7 +5852,7 @@ struct Bibliography { #+name: ao_emitters_bibliography #+BEGIN_SRC d final private JSONValue[] biblio_sort(BJ)(BJ biblio_unordered) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unordered) == JSONValue[])); } JSONValue[] biblio_sorted_; @@ -5730,7 +5876,7 @@ struct Bibliography { #+name: ao_emitters_bibliography #+BEGIN_SRC d void biblio_debug(BJ)(BJ biblio_sorted) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_sorted) == JSONValue[])); } debug(biblio0) { @@ -5743,7 +5889,7 @@ struct Bibliography { } #+END_SRC -***** biblio struct close +***** } #+name: ao_emitters_bibliography #+BEGIN_SRC d @@ -5751,7 +5897,7 @@ struct Bibliography { #+END_SRC **** node structure metadata :structure:metadata:node: -***** metadata node struct open +***** { metadata node struct #+name: ao_emitters_metadata #+BEGIN_SRC d @@ -5762,7 +5908,7 @@ struct NodeStructureMetadata { auto rgx = Rgx(); #+END_SRC -***** TODO node metadata emitter +***** node metadata emitter #+name: ao_emitters_metadata #+BEGIN_SRC d @@ -5775,7 +5921,7 @@ struct NodeStructureMetadata { I is_ ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(lev_markup_number) == string)); static assert(is(typeof(segment_anchor_tag) == string)); static assert(is(typeof(obj_cite_number_) == int)); @@ -5826,7 +5972,7 @@ struct NodeStructureMetadata { } #+END_SRC -***** TODO node metadata emitter heading, (including most segnames & their pointers) +***** node metadata emitter heading, (including most segnames & their pointers) #+name: ao_emitters_metadata #+BEGIN_SRC d @@ -5847,7 +5993,7 @@ struct NodeStructureMetadata { fL flag_links, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(_text) == string)); static assert(is(typeof(lev) == string)); static assert(is(typeof(lev_markup_number) == string)); @@ -6021,7 +6167,7 @@ struct NodeStructureMetadata { } #+END_SRC -***** metadata node struct close +***** } #+name: ao_emitters_metadata #+BEGIN_SRC d @@ -6037,7 +6183,7 @@ auto assertions_doc_structure(O,Lv)( O an_object, Lv lv ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(lv) == int[string])); } @@ -6219,7 +6365,7 @@ auto assertions_doc_structure(O,Lv)( #+name: abs_functions_assertions #+BEGIN_SRC d auto assertions_flag_types_block_status_none_or_closed(T)(T type) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(type) == int[string])); } assert( @@ -6279,7 +6425,7 @@ struct HeadingAttrib { } #+END_SRC -*** TODO composite object +*** [#A] composite object #+name: ao_structs_init #+BEGIN_SRC d diff --git a/org/ao_read_source_files.org b/org/ao_read_source_files.org index 73594dd..a870a57 100644 --- a/org/ao_read_source_files.org +++ b/org/ao_read_source_files.org @@ -309,7 +309,7 @@ final private char[][] header0Content1(in string src_text) { #+BEGIN_SRC d final private char[][] markupSourceLineArray(in char[] src_text) { char[][] source_line_arr = - split(cast(char[]) src_text, rgx.newline_eol_strip_preceeding); + split(cast(char[]) src_text, rgx.newline_eol_strip_preceding); return source_line_arr; } #+END_SRC diff --git a/org/defaults.org b/org/defaults.org index 03eecb0..ffd2c7c 100644 --- a/org/defaults.org +++ b/org/defaults.org @@ -407,37 +407,37 @@ template SiSUrgxInitFlags() { /+ regex flags +/ int[string] flags_type_init() { int[string] flags_type_init = [ - "make_headings" : 0, - "header_make" : 0, - "header_meta" : 0, - "heading" : 0, - "biblio_section" : 0, - "glossary_section" : 0, - "blurb_section" : 0, - "para" : 0, - "blocks" : 0, // 0..2 generic - "code" : 0, // 0..2 - "poem" : 0, // 0..2 - "table" : 0, // 0..2 - "group" : 0, // 0..2 - "block" : 0, // 0..2 - "quote" : 0, // 0..2 - "verse_new" : 0, - "curly_code" : 0, - "curly_poem" : 0, - "curly_table" : 0, - "curly_group" : 0, - "curly_block" : 0, - "curly_quote" : 0, - "tic_code" : 0, - "tic_poem" : 0, - "tic_table" : 0, - "tic_group" : 0, - "tic_block" : 0, - "tic_quote" : 0, - "ocn_status" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings - "ocn_status_multi_obj" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings - "book_index" : 0, + "make_headings" : 0, + "header_make" : 0, + "header_meta" : 0, + "heading" : 0, + "biblio_section" : 0, + "glossary_section" : 0, + "blurb_section" : 0, + "para" : 0, + "blocks" : 0, // 0..2 generic + "code" : 0, // 0..2 + "poem" : 0, // 0..2 + "table" : 0, // 0..2 + "group" : 0, // 0..2 + "block" : 0, // 0..2 + "quote" : 0, // 0..2 + "verse_new" : 0, + "curly_code" : 0, + "curly_poem" : 0, + "curly_group" : 0, + "curly_block" : 0, + "curly_quote" : 0, + "curly_table" : 0, + "tic_code" : 0, + "tic_poem" : 0, + "tic_group" : 0, + "tic_block" : 0, + "tic_quote" : 0, + "tic_table" : 0, + "ocn_status" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings + "ocn_status_multi_obj" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings + "book_index" : 0, ]; return flags_type_init; } @@ -576,7 +576,7 @@ static book_index_go_seg_anchorless = ctRegex!("(?P<link>(?P<o static trailing_comma = ctRegex!(",[ ]*$"); static trailing_linebreak = ctRegex!(",[ ]{1,2}\\\\\\\\\n[ ]{4}$","m"); static newline_eol_delimiter = ctRegex!("\n"); -static newline_eol_strip_preceeding = ctRegex!("[ ]*\n"); +static newline_eol_strip_preceding = ctRegex!("[ ]*\n"); static newline_eol_delimiter_only = ctRegex!("^\n"); static line_delimiter_ws_strip = ctRegex!("[ ]*\n[ ]*"); static para_delimiter = ctRegex!("\n[ ]*\n+"); @@ -1196,6 +1196,8 @@ static inline_text_and_note_al = ctRegex!(`(?P<text>.+?) static inline_text_and_note_al_ = ctRegex!(`(.+?(?:【[*+]*\s+.+?】|$))`, "mg"); #+END_SRC +*** inline links + #+name: prgmkup_rgx #+BEGIN_SRC d /+ inline markup footnotes endnotes +/ diff --git a/org/output.org b/org/output.org index bda3325..e8ed16e 100644 --- a/org/output.org +++ b/org/output.org @@ -281,7 +281,7 @@ string special_characters(string _txt){ .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_less_than, "<") .replaceAll(rgx.xhtml_greater_than, ">") - .replaceAll(rgx.xhtml_line_break, "<br />"); + .replaceAll(rgx.xhtml_line_break, "<br>"); return _txt; } #+END_SRC @@ -1356,54 +1356,6 @@ auto html_css() { margin-left: 5%; margin-right: 1%; } - #top_band { - position: absolute; - top: 0; - bottom: 80px; - width: 100%; - } - #top_band_search { - position: absolute; - top: 0px; - right: 0px; - margin-left: 75%; - width: 20%; - } - #column_left { - position: absolute; - top: 80px; - left: 0; - margin-left: 1%; - width: 20%; - } - #column_center { - position: absolute; - top: 80px; - margin-left: 20%; - width: 55%; - } - #column_right { - position: absolute; - top: 80px; - right: 0px; - margin-left: 75%; - width: 25%; - } - #pane_major { - position: absolute; - top: 0px; - left: 0; - margin-left: 0; - width: 80%; - } - #pane_minor { - position: absolute; - top: 0px; - right: 0px; - margin-left: 75%; - width: 20%; - background-color: #aaaaaa; - } .norm, .bold, .verse, .group, .block, .alt { line-height: 133%; margin-left: 0em; @@ -1838,66 +1790,6 @@ auto html_css() { padding-left: 9em; text-indent: 0em; } - p.it0 { - margin-left: 0em; - margin-top: 6px; - margin-bottom: 0px; - line-height: 100%; - } - p.it1 { - margin-left: 1em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it2 { - margin-left: 2em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it3 { - margin-left: 3em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it4 { - margin-left: 4em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it5 { - margin-left: 5em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it6 { - margin-left: 6em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it7 { - margin-left: 7em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it8 { - margin-left: 8em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it9 { - margin-left: 9em; - margin-bottom: 0px; - margin-top: 0px; - line-height: 100%; - } p.block { } p.group { } p.alt { } @@ -1977,33 +1869,6 @@ auto html_css() { margin-right: 0px; text-align: center; } - p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent { - font-size: 80%; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 2mm; - margin-right: 4px; - text-align: left; - } - p.pane { } - p.pane_title { - font-weight: bold; - margin-bottom: 0px; - } - p.pane_blurb { - font-size: 10px; - margin-bottom: 0px; - } - p.pane_link { - font-size: 10px; - margin-bottom: 0px; - margin-left: 4mm; - } - p.pane_indent { - font-size: 10px; - margin-bottom: 0px; - margin-left: 4mm; - } p.concordance_word { line-height: 150%; font-weight: bold; @@ -2037,35 +1902,6 @@ auto html_css() { margin-top: 1px; margin-bottom: 3px; } - p.quickref { - font-size: 10px; - font-style: italic; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-right: 5px; - text-align: left; - } - p.bigref { - font-size: 11px; - font-weight: bold; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-right: 5px; - text-align: center; - } - p.letter { - font-weight: bold; - font-size: 80%; - margin-left: 0em; - margin-top: 2px; - margin-bottom: 2px; - margin-right: 6px; - text-align: left; - color: white; - background: #880000; - } tt { font-family: inconsolata, andale mono, courier new, courier, monospace; background-color: #eeeeee; @@ -2101,73 +1937,6 @@ auto html_css() { p.right,th.right,td.right { text-align: right; } - #horizontal_links { - background: #eeeeee; - margin-left: 5%; - margin-right: 5%; - } - #horizontal { - margin: 0; - padding: 0 0 0 10px; - border-top: 1px solid #000077; - border-bottom: 1px solid #000077; - } - #horizontal li { - margin: 0 0 0 0; - padding: 0 16px 0 0; - display: inline; - list-style-type: none; - text-align: left; - background: none; - } - #horizontal a { - line-height: 12px; - margin: 0 0 0 0; - text-decoration: none; - color: #000077; - } - #horizontal a.active, #horizontal a:hover { - border-bottom: 2px solid #777777; - padding-bottom: 2px; - color: #000077; - } - #horizontal a:hover { - color: #000077; - } - #document_versions { - position: absolute; - top: 10mm; - right: 2%; - width: 12%; - float: right; - } - #vertical_links { - position: absolute; - top: 10mm; - right: 0px; - width: 20%; - background: #dddddd; - float: right; - } - #vertical { - padding: 0 12px 0px 0px; - margin-left: 2%; - margin-right: 2%; - } - #vertical li { - display: block; - list-style-type: none; - } - #vertical a { - line-height: 12px; - text-decoration: none; - color: #000077; - } - #vertical a.active, #vertical a:hover { - border-bottom: 2px solid #777777; - padding-bottom: 2px; - color: #000077; - } ul, li { list-style-type: none; list-style: none; @@ -2188,51 +1957,6 @@ auto html_css() { } ul { } - li.bullet { margin-left: 1em; } - li.i1 { margin-left: 2em; } - li.i2 { margin-left: 3em; } - li.i3 { margin-left: 4em; } - li.i4 { margin-left: 5em; } - li.i5 { margin-left: 6em; } - li.i6 { margin-left: 7em; } - li.i7 { margin-left: 8em; } - li.i8 { margin-left: 9em; } - li.i9 { margin-left: 10em; } - li.doc, li.ref, li.refcenter { - margin-top: 0px; - margin-bottom: 0px; - margin-right: 0px; - font-size: 8px; - font-style: normal; - text-align: left; - } - li.doc { - background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; - padding-left: 16px; - margin-left: 10px; - margin-right: 0px; - } - li.ref { - background: none; - padding-left: 0; - margin-left: 0; - color: #777777; - } - li.refcenter { - background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; - padding-left: 20px; - margin-left: 10%; - font-size: 9px; - color: #777777; - text-align: center; - } - li.refbold { - list-style-type: none; - padding-left: 16px; - margin-left: 0; - margin-right: 10mm; - font-weight: bold; - } h0, h1, h2, h3, h4, h5, h6, h7 { font-weight: bold; line-height: 120%; @@ -2244,9 +1968,6 @@ auto html_css() { margin-top: 10px; margin-bottom: 0px; } - h0.center, h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center { - text-align: center; - } h0 { font-size: 125%; } h1 { font-size: 120%; } h2 { font-size: 115%; } @@ -2264,88 +1985,6 @@ auto html_css() { h7.i {margin-left: 8em;} h8.i {margin-left: 9em;} h9.i {margin-left: 10em;} - h1.top_band { - display: inline; - text-align: left; - margin-top: 0; - margin-left: 4mm; - text-indent: 0mm; - font-weight: bold; - font-size: 120%; - } - h2.top_band_tiny { - font-size: 10px; - font-weight: normal; - margin-top: 0px; - margin-left: 4mm; - text-indent: 0mm; - margin-bottom: 0px; - color: #777777; - margin-left: 140px; - margin-right: 0px; - text-align: left; - } - p.top_band { - display: inline; - text-align: left; - margin-top: 0; - margin-left: 140px; - text-indent: 0mm; - font-weight: bold; - font-size: 120%; - } - p.top_band_tiny { - font-size: 10px; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-left: 140px; - margin-right: 0px; - text-align: left; - } - p.top_band_image { - float: left; - display: inline; - text-align: left; - margin-top: 0; - margin-left: 1mm; - text-indent: 0mm; - margin-right: 1mm; - } - .banner, .subbanner { - font-weight: bold; - text-align: center; - margin-left: 10mm; - margin-right: 15mm; - margin-top: 20px; - margin-bottom: 10px; - } - h0.banner { - font-size: 125%; - } - h1.banner { - font-size: 120%; - } - h1.subbanner { - font-size: 115%; - } - h2.banner { - font-size: 110%; - } - h3.banner { - color: #990000; - font-size: 105%; - } - h4.banner { - color: #ff0000; - font-size: 100%; - } - h5.banner { - } - h6.banner { - } - h7.banner { - } .toc { font-weight: normal; margin-top: 6px; @@ -2391,46 +2030,6 @@ auto html_css() { font-size: 85%; line-height: 100%; } - .microtoc { - margin-top: 2px; - margin-bottom: 2px; - } - h0.microtoc { - margin-left: 0mm; - font-size: 120%; - } - h1.microtoc { - margin-left: 0mm; - font-size: 115%; - } - h2.microtoc { - margin-left: 5mm; - font-size: 110%; - } - h3.microtoc { - margin-left: 10mm; - font-size: 105%; - } - h4.microtoc { - margin-left: 15mm; - font-weight: normal; - font-size: 100%; - } - h5.microtoc { - margin-left: 20mm; - font-weight: normal; - font-size: 95%; - } - h6.microtoc { - margin-left: 25mm; - font-weight: normal; - font-size: 90%; - } - h7.microtoc { - margin-left: 30mm; - font-weight: normal; - font-size: 85%; - } .subtoc { margin-right: 34%; font-weight: normal; @@ -2548,60 +2147,6 @@ auto html_css() { div.toc a:hover { color: #000000; background-color: #f9f9aa; - } - .minitoc { - font-weight: normal; - margin-top: 2px; - margin-bottom: 2px; - } - h1.minitoc, h2.minitoc, h3.minitoc { - margin-left: 0em; - font-weight: bold; - text-align: left; - font-size: 90%; - margin-top: 4px; - margin-bottom: 4px; - } - h4.minitoc { - margin-left: 0em; - font-size: 90%; - } - h5.minitoc { - margin-left: 1em; - font-size: 85%; - } - h6.minitoc { - margin-left: 2em; - font-size: 85%; - } - h7.minitoc { - margin-left: 3em; - font-size: 80%; - } - h0.minitoc { - margin-left: 0em; - font-size: 90%; - } - h0.c, h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c { - text-align: center - } - h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red { - text-align: center; - color: #ff0000; - margin-left: 5mm; - text-indent: 5mm; - margin-top: 30px; - margin-bottom: 20px; - margin-right: 15mm; - } - h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby { - text-align: center; - color: #990000; - margin-left: 5mm; - text-indent: 5mm; - margin-top: 30px; - margin-bottom: 20px; - margin-right: 15mm; }"; return css; } diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index 066ef3a..82341cd 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -234,7 +234,7 @@ template SiSUdocAbstraction() { Opt opt_action_bool, ) { auto rgx = Rgx(); - debug(asserts){ + debug(asserts) { static assert(is(typeof(markup_sourcefile_content) == char[][])); static assert(is(typeof(dochead_make_aa) == string[string][string])); static assert(is(typeof(dochead_meta_aa) == string[string][string])); @@ -386,6 +386,7 @@ template SiSUdocAbstraction() { } else if (!matchFirst(line, rgx.skip_from_regular_parse)) { /+ object other than "code block" object (includes regular text paragraph, headings & blocks other than code) +/ + /+ heading, glossary, blurb, poem, group, block, quote, table +/ if ((matchFirst(line, rgx.heading_biblio) || (type["biblio_section"] == State.on && (!matchFirst(line, rgx.heading_blurb_glossary)))) @@ -556,10 +557,6 @@ template SiSUdocAbstraction() { type["ocn_status"] = TriState.off; } continue; - } else if (type["poem"] == TriState.on) { - /+ within block object: poem +/ - _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa); - continue; /+ within block object: group +/ } else if (type["group"] == TriState.on) { /+ within block object: group +/ @@ -569,6 +566,10 @@ template SiSUdocAbstraction() { /+ within block object: block +/ _block_block_(line, an_object, type); continue; + } else if (type["poem"] == TriState.on) { + /+ within block object: poem +/ + _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa); + continue; } else if (type["quote"] == TriState.on) { /+ within block object: quote +/ _quote_block_(line, an_object, type); @@ -789,7 +790,8 @@ template SiSUdocAbstraction() { an_object.remove("lev_markup_number"); processing.remove("verse"); ++cntr; - } else if ((type["para"] == State.on) && (line_occur["para"] > State.off)) { + } else if ((type["para"] == State.on) + && (line_occur["para"] > State.off)) { /+ paragraph object (current line empty) +/ obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = @@ -846,10 +848,9 @@ template SiSUdocAbstraction() { /+ unless (the_document_body_section.length == 0) ? +/ if (the_document_body_section.length > 0) { if (((the_document_body_section[$-1].is_a == "para") - || (the_document_body_section[$-1].is_a == "heading") - || (the_document_body_section[$-1].is_a == "group")) - && (the_document_body_section.length > previous_length) - ) { + || (the_document_body_section[$-1].is_a == "heading") + || (the_document_body_section[$-1].is_a == "group")) + && (the_document_body_section.length > previous_length)) { if ((the_document_body_section[$-1].is_a == "heading") && (the_document_body_section[$-1].heading_lev_markup < 5)) { type["biblio_section"] = State.off; @@ -1603,7 +1604,7 @@ template SiSUdocAbstraction() { } /+ ← closed: abstract doc source +/ /+ ↓ abstraction functions +/ auto object_reset(O)(ref O an_object) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(an_object) == string[string])); } an_object.remove("body_nugget"); @@ -1617,7 +1618,7 @@ template SiSUdocAbstraction() { return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -1632,7 +1633,7 @@ template SiSUdocAbstraction() { L line, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(type) == int[string])); } @@ -1682,7 +1683,7 @@ template SiSUdocAbstraction() { return ref T type, N obj_cite_number_poem ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(type) == int[string])); static assert(is(typeof(obj_cite_number_poem) == string[string])); @@ -1754,8 +1755,8 @@ template SiSUdocAbstraction() { line ); } - type["blocks"] = TriState.on; - type["table"] = TriState.on; + type["blocks"] = TriState.on; + type["table"] = TriState.on; type["curly_table"] = TriState.on; } else if (matchFirst(line, rgx.block_tic_code_open)) { /+ tic code open +/ @@ -1822,8 +1823,8 @@ template SiSUdocAbstraction() { line ); } - type["blocks"] = TriState.on; - type["table"] = TriState.on; + type["blocks"] = TriState.on; + type["table"] = TriState.on; type["tic_table"] = TriState.on; } } @@ -1832,7 +1833,7 @@ template SiSUdocAbstraction() { return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -1869,7 +1870,7 @@ template SiSUdocAbstraction() { } } final string biblio_tag_map(A)(A abr) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(abr) == string)); } auto btm = [ @@ -2013,6 +2014,88 @@ template SiSUdocAbstraction() { } } // + void _group_block_(L,O,T)( + return ref L line, + return ref O an_object, + return ref T type + ) { + debug(asserts) { + static assert(is(typeof(line) == char[])); + static assert(is(typeof(an_object) == string[string])); + static assert(is(typeof(type) == int[string])); + } + auto rgx = Rgx(); + if (type["curly_group"] == State.on) { + if (matchFirst(line, rgx.block_curly_group_close)) { + debug(group) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["group"] = TriState.closing; + type["curly_group"] = TriState.off; + } else { + debug(group) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) + } + } else if (type["tic_group"] == TriState.on) { + if (matchFirst(line, rgx.block_tic_close)) { + debug(group) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["group"] = TriState.closing; + type["tic_group"] = TriState.off; + } else { + debug(group) { // group + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) + } + } + } + void _block_block_(L,O,T)( + return ref L line, + return ref O an_object, + return ref T type + ) { + debug(asserts) { + static assert(is(typeof(line) == char[])); + static assert(is(typeof(an_object) == string[string])); + static assert(is(typeof(type) == int[string])); + } + auto rgx = Rgx(); + if (type["curly_block"] == TriState.on) { + if (matchFirst(line, rgx.block_curly_block_close)) { + debug(block) { // block (curly) close + writeln(line); + } + type["blocks"] = TriState.closing; + type["block"] = TriState.closing; + type["curly_block"] = TriState.off; + } else { + debug(block) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) + } + } else if (type["tic_block"] == TriState.on) { + if (matchFirst(line, rgx.block_tic_close)) { + debug(block) { + writeln(line); + } + type["blocks"] = TriState.closing; + type["block"] = TriState.closing; + type["tic_block"] = TriState.off; + } else { + debug(block) { + writeln(line); + } + an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) + } + } + } void _poem_block_(L,O,T,C,N,Ma)( L line, return ref O an_object, @@ -2021,7 +2104,7 @@ template SiSUdocAbstraction() { N obj_cite_number_poem, Ma dochead_make_aa, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2227,94 +2310,12 @@ template SiSUdocAbstraction() { } } } - void _group_block_(L,O,T)( - return ref L line, - return ref O an_object, - return ref T type - ) { - debug(asserts){ - static assert(is(typeof(line) == char[])); - static assert(is(typeof(an_object) == string[string])); - static assert(is(typeof(type) == int[string])); - } - auto rgx = Rgx(); - if (type["curly_group"] == State.on) { - if (matchFirst(line, rgx.block_curly_group_close)) { - debug(group) { // group (curly) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["group"] = TriState.closing; - type["curly_group"] = TriState.off; - } else { - debug(group) { // group - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) - } - } else if (type["tic_group"] == TriState.on) { - if (matchFirst(line, rgx.block_tic_close)) { - debug(group) { // group (tic) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["group"] = TriState.closing; - type["tic_group"] = TriState.off; - } else { - debug(group) { // group - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build group array (or string) - } - } - } - void _block_block_(L,O,T)( - return ref L line, - return ref O an_object, - return ref T type - ) { - debug(asserts){ - static assert(is(typeof(line) == char[])); - static assert(is(typeof(an_object) == string[string])); - static assert(is(typeof(type) == int[string])); - } - auto rgx = Rgx(); - if (type["curly_block"] == TriState.on) { - if (matchFirst(line, rgx.block_curly_block_close)) { - debug(block) { // block (curly) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["block"] = TriState.closing; - type["curly_block"] = TriState.off; - } else { - debug(block) { // block - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) - } - } else if (type["tic_block"] == TriState.on) { - if (matchFirst(line, rgx.block_tic_close)) { - debug(block) { // block (tic) close - writeln(line); - } - type["blocks"] = TriState.closing; - type["block"] = TriState.closing; - type["tic_block"] = TriState.off; - } else { - debug(block) { // block - writeln(line); - } - an_object[an_object_key] ~= line ~= "\n"; // build block array (or string) - } - } - } void _quote_block_(L,O,T)( return ref L line, return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2325,8 +2326,8 @@ template SiSUdocAbstraction() { debug(quote) { // quote (curly) close writeln(line); } - type["blocks"] = TriState.closing; - type["quote"] = TriState.closing; + type["blocks"] = TriState.closing; + type["quote"] = TriState.closing; type["curly_quote"] = TriState.off; } else { debug(quote) { @@ -2339,8 +2340,8 @@ template SiSUdocAbstraction() { debug(quote) { // quote (tic) close writeln(line); } - type["blocks"] = TriState.closing; - type["quote"] = TriState.closing; + type["blocks"] = TriState.closing; + type["quote"] = TriState.closing; type["tic_quote"] = TriState.off; } else { debug(quote) { @@ -2355,7 +2356,7 @@ template SiSUdocAbstraction() { return ref O an_object, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(type) == int[string])); @@ -2392,8 +2393,8 @@ template SiSUdocAbstraction() { } } void _block_flag_line_empty_(B)( - B bookindex_extract_hash, - char[] line, + B bookindex_extract_hash, + char[] line, return ref string[string] an_object, return ref ObjGenericComposite[] the_document_body_section, return ref string[][string][string] bookindex_unordered_hashes, @@ -2414,14 +2415,18 @@ template SiSUdocAbstraction() { "code block status: closed" ); assertions_flag_types_block_status_none_or_closed(type); - if (type["code"] == TriState.closing) { + if (type["group"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "code"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "group"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -2435,57 +2440,33 @@ template SiSUdocAbstraction() { obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; - comp_obj_code = comp_obj_code.init; - comp_obj_code.use = "body"; - comp_obj_code.is_of = "block"; - comp_obj_code.is_a = "code"; - comp_obj_code.ocn = obj_cite_number; - comp_obj_code.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - comp_obj_code.text = an_object["substantive"]; - comp_obj_code.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; - comp_obj_code.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; - comp_obj_code.inline_links = substantive_obj_misc_tuple[sObj.links]; - the_document_body_section ~= comp_obj_code; + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "body"; + comp_obj_block.is_of = "block"; + comp_obj_block.is_a = "group"; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + comp_obj_block.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; + comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; + comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; + the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["group"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["code"] = TriState.off; - } else if (type["poem"] == TriState.closing) { + } else if (type["block"] == TriState.closing) { + obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "verse"; // check also - auto comp_obj_location = - node_construct.node_location_emitter( - content_non_header, - segment_anchor_tag_that_object_belongs_to, + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], obj_cite_number, - cntr, - heading_ptr-1, - an_object["is"] + segment_anchor_tag_that_object_belongs_to ); - comp_obj_poem_ocn = comp_obj_poem_ocn.init; - comp_obj_poem_ocn.use = "body"; - comp_obj_poem_ocn.is_of = "block"; - comp_obj_poem_ocn.is_a = "poem"; - comp_obj_poem_ocn.ocn = obj_cite_number; - comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); - comp_obj_poem_ocn.text = ""; // an_object["substantive"]; - the_document_body_section ~= comp_obj_poem_ocn; - object_reset(an_object); - processing.remove("verse"); - type["blocks"] = TriState.off; - type["poem"] = TriState.off; - } else if (type["table"] == TriState.closing) { - obj_cite_number = - ocn_emit(type["ocn_status"]); - an_object["bookindex_nugget"] = - ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; - bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "table"; + an_object["is"] = "block"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -2494,7 +2475,7 @@ template SiSUdocAbstraction() { cntr, heading_ptr-1, an_object["is"] - ); + ); auto substantive_obj_misc_tuple = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; @@ -2502,7 +2483,7 @@ template SiSUdocAbstraction() { comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "table"; + comp_obj_block.is_a = "block"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -2510,19 +2491,23 @@ template SiSUdocAbstraction() { comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["block"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["table"] = TriState.off; - } else if (type["group"] == TriState.closing) { + } else if (type["code"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "group"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "code"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -2536,29 +2521,32 @@ template SiSUdocAbstraction() { obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; - comp_obj_block = comp_obj_block.init; - comp_obj_block.use = "body"; - comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "group"; - comp_obj_block.ocn = obj_cite_number; - comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - comp_obj_block.text = an_object["substantive"]; - comp_obj_block.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; - comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; - comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; - the_document_body_section ~= comp_obj_block; + comp_obj_code = comp_obj_code.init; + comp_obj_code.use = "body"; + comp_obj_code.is_of = "block"; + comp_obj_code.is_a = "code"; + comp_obj_code.ocn = obj_cite_number; + comp_obj_code.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_code.text = an_object["substantive"]; + comp_obj_code.inline_notes_reg = substantive_obj_misc_tuple[sObj.notes_reg]; + comp_obj_code.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; + comp_obj_code.inline_links = substantive_obj_misc_tuple[sObj.links]; + the_document_body_section ~= comp_obj_code; + type["blocks"] = TriState.off; + type["code"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["group"] = TriState.off; - } else if (type["block"] == TriState.closing) { - obj_cite_number = ocn_emit(type["ocn_status"]); + } else if (type["poem"] == TriState.closing) { an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "block"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "verse"; // check also auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -2567,15 +2555,48 @@ template SiSUdocAbstraction() { cntr, heading_ptr-1, an_object["is"] - ); + ); + comp_obj_poem_ocn = comp_obj_poem_ocn.init; + comp_obj_poem_ocn.use = "body"; + comp_obj_poem_ocn.is_of = "block"; + comp_obj_poem_ocn.is_a = "poem"; + comp_obj_poem_ocn.ocn = obj_cite_number; + comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); + comp_obj_poem_ocn.text = ""; // an_object["substantive"]; + the_document_body_section ~= comp_obj_poem_ocn; + type["blocks"] = TriState.off; + type["poem"] = TriState.off; + object_reset(an_object); + processing.remove("verse"); + } else if (type["quote"] == TriState.closing) { + obj_cite_number = + ocn_emit(type["ocn_status"]); + an_object["bookindex_nugget"] = + ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; + bookindex_unordered_hashes = + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "quote"; + auto comp_obj_location = + node_construct.node_location_emitter( + content_non_header, + segment_anchor_tag_that_object_belongs_to, + obj_cite_number, + cntr, + heading_ptr-1, + an_object["is"] + ); auto substantive_obj_misc_tuple = - obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); - an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; + obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); // ... + an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; // ... anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "block"; + comp_obj_block.is_a = "quote"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -2587,15 +2608,19 @@ template SiSUdocAbstraction() { processing.remove("verse"); ++cntr; type["blocks"] = TriState.off; - type["block"] = TriState.off; - } else if (type["quote"] == TriState.closing) { + type["quote"] = TriState.off; + } else if (type["table"] == TriState.closing) { obj_cite_number = ocn_emit(type["ocn_status"]); an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = - bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_number, segment_anchor_tag_that_object_belongs_to); - an_object["is"] = "quote"; + bookindex_extract_hash.bookindex_nugget_hash( + an_object["bookindex_nugget"], + obj_cite_number, + segment_anchor_tag_that_object_belongs_to + ); + an_object["is"] = "table"; auto comp_obj_location = node_construct.node_location_emitter( content_non_header, @@ -2606,13 +2631,13 @@ template SiSUdocAbstraction() { an_object["is"] ); auto substantive_obj_misc_tuple = - obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); // ... - an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; // ... + obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa); + an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; anchor_tags = substantive_obj_misc_tuple[sObj.anchor_tags]; comp_obj_block = comp_obj_block.init; comp_obj_block.use = "body"; comp_obj_block.is_of = "block"; - comp_obj_block.is_a = "quote"; + comp_obj_block.is_a = "table"; comp_obj_block.ocn = obj_cite_number; comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); comp_obj_block.text = an_object["substantive"]; @@ -2620,11 +2645,11 @@ template SiSUdocAbstraction() { comp_obj_block.inline_notes_star = substantive_obj_misc_tuple[sObj.notes_star]; comp_obj_block.inline_links = substantive_obj_misc_tuple[sObj.links]; the_document_body_section ~= comp_obj_block; + type["blocks"] = TriState.off; + type["table"] = TriState.off; object_reset(an_object); processing.remove("verse"); ++cntr; - type["blocks"] = TriState.off; - type["quote"] = TriState.off; } } auto _book_index_(L,I,O,T,B)( @@ -2634,7 +2659,7 @@ template SiSUdocAbstraction() { return ref T type, B opt_action_bool, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(book_idx_tmp) == string)); static assert(is(typeof(an_object) == string[string])); @@ -2693,7 +2718,7 @@ template SiSUdocAbstraction() { return ref R heading_match_rgx, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(dochead_make_identify_unmarked_headings) == string)); static assert(is(typeof(heading_match_str) == string[string])); @@ -2784,7 +2809,7 @@ template SiSUdocAbstraction() { return ref R heading_match_rgx, return ref T type ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(heading_match_rgx) == Regex!(char)[string])); @@ -2850,7 +2875,7 @@ template SiSUdocAbstraction() { return ref T type, return ref Me dochead_meta_aa, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(line_occur) == int[string])); static assert(is(typeof(an_object) == string[string])); @@ -3004,7 +3029,7 @@ template SiSUdocAbstraction() { return ref T type, return ref C line_occur, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(line) == char[])); static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(an_object_key) == string)); @@ -3105,7 +3130,7 @@ template SiSUdocAbstraction() { n_foot_sp_plus = 0; } string url_links(Ot)(Ot obj_txt_in) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } /+ url matched +/ @@ -3159,7 +3184,7 @@ template SiSUdocAbstraction() { return obj_txt_in; } auto footnotes_endnotes_markup_and_number_or_stars(Ot)(Ot obj_txt_in, bool reset_note_numbers) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } /+ endnotes (regular) +/ @@ -3216,7 +3241,7 @@ template SiSUdocAbstraction() { } private auto object_notes_and_links_(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { - debug(asserts){ + debug(asserts) { assert(is(typeof(obj_txt_in) == string)); } } @@ -3270,17 +3295,18 @@ template SiSUdocAbstraction() { } invariant() { } - auto para(Ot)(Ot obj_txt_in) + auto munge_heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { obj_txt["munge"]=(obj_txt_in) - .replaceFirst(rgx.para_attribs, "") - .replaceFirst(rgx.obj_cite_number_off_all, ""); - auto t = object_notes_and_links_(obj_txt["munge"]); + .replaceFirst(rgx.heading, "") + .replaceFirst(rgx.obj_cite_number_off_all, "") + .strip; + auto t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers); debug(munge) { writeln(__LINE__); writeln(obj_txt_in); @@ -3289,18 +3315,19 @@ template SiSUdocAbstraction() { } return t; } - auto heading(Ot)(Ot obj_txt_in, bool reset_note_numbers=false) + invariant() { + } + auto munge_para(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { obj_txt["munge"]=(obj_txt_in) - .replaceFirst(rgx.heading, "") - .replaceFirst(rgx.obj_cite_number_off_all, "") - .strip; - auto t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers); + .replaceFirst(rgx.para_attribs, "") + .replaceFirst(rgx.obj_cite_number_off_all, ""); + auto t = object_notes_and_links_(obj_txt["munge"]); debug(munge) { writeln(__LINE__); writeln(obj_txt_in); @@ -3309,22 +3336,7 @@ template SiSUdocAbstraction() { } return t; } - invariant() { - } - string code(Ot)(Ot obj_txt_in) - in { - debug(asserts){ - assert(is(typeof(obj_txt_in) == string)); - } - } - body { - obj_txt_in = (obj_txt_in).replaceAll(rgx.two_spaces, mkup.nbsp ~ mkup.nbsp); - obj_txt["munge"] = obj_txt_in; - return obj_txt["munge"]; - } - invariant() { - } - auto group(string obj_txt_in) + auto munge_group(string obj_txt_in) in { } body { obj_txt["munge"]=obj_txt_in; @@ -3333,9 +3345,9 @@ template SiSUdocAbstraction() { } invariant() { } - auto block(Ot)(Ot obj_txt_in) + auto munge_block(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3346,9 +3358,9 @@ template SiSUdocAbstraction() { } invariant() { } - auto verse(Ot)(Ot obj_txt_in) + auto munge_verse(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3359,9 +3371,22 @@ template SiSUdocAbstraction() { } invariant() { } - string quote(Ot)(Ot obj_txt_in) + string munge_code(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { + assert(is(typeof(obj_txt_in) == string)); + } + } + body { + obj_txt_in = (obj_txt_in).replaceAll(rgx.two_spaces, mkup.nbsp ~ mkup.nbsp); + obj_txt["munge"] = obj_txt_in; + return obj_txt["munge"]; + } + invariant() { + } + string munge_table(Ot)(Ot obj_txt_in) + in { + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3371,9 +3396,9 @@ template SiSUdocAbstraction() { } invariant() { } - string table(Ot)(Ot obj_txt_in) + string munge_quote(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3383,9 +3408,9 @@ template SiSUdocAbstraction() { } invariant() { } - string comment(Ot)(Ot obj_txt_in) + string munge_comment(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3406,15 +3431,15 @@ template SiSUdocAbstraction() { Ma dochead_make_aa ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(obj_key_) == string)); static assert(is(typeof(dochead_make_aa) == string[string][string])); } } body { - obj_txt["munge"]=obj_[obj_key_].dup; - obj_txt["munge"]=(match(obj_["is"], ctRegex!(`verse|code`))) + obj_txt["munge"] = obj_[obj_key_].dup; + obj_txt["munge"] = (match(obj_["is"], ctRegex!(`verse|code`))) ? obj_txt["munge"] : strip(obj_txt["munge"]); static __gshared string[] anchor_tags_ = []; @@ -3435,37 +3460,38 @@ template SiSUdocAbstraction() { } else if (obj_["lev"] == "1") { writeln("heading anchor tag missing: ", obj_txt["munge"]); } - x =munge.heading(obj_txt["munge"], reset_note_numbers); + x =munge.munge_heading(obj_txt["munge"], reset_note_numbers); reset_note_numbers=false; goto default; case "para": - x = munge.para(obj_txt["munge"]); + x = munge.munge_para(obj_txt["munge"]); goto default; case "group": - x = munge.group(obj_txt["munge"]); + x = munge.munge_group(obj_txt["munge"]); goto default; case "block": - x = munge.block(obj_txt["munge"]); + x = munge.munge_block(obj_txt["munge"]); goto default; case "verse": - x = munge.verse(obj_txt["munge"]); + x = munge.munge_verse(obj_txt["munge"]); goto default; case "code": - obj_txt["munge"]=munge.code(obj_txt["munge"]); - break; - case "quote": - obj_txt["munge"]=munge.quote(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_code(obj_txt["munge"]); break; case "table": - obj_txt["munge"]=munge.table(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_table(obj_txt["munge"]); + break; + case "quote": + obj_txt["munge"] = munge.munge_quote(obj_txt["munge"]); break; case "comment": - obj_txt["munge"]=munge.comment(obj_txt["munge"]); + obj_txt["munge"] = munge.munge_comment(obj_txt["munge"]); break; case "doc_end_reset": munge.initialize_note_numbers(); break; default: + /+ para, heading, group, block, verse +/ obj_txt["munge"]=x[0]; obj_notes_and_links["notes_reg"] = x[1]; obj_notes_and_links["notes_star"] = x[2]; @@ -3487,7 +3513,7 @@ template SiSUdocAbstraction() { auto _clean_heading_toc_(Toc)( Toc heading_toc_, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(heading_toc_) == char[])); } auto m = matchFirst(cast(char[]) heading_toc_, rgx.heading); @@ -3505,7 +3531,7 @@ template SiSUdocAbstraction() { Toc the_table_of_contents_section, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(dochead_make_aa) == string[string][string])); static assert(is(typeof(segment_anchor_tag_that_object_belongs_to) == string)); @@ -3662,13 +3688,12 @@ template SiSUdocAbstraction() { O obj_, Ma dochead_make_aa ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(munge_) == string)); static assert(is(typeof(obj_) == string[string])); static assert(is(typeof(dochead_make_aa) == string[string][string])); } if (dochead_make_aa["make"]["num_top"].length > 0) { - // if (!(match(munge_, rgx.heading_anchor_tag))) { static __gshared int heading_num_top_level=9; static __gshared int heading_num_depth=2; static __gshared int heading_num_0 = 0; @@ -3796,7 +3821,7 @@ template SiSUdocAbstraction() { static string _make_segment_anchor_tags_if_none_provided(M,Lv)(M munge_, Lv lev_) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(munge_) == string)); static assert(is(typeof(lev_) == string)); } @@ -3875,7 +3900,7 @@ template SiSUdocAbstraction() { OH _comp_obj_heading, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_is_) == string)); static assert(is(typeof(obj_raw) == string)); static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); @@ -3942,7 +3967,7 @@ template SiSUdocAbstraction() { string _obj_attributes; string _para_and_blocks(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -3970,121 +3995,121 @@ template SiSUdocAbstraction() { } return _obj_attributes; } - string _para(Ot)(Ot obj_txt_in) + string _heading(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," - ~ " \"is\": \"para\""; + ~ " \"is\": \"heading\""; return _obj_attributes; } invariant() { } - string _heading(Ot)(Ot obj_txt_in) + string _para(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," - ~ " \"is\": \"heading\""; + ~ " \"is\": \"para\""; return _obj_attributes; } invariant() { } - string _code(Ot)(Ot obj_txt_in) + string _group(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"code\""; + ~ " \"is\": \"group\""; return _obj_attributes; } invariant() { } - string _group(Ot)(Ot obj_txt_in) + string _block(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"group\""; + ~ " \"is\": \"block\""; return _obj_attributes; } invariant() { } - string _block(Ot)(Ot obj_txt_in) + string _verse(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"block\""; + ~ " \"is\": \"verse\""; return _obj_attributes; } invariant() { } - string _verse(Ot)(Ot obj_txt_in) + string _code(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"verse\""; + ~ " \"is\": \"code\""; return _obj_attributes; } invariant() { } - string _quote(Ot)(Ot obj_txt_in) + string _table(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"quote\""; + ~ " \"is\": \"table\""; return _obj_attributes; } invariant() { } - string _table(Ot)(Ot obj_txt_in) + string _quote(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } body { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," - ~ " \"is\": \"table\""; + ~ " \"is\": \"quote\""; return _obj_attributes; } invariant() { } string _comment(Ot)(Ot obj_txt_in) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } } @@ -4101,7 +4126,7 @@ template SiSUdocAbstraction() { Oi obj_is_, OH _comp_obj_heading, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(_obj_attrib) == string)); static assert(is(typeof(obj_is_) == string)); static assert(is(typeof(_comp_obj_heading) == ObjGenericComposite)); @@ -4139,7 +4164,7 @@ template SiSUdocAbstraction() { S segment_anchor_tag, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_section) == string)); static assert(is(typeof(obj_cite_number) == int)); } @@ -4213,7 +4238,7 @@ template SiSUdocAbstraction() { auto bookindex_report_indented(BI)( BI bookindex_unordered_hashes ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); } auto mainkeys= @@ -4244,7 +4269,7 @@ template SiSUdocAbstraction() { auto bookindex_write_section(BI)( BI bookindex_unordered_hashes ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); } auto mainkeys=bookindex_unordered_hashes.byKey.array.sort().release; @@ -4275,7 +4300,7 @@ template SiSUdocAbstraction() { N obj_cite_number, B opt_action_bool, ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); static assert(is(typeof(obj_cite_number) == int)); static assert(is(typeof(opt_action_bool) == bool[string])); @@ -4597,7 +4622,7 @@ template SiSUdocAbstraction() { return ref BJ bib_arr_json ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unsorted_incomplete) == string[])); static assert(is(typeof(bib_arr_json) == JSONValue[])); } @@ -4628,7 +4653,7 @@ template SiSUdocAbstraction() { Bi biblio_unordered, return ref BJ bib_arr_json ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unordered) == string[])); static assert(is(typeof(bib_arr_json) == JSONValue[])); } @@ -4659,7 +4684,7 @@ template SiSUdocAbstraction() { return biblio_unsorted_array_of_json_objects; } final private JSONValue[] biblio_sort(BJ)(BJ biblio_unordered) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_unordered) == JSONValue[])); } JSONValue[] biblio_sorted_; @@ -4677,7 +4702,7 @@ template SiSUdocAbstraction() { return biblio_sorted_; } void biblio_debug(BJ)(BJ biblio_sorted) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(biblio_sorted) == JSONValue[])); } debug(biblio0) { @@ -4704,7 +4729,7 @@ template SiSUdocAbstraction() { I is_ ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(lev_markup_number) == string)); static assert(is(typeof(segment_anchor_tag) == string)); static assert(is(typeof(obj_cite_number_) == int)); @@ -4770,7 +4795,7 @@ template SiSUdocAbstraction() { fL flag_links, ) in { - debug(asserts){ + debug(asserts) { static assert(is(typeof(_text) == string)); static assert(is(typeof(lev) == string)); static assert(is(typeof(lev_markup_number) == string)); @@ -4949,7 +4974,7 @@ template SiSUdocAbstraction() { O an_object, Lv lv ) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(lv) == int[string])); } @@ -5125,7 +5150,7 @@ template SiSUdocAbstraction() { } } auto assertions_flag_types_block_status_none_or_closed(T)(T type) { - debug(asserts){ + debug(asserts) { static assert(is(typeof(type) == int[string])); } assert( diff --git a/src/sdp/ao_defaults.d b/src/sdp/ao_defaults.d index a5fda94..b6a3eb9 100644 --- a/src/sdp/ao_defaults.d +++ b/src/sdp/ao_defaults.d @@ -260,37 +260,37 @@ template SiSUrgxInitFlags() { /+ regex flags +/ int[string] flags_type_init() { int[string] flags_type_init = [ - "make_headings" : 0, - "header_make" : 0, - "header_meta" : 0, - "heading" : 0, - "biblio_section" : 0, - "glossary_section" : 0, - "blurb_section" : 0, - "para" : 0, - "blocks" : 0, // 0..2 generic - "code" : 0, // 0..2 - "poem" : 0, // 0..2 - "table" : 0, // 0..2 - "group" : 0, // 0..2 - "block" : 0, // 0..2 - "quote" : 0, // 0..2 - "verse_new" : 0, - "curly_code" : 0, - "curly_poem" : 0, - "curly_table" : 0, - "curly_group" : 0, - "curly_block" : 0, - "curly_quote" : 0, - "tic_code" : 0, - "tic_poem" : 0, - "tic_table" : 0, - "tic_group" : 0, - "tic_block" : 0, - "tic_quote" : 0, - "ocn_status" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings - "ocn_status_multi_obj" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings - "book_index" : 0, + "make_headings" : 0, + "header_make" : 0, + "header_meta" : 0, + "heading" : 0, + "biblio_section" : 0, + "glossary_section" : 0, + "blurb_section" : 0, + "para" : 0, + "blocks" : 0, // 0..2 generic + "code" : 0, // 0..2 + "poem" : 0, // 0..2 + "table" : 0, // 0..2 + "group" : 0, // 0..2 + "block" : 0, // 0..2 + "quote" : 0, // 0..2 + "verse_new" : 0, + "curly_code" : 0, + "curly_poem" : 0, + "curly_group" : 0, + "curly_block" : 0, + "curly_quote" : 0, + "curly_table" : 0, + "tic_code" : 0, + "tic_poem" : 0, + "tic_group" : 0, + "tic_block" : 0, + "tic_quote" : 0, + "tic_table" : 0, + "ocn_status" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings + "ocn_status_multi_obj" : 0, // 0 obj_cite_number; 1 no obj_cite_number; 2 no obj_cite_number & dummy headings + "book_index" : 0, ]; return flags_type_init; } diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d index a6459b2..4acfe41 100644 --- a/src/sdp/ao_read_source_files.d +++ b/src/sdp/ao_read_source_files.d @@ -99,7 +99,7 @@ template SiSUrawMarkupContent() { } final private char[][] markupSourceLineArray(in char[] src_text) { char[][] source_line_arr = - split(cast(char[]) src_text, rgx.newline_eol_strip_preceeding); + split(cast(char[]) src_text, rgx.newline_eol_strip_preceding); return source_line_arr; } auto markupSourceReadIn(in string fn_src) { diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index 20535d0..109b0cf 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -20,7 +20,7 @@ template SiSUrgxInit() { static trailing_comma = ctRegex!(",[ ]*$"); static trailing_linebreak = ctRegex!(",[ ]{1,2}\\\\\\\\\n[ ]{4}$","m"); static newline_eol_delimiter = ctRegex!("\n"); - static newline_eol_strip_preceeding = ctRegex!("[ ]*\n"); + static newline_eol_strip_preceding = ctRegex!("[ ]*\n"); static newline_eol_delimiter_only = ctRegex!("^\n"); static line_delimiter_ws_strip = ctRegex!("[ ]*\n[ ]*"); static para_delimiter = ctRegex!("\n[ ]*\n+"); diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d index d356ee5..cc330b2 100644 --- a/src/sdp/output_html.d +++ b/src/sdp/output_html.d @@ -464,54 +464,6 @@ template outputHTML() { margin-left: 5%; margin-right: 1%; } - #top_band { - position: absolute; - top: 0; - bottom: 80px; - width: 100%; - } - #top_band_search { - position: absolute; - top: 0px; - right: 0px; - margin-left: 75%; - width: 20%; - } - #column_left { - position: absolute; - top: 80px; - left: 0; - margin-left: 1%; - width: 20%; - } - #column_center { - position: absolute; - top: 80px; - margin-left: 20%; - width: 55%; - } - #column_right { - position: absolute; - top: 80px; - right: 0px; - margin-left: 75%; - width: 25%; - } - #pane_major { - position: absolute; - top: 0px; - left: 0; - margin-left: 0; - width: 80%; - } - #pane_minor { - position: absolute; - top: 0px; - right: 0px; - margin-left: 75%; - width: 20%; - background-color: #aaaaaa; - } .norm, .bold, .verse, .group, .block, .alt { line-height: 133%; margin-left: 0em; @@ -946,66 +898,6 @@ template outputHTML() { padding-left: 9em; text-indent: 0em; } - p.it0 { - margin-left: 0em; - margin-top: 6px; - margin-bottom: 0px; - line-height: 100%; - } - p.it1 { - margin-left: 1em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it2 { - margin-left: 2em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it3 { - margin-left: 3em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it4 { - margin-left: 4em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it5 { - margin-left: 5em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it6 { - margin-left: 6em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it7 { - margin-left: 7em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it8 { - margin-left: 8em; - margin-top: 0px; - margin-bottom: 0px; - line-height: 100%; - } - p.it9 { - margin-left: 9em; - margin-bottom: 0px; - margin-top: 0px; - line-height: 100%; - } p.block { } p.group { } p.alt { } @@ -1085,33 +977,6 @@ template outputHTML() { margin-right: 0px; text-align: center; } - p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent { - font-size: 80%; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 2mm; - margin-right: 4px; - text-align: left; - } - p.pane { } - p.pane_title { - font-weight: bold; - margin-bottom: 0px; - } - p.pane_blurb { - font-size: 10px; - margin-bottom: 0px; - } - p.pane_link { - font-size: 10px; - margin-bottom: 0px; - margin-left: 4mm; - } - p.pane_indent { - font-size: 10px; - margin-bottom: 0px; - margin-left: 4mm; - } p.concordance_word { line-height: 150%; font-weight: bold; @@ -1145,35 +1010,6 @@ template outputHTML() { margin-top: 1px; margin-bottom: 3px; } - p.quickref { - font-size: 10px; - font-style: italic; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-right: 5px; - text-align: left; - } - p.bigref { - font-size: 11px; - font-weight: bold; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-right: 5px; - text-align: center; - } - p.letter { - font-weight: bold; - font-size: 80%; - margin-left: 0em; - margin-top: 2px; - margin-bottom: 2px; - margin-right: 6px; - text-align: left; - color: white; - background: #880000; - } tt { font-family: inconsolata, andale mono, courier new, courier, monospace; background-color: #eeeeee; @@ -1209,73 +1045,6 @@ template outputHTML() { p.right,th.right,td.right { text-align: right; } - #horizontal_links { - background: #eeeeee; - margin-left: 5%; - margin-right: 5%; - } - #horizontal { - margin: 0; - padding: 0 0 0 10px; - border-top: 1px solid #000077; - border-bottom: 1px solid #000077; - } - #horizontal li { - margin: 0 0 0 0; - padding: 0 16px 0 0; - display: inline; - list-style-type: none; - text-align: left; - background: none; - } - #horizontal a { - line-height: 12px; - margin: 0 0 0 0; - text-decoration: none; - color: #000077; - } - #horizontal a.active, #horizontal a:hover { - border-bottom: 2px solid #777777; - padding-bottom: 2px; - color: #000077; - } - #horizontal a:hover { - color: #000077; - } - #document_versions { - position: absolute; - top: 10mm; - right: 2%; - width: 12%; - float: right; - } - #vertical_links { - position: absolute; - top: 10mm; - right: 0px; - width: 20%; - background: #dddddd; - float: right; - } - #vertical { - padding: 0 12px 0px 0px; - margin-left: 2%; - margin-right: 2%; - } - #vertical li { - display: block; - list-style-type: none; - } - #vertical a { - line-height: 12px; - text-decoration: none; - color: #000077; - } - #vertical a.active, #vertical a:hover { - border-bottom: 2px solid #777777; - padding-bottom: 2px; - color: #000077; - } ul, li { list-style-type: none; list-style: none; @@ -1296,51 +1065,6 @@ template outputHTML() { } ul { } - li.bullet { margin-left: 1em; } - li.i1 { margin-left: 2em; } - li.i2 { margin-left: 3em; } - li.i3 { margin-left: 4em; } - li.i4 { margin-left: 5em; } - li.i5 { margin-left: 6em; } - li.i6 { margin-left: 7em; } - li.i7 { margin-left: 8em; } - li.i8 { margin-left: 9em; } - li.i9 { margin-left: 10em; } - li.doc, li.ref, li.refcenter { - margin-top: 0px; - margin-bottom: 0px; - margin-right: 0px; - font-size: 8px; - font-style: normal; - text-align: left; - } - li.doc { - background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; - padding-left: 16px; - margin-left: 10px; - margin-right: 0px; - } - li.ref { - background: none; - padding-left: 0; - margin-left: 0; - color: #777777; - } - li.refcenter { - background: url(../image_sys/bullet_09.png) no-repeat 0px 6px; - padding-left: 20px; - margin-left: 10%; - font-size: 9px; - color: #777777; - text-align: center; - } - li.refbold { - list-style-type: none; - padding-left: 16px; - margin-left: 0; - margin-right: 10mm; - font-weight: bold; - } h0, h1, h2, h3, h4, h5, h6, h7 { font-weight: bold; line-height: 120%; @@ -1352,9 +1076,6 @@ template outputHTML() { margin-top: 10px; margin-bottom: 0px; } - h0.center, h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center { - text-align: center; - } h0 { font-size: 125%; } h1 { font-size: 120%; } h2 { font-size: 115%; } @@ -1372,88 +1093,6 @@ template outputHTML() { h7.i {margin-left: 8em;} h8.i {margin-left: 9em;} h9.i {margin-left: 10em;} - h1.top_band { - display: inline; - text-align: left; - margin-top: 0; - margin-left: 4mm; - text-indent: 0mm; - font-weight: bold; - font-size: 120%; - } - h2.top_band_tiny { - font-size: 10px; - font-weight: normal; - margin-top: 0px; - margin-left: 4mm; - text-indent: 0mm; - margin-bottom: 0px; - color: #777777; - margin-left: 140px; - margin-right: 0px; - text-align: left; - } - p.top_band { - display: inline; - text-align: left; - margin-top: 0; - margin-left: 140px; - text-indent: 0mm; - font-weight: bold; - font-size: 120%; - } - p.top_band_tiny { - font-size: 10px; - margin-top: 0px; - margin-bottom: 0px; - color: #777777; - margin-left: 140px; - margin-right: 0px; - text-align: left; - } - p.top_band_image { - float: left; - display: inline; - text-align: left; - margin-top: 0; - margin-left: 1mm; - text-indent: 0mm; - margin-right: 1mm; - } - .banner, .subbanner { - font-weight: bold; - text-align: center; - margin-left: 10mm; - margin-right: 15mm; - margin-top: 20px; - margin-bottom: 10px; - } - h0.banner { - font-size: 125%; - } - h1.banner { - font-size: 120%; - } - h1.subbanner { - font-size: 115%; - } - h2.banner { - font-size: 110%; - } - h3.banner { - color: #990000; - font-size: 105%; - } - h4.banner { - color: #ff0000; - font-size: 100%; - } - h5.banner { - } - h6.banner { - } - h7.banner { - } .toc { font-weight: normal; margin-top: 6px; @@ -1499,46 +1138,6 @@ template outputHTML() { font-size: 85%; line-height: 100%; } - .microtoc { - margin-top: 2px; - margin-bottom: 2px; - } - h0.microtoc { - margin-left: 0mm; - font-size: 120%; - } - h1.microtoc { - margin-left: 0mm; - font-size: 115%; - } - h2.microtoc { - margin-left: 5mm; - font-size: 110%; - } - h3.microtoc { - margin-left: 10mm; - font-size: 105%; - } - h4.microtoc { - margin-left: 15mm; - font-weight: normal; - font-size: 100%; - } - h5.microtoc { - margin-left: 20mm; - font-weight: normal; - font-size: 95%; - } - h6.microtoc { - margin-left: 25mm; - font-weight: normal; - font-size: 90%; - } - h7.microtoc { - margin-left: 30mm; - font-weight: normal; - font-size: 85%; - } .subtoc { margin-right: 34%; font-weight: normal; @@ -1656,60 +1255,6 @@ template outputHTML() { div.toc a:hover { color: #000000; background-color: #f9f9aa; - } - .minitoc { - font-weight: normal; - margin-top: 2px; - margin-bottom: 2px; - } - h1.minitoc, h2.minitoc, h3.minitoc { - margin-left: 0em; - font-weight: bold; - text-align: left; - font-size: 90%; - margin-top: 4px; - margin-bottom: 4px; - } - h4.minitoc { - margin-left: 0em; - font-size: 90%; - } - h5.minitoc { - margin-left: 1em; - font-size: 85%; - } - h6.minitoc { - margin-left: 2em; - font-size: 85%; - } - h7.minitoc { - margin-left: 3em; - font-size: 80%; - } - h0.minitoc { - margin-left: 0em; - font-size: 90%; - } - h0.c, h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c { - text-align: center - } - h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red { - text-align: center; - color: #ff0000; - margin-left: 5mm; - text-indent: 5mm; - margin-top: 30px; - margin-bottom: 20px; - margin-right: 15mm; - } - h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby { - text-align: center; - color: #990000; - margin-left: 5mm; - text-indent: 5mm; - margin-top: 30px; - margin-bottom: 20px; - margin-right: 15mm; }"; return css; } diff --git a/src/sdp/output_xhtmls.d b/src/sdp/output_xhtmls.d index d39298c..dcbc8f8 100644 --- a/src/sdp/output_xhtmls.d +++ b/src/sdp/output_xhtmls.d @@ -30,7 +30,7 @@ template outputXHTMLs() { .replaceAll(rgx.xhtml_ampersand, "&") .replaceAll(rgx.xhtml_less_than, "<") .replaceAll(rgx.xhtml_greater_than, ">") - .replaceAll(rgx.xhtml_line_break, "<br />"); + .replaceAll(rgx.xhtml_line_break, "<br>"); return _txt; } string font_face(string _txt){ |