From 0c693b23c4ff8f98a151884a24f150a5ff746dd4 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 16 Oct 2020 19:16:18 -0400 Subject: org mode, unique code-block names & adjust headers - avoid org-mode undefined behavior, provide unique code-block names --- org/metaverse.org | 497 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 317 insertions(+), 180 deletions(-) (limited to 'org/metaverse.org') diff --git a/org/metaverse.org b/org/metaverse.org index 697dd5e..668ac15 100644 --- a/org/metaverse.org +++ b/org/metaverse.org @@ -7,6 +7,7 @@ #+COPYRIGHT: Copyright (C) 2015 - 2020 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty +#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t #+PROPERTY: header-args :exports code #+PROPERTY: header-args+ :noweb yes #+PROPERTY: header-args+ :eval no @@ -34,7 +35,12 @@ template docAbstraction() { /+ ↓ abstraction mixins +/ <> /+ ↓ abstraction struct init +/ - <> + <> + <> + <> + <> + <> + <> <> /+ ↓ abstract marked up document +/ @system auto docAbstraction(CMM,Opt,Mf) ( @@ -46,14 +52,16 @@ template docAbstraction() { ) { static auto rgx = RgxI(); /+ ↓ abstraction init +/ - <> + <> + <> /+ abstraction init ↑ +/ <> /+ ↓ ↻ loop markup document/text line by line +/ srcDocLoop: foreach (line; markup_sourcefile_content) { /+ ↓ markup document/text line by line +/ // "line" variable can be empty but should never be null - <> + <> + <> if ( pith["block_is"] == eN.blk_is.code && pith["block_state"] == eN.blk_state.on ) { @@ -61,25 +69,76 @@ template docAbstraction() { } else if (!matchFirst(line, rgx.skip_from_regular_parse)) { /+ object other than "code block" object +/ /+ (includes regular text paragraph, headings & blocks other than code) +/ /+ heading, glossary, blurb, poem, group, block, quote, table +/ - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> } else { /+ not within a block group +/ <> if (line.matchFirst(rgx.block_open)) { <> } else if (!line.empty) { /+ line not empty +/ /+ non blocks (headings, paragraphs) & closed blocks +/ - <> + <> + <> + <> + <> + <> + <> + <> } else if (pith["block_state"] == eN.blk_state.closing) { /+ line empty, with blocks flag +/ <> } else { /+ line.empty, post contents, empty variables: +/ - <> + <> + <> + <> } // close else for line empty } // close else for not the above } // close after non code, other blocks or regular text <> } /+ ← srcDocLoop closed: loop markup document/text line by line +/ /+ ↓ post loop markup document/text +/ - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> <> <> <> @@ -89,48 +148,117 @@ template docAbstraction() { <> <> <> - <> - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> <> <> <> <> <> <> - <> - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> <> - <> - <> - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> /+ abstraction functions ↑ +/ /+ ↓ abstraction function emitters +/ <> /+ +/ - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> <> <> <> <> - <> + <> + <> <> /+ +/ <> <> <> - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> <> <> /+ +/ <> <> - <> + <> + <> + <> + <> /+ +/ - <> + <> + <> + <> + <> + <> /+ +/ - <> + <> + <> + <> + <> + <> + <> /+ +/ - <> + <> + <> + <> + <> /+ abstraction functions emitters ↑ +/ /+ ↓ abstraction functions assertions +/ <> @@ -170,7 +298,7 @@ mixin spineRgxIn; *** initialize :initialize: **** declare enum -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_0 #+BEGIN_SRC d @safe static auto eN() { struct _e { @@ -228,7 +356,7 @@ mixin spineRgxIn; **** initialize general -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_1 #+BEGIN_SRC d /+ initialize +/ ObjGenericComposite[] the_table_of_contents_section; @@ -320,7 +448,7 @@ enum DomTags { none, open, close, close_and_open, open_still, } **** method heading ancestors -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_2 #+BEGIN_SRC d @safe pure ObjGenericComposite obj_heading_ancestors()( ObjGenericComposite obj, @@ -379,7 +507,7 @@ enum DomTags { none, open, close, close_and_open, open_still, } **** method dom markup tags -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_3 #+BEGIN_SRC d @safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()( ObjGenericComposite obj, @@ -429,7 +557,7 @@ enum DomTags { none, open, close, close_and_open, open_still, } **** method dom collapsed tags -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_4 #+BEGIN_SRC d @safe pure ObjGenericComposite obj_dom_set_collapsed_tags()( ObjGenericComposite obj, @@ -479,7 +607,7 @@ enum DomTags { none, open, close, close_and_open, open_still, } **** method ocn emit -#+NAME: abs_top_init_struct +#+NAME: abs_top_init_struct_5 #+BEGIN_SRC d @safe static auto ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); @@ -568,7 +696,7 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio *** scope -#+NAME: abs_init_rest +#+NAME: abs_init_rest_0 #+BEGIN_SRC d scope(success) { } @@ -589,7 +717,7 @@ scope(exit) { *** init rest -#+NAME: abs_init_rest +#+NAME: abs_init_rest_1 #+BEGIN_SRC d mixin spineNode; auto node_para_int_ = node_metadata_para_int; @@ -747,7 +875,7 @@ debug (substitutions) { ** 2. ↻ *LOOP* _loop: process document body_ [+6] :loop: *** Loop scope :scope: -#+NAME: abs_in_loop_body_00 +#+NAME: abs_in_loop_body_00_0 #+BEGIN_SRC d /+ scope +/ scope(exit) { @@ -775,7 +903,7 @@ debug(srclines) { *** check whether object number is on or turned off :ocn: -#+NAME: abs_in_loop_body_00 +#+NAME: abs_in_loop_body_00_1 #+BEGIN_SRC d if (!line.empty) { pith = line._check_ocn_status_(pith); @@ -795,7 +923,7 @@ continue; **** _non code objects_ (non-code blocks & regular text: by line) [+4] :non_code: ***** inline fontface markup -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_0 #+BEGIN_SRC d line = line.inline_markup_faces; // by text line (rather than by text object), linebreaks in para problematic #+END_SRC @@ -803,7 +931,7 @@ line = line.inline_markup_faces; // by text line (rather than by text object), l ***** in section (biblio, glossary, blurb) +(block group)+ [+1] :block:active: ****** in section: biblio :biblio: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_1 #+BEGIN_SRC d if (line.matchFirst(rgx.heading_biblio) || (pith["section"] == eN.sect.bibliography @@ -832,7 +960,7 @@ if there is a glossary section you need to: - need indentation and regular paragraph inline markup - reconstitute the document with the glossary section following the endnotes -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_2 #+BEGIN_SRC d } else if (line.matchFirst(rgx.heading_glossary) || (pith["section"] == eN.sect.glossary @@ -940,7 +1068,7 @@ if there is a blurb section you need to: - need regular paragraph inline markup - reconstitute the document with the blurb section at the very end of the doucment -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_3 #+BEGIN_SRC d } else if (line.matchFirst(rgx.heading_blurb) || (pith["section"] == eN.sect.blurb @@ -1093,14 +1221,14 @@ if there is a blurb section you need to: ***** in blocks [+1] :block:active: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_4 #+BEGIN_SRC d } else if (pith["block_state"] == eN.blk_state.on) { #+END_SRC ****** in block: quote :quote: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_5 #+BEGIN_SRC d if (pith["block_is"] == eN.blk_is.quote) { line = line @@ -1112,7 +1240,7 @@ if there is a blurb section you need to: ****** in block: group :group: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_6 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.group) { line = line @@ -1125,7 +1253,7 @@ if there is a blurb section you need to: ****** in block: block :block: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_7 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.block) { line = line @@ -1141,7 +1269,7 @@ if there is a blurb section you need to: ****** in block: poem :poem: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_8 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.poem) { an_object = line.flow_txt_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); @@ -1150,7 +1278,7 @@ if there is a blurb section you need to: ****** in block: table :table: -#+NAME: abs_in_loop_body_non_code_obj +#+NAME: abs_in_loop_body_non_code_obj_9 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.table) { an_object = line.flow_txt_block_table(an_object, pith, conf_make_meta); @@ -1186,7 +1314,7 @@ continue; ****** line not empty [+2] ******* asserts :assert: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_0 #+BEGIN_SRC d assert( !line.empty, @@ -1214,7 +1342,7 @@ if (pith["block_state"] == eN.blk_state.closing) { ******* book index :bookindex: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_1 #+BEGIN_SRC d if (line.matchFirst(rgx.book_index_item) || line.matchFirst(rgx.book_index_item_open) @@ -1224,14 +1352,14 @@ if (line.matchFirst(rgx.book_index_item) ******* not book index [+1] -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_2 #+BEGIN_SRC d } else { /+ not book_index +/ #+END_SRC ******** matched: comment :comment:match: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_3 #+BEGIN_SRC d an_object_key = "body_nugget"; if (auto m = line.matchFirst(rgx.comment)) { /+ matched comment +/ @@ -1253,7 +1381,7 @@ if (line.matchFirst(rgx.book_index_item) ******** flag !set & line !exist: heading or para :heading:paragraph: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_4 #+BEGIN_SRC d } else if ((line_occur["para"] == eN.bi.off && line_occur["heading"] == eN.bi.off) @@ -1298,7 +1426,7 @@ if (line.matchFirst(rgx.book_index_item) ******** line exist: heading :heading: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_5 #+BEGIN_SRC d } else if (line_occur["heading"] > eN.bi.off) { /+ heading +/ debug(heading) { @@ -1310,7 +1438,7 @@ if (line.matchFirst(rgx.book_index_item) ******** line exist: para :para: -#+NAME: abs_in_loop_body_not_block_obj +#+NAME: abs_in_loop_body_not_block_obj_6 #+BEGIN_SRC d } else if (line_occur["para"] > eN.bi.off) { /+ paragraph +/ debug(para) { @@ -1347,7 +1475,7 @@ an_object = line.flow_block_flag_line_empty_( ****** line empty [+1] ******* assert line empty :assert: -#+NAME: abs_in_loop_body_not_block_obj_line_empty +#+NAME: abs_in_loop_body_not_block_obj_line_empty_0 #+BEGIN_SRC d assert( line.empty, @@ -1362,7 +1490,7 @@ assert( ******* heading object :heading:object: -#+NAME: abs_in_loop_body_not_block_obj_line_empty +#+NAME: abs_in_loop_body_not_block_obj_line_empty_1 #+BEGIN_SRC d if (_new_doc) { tag_assoc = tag_assoc.init; @@ -1496,7 +1624,7 @@ if (pith["txt_is"] == eN.txt_is.heading ******* paragraph object :paragraph:object: -#+NAME: abs_in_loop_body_not_block_obj_line_empty +#+NAME: abs_in_loop_body_not_block_obj_line_empty_2 #+BEGIN_SRC d } else if (pith["txt_is"] == eN.txt_is.para && line_occur["para"] > eN.bi.off @@ -1627,7 +1755,7 @@ if (the_document_body_section.length > 0) { *** tie up preparation of document sections **** endnotes section (scroll & seg) :endnotes: -#+NAME: abs_post +#+NAME: abs_post_0 #+BEGIN_SRC d auto en_tuple = note_section.endnote_objects(obj_cite_digits, opt_action); @@ -1647,7 +1775,7 @@ debug(endnotes) { **** no glossary section? :glossary: -#+NAME: abs_post +#+NAME: abs_post_1 #+BEGIN_SRC d if (an_object["glossary_nugget"].length == 0) { comp_obj_heading_ = comp_obj_heading_.init; @@ -1676,7 +1804,7 @@ debug(glossary) { **** bibliography section (objects) :bibliography: -#+NAME: abs_post +#+NAME: abs_post_2 #+BEGIN_SRC d auto biblio_unsorted_incomplete = biblio_arr_json.dup; auto biblio = Bibliography(); @@ -1684,7 +1812,7 @@ auto biblio_ordered = biblio.flow_bibliography_(biblio_unsorted_incomplete, bib_arr_json); #+END_SRC -#+NAME: abs_post +#+NAME: abs_post_3 #+BEGIN_SRC d if (biblio_ordered.length > 0) { { @@ -1792,7 +1920,7 @@ if (biblio_ordered.length > 0) { } #+END_SRC -#+NAME: abs_post +#+NAME: abs_post_4 #+BEGIN_SRC d debug(bibliosection) { foreach (o; the_bibliography_section) { @@ -1837,7 +1965,7 @@ JSONValue biblio_entry_tags_jsonstr = `{ **** bookindex section (scroll & seg) :book:index: -#+NAME: abs_post +#+NAME: abs_post_5 #+BEGIN_SRC d auto bi = BookIndexReportSection(); auto bi_tuple @@ -1858,7 +1986,7 @@ debug(bookindex) { **** no blurb section? :blurb: -#+NAME: abs_post +#+NAME: abs_post_6 #+BEGIN_SRC d if (an_object["blurb_nugget"].length == 0) { comp_obj_heading_ = comp_obj_heading_.init; @@ -1889,7 +2017,7 @@ debug(blurb) { **** toc backmatter, table of contents backmatter (scroll & seg) :contents: -#+NAME: abs_post +#+NAME: abs_post_7 #+BEGIN_SRC d indent = [ "hang_position" : 1, @@ -1990,7 +2118,7 @@ debug(toc) { **** doc head (separate document head from body, make space for toc) -#+NAME: abs_post +#+NAME: abs_post_8 #+BEGIN_SRC d the_document_head_section ~= the_document_body_section[0]; the_document_body_section = the_document_body_section[1..$]; @@ -2014,7 +2142,7 @@ NOTE there are issues attempting to do this on first pass as: ***** Methods ****** get ancestors markup -#+NAME: abs_post +#+NAME: abs_post_9 #+BEGIN_SRC d @safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { if (obj.metainfo.is_a == "heading") { @@ -2107,7 +2235,7 @@ NOTE there are issues attempting to do this on first pass as: ****** get ancestors collapsed -#+NAME: abs_post +#+NAME: abs_post_10 #+BEGIN_SRC d @safe int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { if (obj.metainfo.is_a == "heading") { @@ -2200,7 +2328,7 @@ NOTE there are issues attempting to do this on first pass as: - substantive object numbers already exist - number un-numbered non-substantive text -#+NAME: abs_post +#+NAME: abs_post_11 #+BEGIN_SRC d /+ multiple 1~ levels, loop through document body +/ if (the_document_body_section.length > 1) { @@ -2228,7 +2356,7 @@ if (the_document_body_section.length > 1) { ***** ↻ Loop section: endnotes [en] -#+NAME: abs_post +#+NAME: abs_post_12 #+BEGIN_SRC d if (the_endnotes_section.length > 1) { segnames["html"] ~= "endnotes"; @@ -2249,7 +2377,7 @@ if (the_endnotes_section.length > 1) { ***** ↻ Loop section: glossary [gl] -#+NAME: abs_post +#+NAME: abs_post_13 #+BEGIN_SRC d if (the_glossary_section.length > 1) { segnames["html"] ~= "glossary"; @@ -2270,7 +2398,7 @@ if (the_glossary_section.length > 1) { ***** ↻ Loop section: bibliography [bb] -#+NAME: abs_post +#+NAME: abs_post_14 #+BEGIN_SRC d if (the_bibliography_section.length > 1) { segnames["html"] ~= "bibliography"; @@ -2291,7 +2419,7 @@ if (the_bibliography_section.length > 1) { ***** ↻ Loop section: book index [bi] -#+NAME: abs_post +#+NAME: abs_post_15 #+BEGIN_SRC d if (the_bookindex_section.length > 1) { segnames["html"] ~= "bookindex"; @@ -2312,7 +2440,7 @@ if (the_bookindex_section.length > 1) { ***** ↻ Loop section: blurb [bl] -#+NAME: abs_post +#+NAME: abs_post_16 #+BEGIN_SRC d if (the_blurb_section.length > 1) { segnames["html"] ~= "blurb"; @@ -2372,7 +2500,7 @@ Build here: ***** Methods ****** decendants -#+NAME: abs_post +#+NAME: abs_post_17 #+BEGIN_SRC d @safe auto get_decendants()(ObjGenericComposite[] document_sections) { int[string] _heading_ocn_decendants; @@ -2425,7 +2553,7 @@ Build here: ****** images: extract -#+NAME: abs_post +#+NAME: abs_post_18 #+BEGIN_SRC d string[] _images; @safe string[] extract_images()(string content_block) { @@ -2440,7 +2568,7 @@ string[] segnames_0_to_4; ****** images: dimensions -#+NAME: abs_post +#+NAME: abs_post_19 #+BEGIN_SRC d @system auto _image_dimensions(O,M)(O obj, M manifested) { if (obj.has.image_without_dimensions) { @@ -2493,7 +2621,7 @@ string[] segnames_0_to_4; - book index - footnotes and footnote numbers -#+NAME: abs_post +#+NAME: abs_post_20 #+BEGIN_SRC d @safe auto _links(O)(O obj) { if (auto m = obj.text.match(rgx.inline_link_stow_uri)) { @@ -2518,7 +2646,7 @@ string[] segnames_0_to_4; ***** ↻ Loop section: head -#+NAME: abs_post +#+NAME: abs_post_21 #+BEGIN_SRC d foreach (ref obj; the_document_head_section) { if (obj.metainfo.is_a == "heading") { @@ -2550,7 +2678,7 @@ foreach (ref obj; the_document_head_section) { ***** ↻ Loop section: toc [to] -#+NAME: abs_post +#+NAME: abs_post_22 #+BEGIN_SRC d if (the_table_of_contents_section.length > 1) { /+ scroll +/ @@ -2580,7 +2708,7 @@ if (the_table_of_contents_section.length > 1) { ***** ↻ Loop section: document body [bd] -#+NAME: abs_post +#+NAME: abs_post_23 #+BEGIN_SRC d /+ multiple 1~ levels, loop through document body +/ if (the_document_body_section.length > 1) { @@ -2631,7 +2759,7 @@ auto image_list = (_images.sort()).uniq; - endnotes have their own number, (also use in node) and they belong to calling object -#+NAME: abs_post +#+NAME: abs_post_24 #+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_endnotes_section.length > 1) { @@ -2676,7 +2804,7 @@ if (the_endnotes_section.length > 1) { - add glossary numbering, (also use in node) no need to show in text -#+NAME: abs_post +#+NAME: abs_post_25 #+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_glossary_section.length > 1) { @@ -2721,7 +2849,7 @@ if (the_glossary_section.length > 1) { - add bibliography numbering, (also use in node) no need to show in text -#+NAME: abs_post +#+NAME: abs_post_26 #+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_bibliography_section.length > 1) { @@ -2766,7 +2894,7 @@ if (the_bibliography_section.length > 1) { - add book index numbering?, (also use in node) no need to show in text -#+NAME: abs_post +#+NAME: abs_post_27 #+BEGIN_SRC d /+ optional only one 1~ level +/ int ocn_ = obj_cite_digits.object_number; @@ -2821,7 +2949,7 @@ if (the_bookindex_section.length > 1) { / ***** ↻ Loop section: blurb [bl] -#+NAME: abs_post +#+NAME: abs_post_28 #+BEGIN_SRC d /+ optional only one 1~ level +/ if (the_blurb_section.length > 1) { @@ -2864,7 +2992,7 @@ if (the_blurb_section.length > 1) { ***** ↻ Loop sections: get decendants -#+NAME: abs_post +#+NAME: abs_post_29 #+BEGIN_SRC d if (the_document_body_section.length > 1) { auto pairs = get_decendants( @@ -2962,7 +3090,7 @@ if (the_document_body_section.length > 1) { **** TODO update BUG? -#+NAME: abs_post +#+NAME: abs_post_30 #+BEGIN_SRC d /+ TODO - note create/insert heading object sole purpose eof close all open tags @@ -3000,7 +3128,7 @@ comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt); ** 4. _return document tuple_ :post: *** _the document_ :document: -#+NAME: abs_post +#+NAME: abs_post_31 #+BEGIN_SRC d ObjGenericComposite[][string] document_the = [ "head": the_document_head_section, @@ -3020,7 +3148,7 @@ ObjGenericComposite[][string] document_the = [ *** document _section keys_ sequence -#+NAME: abs_post +#+NAME: abs_post_32 #+BEGIN_SRC d string[][string] document_section_keys_sequenced = [ "scroll": ["head", "toc", "body",], @@ -3068,7 +3196,7 @@ if ((opt_action.html) *** dup -#+NAME: abs_post +#+NAME: abs_post_33 #+BEGIN_SRC d string[] segnames_4 = segnames["html"].dup; string[] segnames_lv1_to_4 = segnames["epub"].dup; @@ -3080,7 +3208,7 @@ debug(segnames) { *** clean out structure -#+NAME: abs_post +#+NAME: abs_post_34 #+BEGIN_SRC d destroy(the_document_head_section); destroy(the_table_of_contents_section); @@ -3270,7 +3398,7 @@ functions used in document abstraction *** make substitutions **** project -#+NAME: abs_functions_substitutions +#+NAME: abs_functions_substitutions_0 #+BEGIN_SRC d @safe char[] _doc_header_and_make_substitutions_(CMM)( char[] line, @@ -3291,7 +3419,7 @@ functions used in document abstraction **** fontface -#+NAME: abs_functions_substitutions +#+NAME: abs_functions_substitutions_1 #+BEGIN_SRC d @safe char[] _doc_header_and_make_substitutions_fontface_(CMM)( char[] line, @@ -3324,7 +3452,7 @@ functions used in document abstraction **** block start (open) block :start: ***** { block starts function -#+NAME: abs_functions_block +#+NAME: abs_functions_block_0 #+BEGIN_SRC d @safe void flow_txt_block_start()( char[] line, @@ -3336,14 +3464,14 @@ functions used in document abstraction ****** block (various) curly open :curly: -#+NAME: abs_functions_block +#+NAME: abs_functions_block_1 #+BEGIN_SRC d static auto rgx = RgxI(); #+END_SRC ******* code -#+NAME: abs_functions_block +#+NAME: abs_functions_block_2 #+BEGIN_SRC d if (auto m = line.matchFirst(rgx.block_curly_code_open)) { dochas["codeblock"]++; @@ -3363,7 +3491,7 @@ functions used in document abstraction ******* poem -#+NAME: abs_functions_block +#+NAME: abs_functions_block_3 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_poem_open)) { dochas["poem"]++; @@ -3385,7 +3513,7 @@ functions used in document abstraction ******* group -#+NAME: abs_functions_block +#+NAME: abs_functions_block_4 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_group_open)) { dochas["group"]++; @@ -3405,7 +3533,7 @@ functions used in document abstraction ******* block -#+NAME: abs_functions_block +#+NAME: abs_functions_block_5 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_block_open)) { dochas["block"]++; @@ -3425,7 +3553,7 @@ functions used in document abstraction ******* quote -#+NAME: abs_functions_block +#+NAME: abs_functions_block_6 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_quote_open)) { dochas["quote"]++; @@ -3445,7 +3573,7 @@ functions used in document abstraction ******* table -#+NAME: abs_functions_block +#+NAME: abs_functions_block_7 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_table_open)) { /+ curly table open +/ debug(table) { // table (curly) open @@ -3464,7 +3592,7 @@ functions used in document abstraction ******* table special -#+NAME: abs_functions_block +#+NAME: abs_functions_block_8 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_curly_table_special_markup)) { /+ table: special table block markup syntax! +/ dochas["table"]++; @@ -3478,7 +3606,7 @@ functions used in document abstraction ****** block (various) tic open :tic: ******* code -#+NAME: abs_functions_block +#+NAME: abs_functions_block_9 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_code_open)) { dochas["codeblock"]++; @@ -3498,7 +3626,7 @@ functions used in document abstraction ******* poem -#+NAME: abs_functions_block +#+NAME: abs_functions_block_10 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_poem_open)) { dochas["poem"]++; @@ -3520,7 +3648,7 @@ functions used in document abstraction ******* group -#+NAME: abs_functions_block +#+NAME: abs_functions_block_11 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_group_open)) { dochas["group"]++; @@ -3540,7 +3668,7 @@ functions used in document abstraction ******* block -#+NAME: abs_functions_block +#+NAME: abs_functions_block_12 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_block_open)) { dochas["block"]++; @@ -3560,7 +3688,7 @@ functions used in document abstraction ******* quote -#+NAME: abs_functions_block +#+NAME: abs_functions_block_13 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_quote_open)) { dochas["quote"]++; @@ -3580,7 +3708,7 @@ functions used in document abstraction ******* table -#+NAME: abs_functions_block +#+NAME: abs_functions_block_14 #+BEGIN_SRC d } else if (auto m = line.matchFirst(rgx.block_tic_table_open)) { /+ tic table open +/ debug(table) { // table (tic) open @@ -3600,7 +3728,7 @@ functions used in document abstraction ***** } -#+NAME: abs_functions_block +#+NAME: abs_functions_block_15 #+BEGIN_SRC d } #+END_SRC @@ -3659,7 +3787,7 @@ functions used in document abstraction ***** biblio block :biblio: ****** biblio tag map -#+NAME: abs_functions_block_biblio +#+NAME: abs_functions_block_biblio_0 #+BEGIN_SRC d @safe final string biblio_tag_map()(string abr) { auto btm = [ @@ -3711,7 +3839,7 @@ final string biblio_tag_map_()(string abr) { ****** biblio block -#+NAME: abs_functions_block_biblio +#+NAME: abs_functions_block_biblio_1 #+BEGIN_SRC d @system void flow_txt_block_biblio( char[] line, @@ -4325,7 +4453,7 @@ process and use an_object["table_head"] (then empty it) - table_column_widths, int[] column widths (as given or calculate average) - show table walls, bool -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_0 #+BEGIN_SRC d @system void flow_table_closed_make_special_notation_table_(N,CMM)( char[] line, @@ -4374,7 +4502,7 @@ process and use an_object["table_head"] (then empty it) ***** { line empty, _make block_ -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_1 #+BEGIN_SRC d @system string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( char[] line, @@ -4404,7 +4532,7 @@ process and use an_object["table_head"] (then empty it) ****** make: quote block -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_2 #+BEGIN_SRC d if (pith["block_state"] == eN.blk_state.closing) { if (pith["block_is"] == eN.blk_is.quote) { @@ -4463,7 +4591,7 @@ process and use an_object["table_head"] (then empty it) ****** make: group block -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_3 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.group) { obj_cite_digits = ocn_emit(pith["ocn"]); @@ -4521,7 +4649,7 @@ process and use an_object["table_head"] (then empty it) ****** make: block -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_4 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.block) { obj_cite_digits = ocn_emit(pith["ocn"]); @@ -4578,7 +4706,7 @@ process and use an_object["table_head"] (then empty it) ****** make: poem -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_5 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.poem) { an_object["bookindex_nugget"] @@ -4622,7 +4750,7 @@ process and use an_object["table_head"] (then empty it) ****** make: code block -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_6 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.code) { obj_cite_digits = ocn_emit(pith["ocn"]); @@ -4680,7 +4808,7 @@ process and use an_object["table_head"] (then empty it) ****** make: table -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_7 #+BEGIN_SRC d } else if (pith["block_is"] == eN.blk_is.table) { comp_obj_block = comp_obj_block.init; @@ -4730,7 +4858,7 @@ process and use an_object["table_head"] (then empty it) ***** } -#+NAME: abs_functions_block_line_status_empty +#+NAME: abs_functions_block_line_status_empty_8 #+BEGIN_SRC d } return an_object; @@ -4796,7 +4924,7 @@ process and use an_object["table_head"] (then empty it) *** heading or paragraph :heading:paragraph: **** heading found :heading: -#+NAME: abs_functions_heading +#+NAME: abs_functions_heading_0 #+BEGIN_SRC d @safe string[string] flow_heading_found_()( char[] line, @@ -4883,7 +5011,7 @@ process and use an_object["table_head"] (then empty it) **** heading make set :heading: -#+NAME: abs_functions_heading +#+NAME: abs_functions_heading_1 #+BEGIN_SRC d @safe char[] flow_heading_make_set_()( char[] line, @@ -4945,7 +5073,7 @@ process and use an_object["table_head"] (then empty it) **** heading match :heading: -#+NAME: abs_functions_heading +#+NAME: abs_functions_heading_2 #+BEGIN_SRC d @safe string[string] flow_heading_matched_(CMM)( char[] line, @@ -5101,7 +5229,7 @@ process and use an_object["table_head"] (then empty it) **** para match :para: -#+NAME: abs_functions_para +#+NAME: abs_functions_para_0 #+BEGIN_SRC d @safe string[string] flow_para_match_()( char[] line, @@ -5160,7 +5288,7 @@ process and use an_object["table_head"] (then empty it) **** text font face -#+NAME: abs_functions_para +#+NAME: abs_functions_para_1 #+BEGIN_SRC d @safe char[] font_faces_line()( char[] textline, @@ -5197,7 +5325,7 @@ process and use an_object["table_head"] (then empty it) ***** table instructions -#+NAME: abs_functions_table +#+NAME: abs_functions_table_0 #+BEGIN_SRC d @safe ObjGenericComposite flow_table_instructions(H)( return ref ObjGenericComposite table_object, @@ -5228,7 +5356,7 @@ process and use an_object["table_head"] (then empty it) ***** table array munge -#+NAME: abs_functions_table +#+NAME: abs_functions_table_1 #+BEGIN_SRC d @safe ObjGenericComposite flow_table_array_munge(T)( return ref ObjGenericComposite table_object, @@ -5358,7 +5486,7 @@ process and use an_object["table_head"] (then empty it) ***** table substantive munge -#+NAME: abs_functions_table +#+NAME: abs_functions_table_2 #+BEGIN_SRC d @system ObjGenericComposite flow_table_substantive_munge(T)( return ref ObjGenericComposite table_object, @@ -5380,7 +5508,7 @@ process and use an_object["table_head"] (then empty it) ***** table substantive munge special -#+NAME: abs_functions_table +#+NAME: abs_functions_table_3 #+BEGIN_SRC d @system ObjGenericComposite flow_table_substantive_munge_special(T)( return ref ObjGenericComposite table_object, @@ -5460,7 +5588,7 @@ process and use an_object["table_head"] (then empty it) ****** { struct, inline markup munge -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_0 #+BEGIN_SRC d @safe static struct ObjInlineMarkupMunge { string[string] obj_txt; @@ -5478,7 +5606,7 @@ process and use an_object["table_head"] (then empty it) } #+END_SRC -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_1 #+BEGIN_SRC d @safe static auto images()(string obj_txt_in) { static auto mng = InlineMarkup(); @@ -5514,7 +5642,7 @@ process and use an_object["table_head"] (then empty it) ******* footnotes endnotes markup -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_2 #+BEGIN_SRC d @safe TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { /+ endnotes (regular) +/ @@ -5591,7 +5719,7 @@ process and use an_object["table_head"] (then empty it) ******* object notes and links -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_3 #+BEGIN_SRC d @safe private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( string obj_txt_in, @@ -5662,7 +5790,7 @@ process and use an_object["table_head"] (then empty it) - identified text by heading level marker followed by text until two new lines - general markup -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_4 #+BEGIN_SRC d @safe auto munge_heading()( string obj_txt_in, @@ -5693,7 +5821,7 @@ process and use an_object["table_head"] (then empty it) - footnotes/endnotes - links -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_5 #+BEGIN_SRC d @safe auto munge_para()(string obj_txt_in) { obj_txt["munge"] = (obj_txt_in) @@ -5712,7 +5840,7 @@ process and use an_object["table_head"] (then empty it) ******* quote -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_6 #+BEGIN_SRC d @safe string munge_quote()(string obj_txt_in) { obj_txt["munge"] = obj_txt_in; @@ -5732,7 +5860,7 @@ process and use an_object["table_head"] (then empty it) - drop spaces - keep newlines? -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_7 #+BEGIN_SRC d @safe auto munge_group(string obj_txt_in) { TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in.split("\n\n").join(" \\\\\n \\\\\n")); @@ -5753,7 +5881,7 @@ process and use an_object["table_head"] (then empty it) - keep newlines - newlines detected and kept? -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_8 #+BEGIN_SRC d @safe auto munge_block()(string obj_txt_in) { TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in); @@ -5772,7 +5900,7 @@ process and use an_object["table_head"] (then empty it) - footnotes/endnotes - links? -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_9 #+BEGIN_SRC d @safe auto munge_verse()(string obj_txt_in) { TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt_in); @@ -5790,7 +5918,7 @@ process and use an_object["table_head"] (then empty it) - no general markup - one special character represented by mkup.nbsp ░ -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_10 #+BEGIN_SRC d @safe string munge_code()(string obj_txt_in) { obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp); @@ -5805,7 +5933,7 @@ process and use an_object["table_head"] (then empty it) - table block identified by open an close tags - table markup -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_11 #+BEGIN_SRC d @safe string munge_table()(string obj_txt_in) { obj_txt["munge"] = obj_txt_in; @@ -5817,7 +5945,7 @@ process and use an_object["table_head"] (then empty it) ******* comment -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_12 #+BEGIN_SRC d @safe string munge_comment()(string obj_txt_in) { obj_txt["munge"] = obj_txt_in; @@ -5829,7 +5957,7 @@ process and use an_object["table_head"] (then empty it) ****** } -#+NAME: meta_emitters_obj_inline_markup_munge +#+NAME: meta_emitters_obj_inline_markup_munge_13 #+BEGIN_SRC d } #+END_SRC @@ -6054,7 +6182,7 @@ private: ******** make heading number & segment anchor tags if instructed :markup:inline:segment:anchor:tags: -#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags +#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_0 #+BEGIN_SRC d static int[] heading_num = [ 0, 0, 0, 0 ]; static string heading_number_auto_composite = ""; @@ -6207,7 +6335,7 @@ private: ******** make segment anchor tags if not provided :markup:inline:segment:anchor:tags: -#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags +#+NAME: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags_1 #+BEGIN_SRC d static int heading_num_lev1 = 0; @safe static string _make_segment_anchor_tags_if_none_provided()( @@ -6338,7 +6466,7 @@ struct ObjAttributes { ******** para & blocks -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_0 #+BEGIN_SRC d @safe string txt_para_and_blocks()(string obj_txt_in) { if (obj_txt_in.matchFirst(rgx.para_bullet)) { @@ -6368,7 +6496,7 @@ struct ObjAttributes { ******** heading -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_1 #+BEGIN_SRC d @safe string txt_heading()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6382,7 +6510,7 @@ struct ObjAttributes { ******** para -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_2 #+BEGIN_SRC d @safe string txt_para()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6396,7 +6524,7 @@ struct ObjAttributes { ******** quote -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_3 #+BEGIN_SRC d @safe string txt_quote()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6410,7 +6538,7 @@ struct ObjAttributes { ******** group -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_4 #+BEGIN_SRC d @safe string txt_group()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6424,7 +6552,7 @@ struct ObjAttributes { ******** block -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_5 #+BEGIN_SRC d @safe string txt_block()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6438,7 +6566,7 @@ struct ObjAttributes { ******** verse -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_6 #+BEGIN_SRC d @safe string txt_verse()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6452,7 +6580,7 @@ struct ObjAttributes { ******** code -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_7 #+BEGIN_SRC d @safe string txt_code()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6466,7 +6594,7 @@ struct ObjAttributes { ******** table -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_8 #+BEGIN_SRC d @safe string txt_table()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," @@ -6480,7 +6608,7 @@ struct ObjAttributes { ******** comment -#+NAME: meta_emitters_obj_attributes_private_an_attribute +#+NAME: meta_emitters_obj_attributes_private_an_attribute_9 #+BEGIN_SRC d @safe string txt_comment()(string obj_txt_in) { _obj_attributes = " \"use\": \"comment\"," @@ -6642,7 +6770,7 @@ struct BookIndexReportIndent { ***** book index (sort &) report section :report:section: ****** { book index struct open -#+NAME: meta_emitters_book_index_report_section +#+NAME: meta_emitters_book_index_report_section_0 #+BEGIN_SRC d struct BookIndexReportSection { int mkn, skn; @@ -6652,7 +6780,7 @@ struct BookIndexReportSection { ******* bookindex write section -#+NAME: meta_emitters_book_index_report_section +#+NAME: meta_emitters_book_index_report_section_1 #+BEGIN_SRC d @safe void bookindex_write_section()( string[][string][string] bookindex_unordered_hashes @@ -6687,7 +6815,7 @@ struct BookIndexReportSection { ******* book index (sort &) build section :report:section: -#+NAME: meta_emitters_book_index_report_section +#+NAME: meta_emitters_book_index_report_section_2 #+BEGIN_SRC d @system auto bookindex_build_abstraction_section(N,B)( string[][string][string] bookindex_unordered_hashes, @@ -6850,14 +6978,14 @@ struct BookIndexReportSection { ****** } -#+NAME: meta_emitters_book_index_report_section +#+NAME: meta_emitters_book_index_report_section_3 #+BEGIN_SRC d } #+END_SRC **** (end)notes section :endnotes:section: -#+NAME: meta_emitters_endnotes +#+NAME: meta_emitters_endnotes_0 #+BEGIN_SRC d struct NotesSection { string[string] object_notes; @@ -6868,7 +6996,7 @@ struct NotesSection { ***** { gather notes for endnote section struct open -#+NAME: meta_emitters_endnotes +#+NAME: meta_emitters_endnotes_1 #+BEGIN_SRC d @safe private auto gather_notes_for_endnote_section( ObjGenericComposite[] contents_am, @@ -6954,7 +7082,7 @@ struct NotesSection { ****** gathered notes -#+NAME: meta_emitters_endnotes +#+NAME: meta_emitters_endnotes_2 #+BEGIN_SRC d @safe private auto gathered_notes() { string[][string] endnotes_; @@ -6971,7 +7099,7 @@ struct NotesSection { ****** endnote objects -#+NAME: meta_emitters_endnotes +#+NAME: meta_emitters_endnotes_3 #+BEGIN_SRC d @safe private auto endnote_objects(N,O)( N obj_cite_digits, @@ -7087,7 +7215,7 @@ struct NotesSection { ***** } -#+NAME: meta_emitters_endnotes +#+NAME: meta_emitters_endnotes_4 #+BEGIN_SRC d } #+END_SRC @@ -7095,14 +7223,14 @@ struct NotesSection { **** bibliography :bibliography: ***** { biblio struct -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_0 #+BEGIN_SRC d struct Bibliography { #+END_SRC ****** biblio -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_1 #+BEGIN_SRC d @system public JSONValue[] flow_bibliography_()( return ref string[] biblio_unsorted_incomplete, @@ -7133,7 +7261,7 @@ struct Bibliography { ****** biblio unsorted complete -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_2 #+BEGIN_SRC d @system final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( string[] biblio_unordered, @@ -7167,7 +7295,7 @@ struct Bibliography { ****** biblio sort -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_3 #+BEGIN_SRC d @system final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { JSONValue[] biblio_sorted_; @@ -7188,7 +7316,7 @@ struct Bibliography { ****** biblio debug -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_4 #+BEGIN_SRC d @system void biblio_debug()(JSONValue[] biblio_sorted) { debug(biblio0) { @@ -7203,7 +7331,7 @@ struct Bibliography { ***** } -#+NAME: meta_emitters_bibliography +#+NAME: meta_emitters_bibliography_5 #+BEGIN_SRC d } #+END_SRC @@ -7211,7 +7339,7 @@ struct Bibliography { **** node structure metadata :structure:metadata:node: ***** { metadata node struct -#+NAME: meta_emitters_metadata +#+NAME: meta_emitters_metadata_0 #+BEGIN_SRC d struct NodeStructureMetadata { int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7; @@ -7222,7 +7350,7 @@ struct NodeStructureMetadata { ****** node metadata emitter -#+NAME: meta_emitters_metadata +#+NAME: meta_emitters_metadata_1 #+BEGIN_SRC d @safe ObjGenericComposite node_location_emitter(La,Ta,N)( string lev_markup_number, @@ -7282,7 +7410,7 @@ struct NodeStructureMetadata { ****** node metadata emitter heading, (including most segnames & their pointers) -#+NAME: meta_emitters_metadata +#+NAME: meta_emitters_metadata_2 #+BEGIN_SRC d @safe ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( string _text, @@ -7484,7 +7612,7 @@ struct NodeStructureMetadata { ***** } -#+NAME: meta_emitters_metadata +#+NAME: meta_emitters_metadata_3 #+BEGIN_SRC d } #+END_SRC @@ -7711,7 +7839,16 @@ set abstracted objects for downstream processing module doc_reform.meta.metadoc_object_setter; template ObjectSetter() { /+ structs +/ - <> + <> + <> + <> + <> + <> + <> + <> + <> + <> + <> } #+END_SRC @@ -7732,7 +7869,7 @@ struct HeadingAttrib { *** _composite object_ [#A] -#+NAME: meta_structs_init +#+NAME: meta_structs_init_0 #+BEGIN_SRC d struct DocObj_MetaInfo_ { string is_of_part = ""; // frontmatter, body, backmatter @@ -7811,7 +7948,7 @@ struct DocObj_MetaInfo_ { **** object text attributes -#+NAME: meta_structs_init +#+NAME: meta_structs_init_1 #+BEGIN_SRC d struct DocObj_TxtAttrib_ { int indent_base = 0; @@ -7823,7 +7960,7 @@ struct DocObj_TxtAttrib_ { **** object has within it -#+NAME: meta_structs_init +#+NAME: meta_structs_init_2 #+BEGIN_SRC d struct DocObj_Has_ { bool inline_links = false; @@ -7836,7 +7973,7 @@ struct DocObj_Has_ { **** table attributes -#+NAME: meta_structs_init +#+NAME: meta_structs_init_3 #+BEGIN_SRC d struct DocObj_Table_ { int number_of_columns = 0; @@ -7849,7 +7986,7 @@ struct DocObj_Table_ { **** code attributes -#+NAME: meta_structs_init +#+NAME: meta_structs_init_4 #+BEGIN_SRC d struct DocObj_CodeBlock_ { string syntax = ""; @@ -7859,7 +7996,7 @@ struct DocObj_CodeBlock_ { **** stow (things to be protected from regular text transformations, so far links) -#+NAME: meta_structs_init +#+NAME: meta_structs_init_5 #+BEGIN_SRC d struct DocObj_Stow_ { string[] link = []; @@ -7868,7 +8005,7 @@ struct DocObj_Stow_ { **** pointers -#+NAME: meta_structs_init +#+NAME: meta_structs_init_6 #+BEGIN_SRC d struct DocObj_Pointer_ { int doc_object = 0; @@ -7879,7 +8016,7 @@ struct DocObj_Pointer_ { **** tags -#+NAME: meta_structs_init +#+NAME: meta_structs_init_7 #+BEGIN_SRC d struct DocObj_Tags_ { string[] heading_ancestors_text = [ "", "", "", "", "", "", "", "", ]; @@ -7898,7 +8035,7 @@ struct DocObj_Tags_ { **** composite object the parts -#+NAME: meta_structs_init +#+NAME: meta_structs_init_8 #+BEGIN_SRC d struct ObjGenericComposite { string text = ""; @@ -7915,7 +8052,7 @@ struct ObjGenericComposite { *** The Objects: generic composite object array -#+NAME: meta_structs_init +#+NAME: meta_structs_init_9 #+BEGIN_SRC d struct TheObjects { ObjGenericComposite[] oca; -- cgit v1.2.3