diff options
| -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){ | 
