aboutsummaryrefslogtreecommitdiffhomepage
path: root/org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2021-12-03 22:11:59 -0500
committerRalph Amissah <ralph.amissah@gmail.com>2021-12-03 22:17:58 -0500
commitbb03ff22fa3af8b731a591fd450b85c5c0c57f02 (patch)
treee89e74aa6e619fd25ca18c24997bbd062e6e2ba0 /org
parentxmls, html header band (diff)
metaverse, xml dom close eof
Diffstat (limited to 'org')
-rw-r--r--org/metaverse.org247
-rw-r--r--org/out_xmls.org32
2 files changed, 179 insertions, 100 deletions
diff --git a/org/metaverse.org b/org/metaverse.org
index 3ea4b56..d562014 100644
--- a/org/metaverse.org
+++ b/org/metaverse.org
@@ -108,6 +108,7 @@ template docAbstraction() {
<<abs_in_loop_body_reloop_get_prior_state>>
} /+ ← srcDocLoop closed: loop markup document/text line by line +/
/+ ↓ post loop markup document/text +/
+ <<abs_loop_body_exit_eof_xml_dom_tail>>
<<abs_post_endnote_tuple>>
<<abs_post_glossary_nugget>>
<<abs_post_biblio_init>>
@@ -362,7 +363,7 @@ mixin spineRgxIn;
#+NAME: abs_top_init_struct_general
#+BEGIN_SRC d
/+ initialize +/
-ObjGenericComposite[] the_table_of_contents_section, the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section, the_dom_tail_section;
+ObjGenericComposite[] the_document_toc_section, the_document_head_section, the_document_body_section, the_document_bibliography_section, the_document_glossary_section, the_document_blurb_section, the_document_xml_dom_tail_section;
string[string] an_object, processing;
string an_object_key;
string[] anchor_tags;
@@ -704,10 +705,13 @@ scope(success) {
scope(failure) {
}
scope(exit) {
+ destroy(the_document_toc_section);
destroy(the_document_head_section);
- destroy(the_table_of_contents_section);
destroy(the_document_body_section);
- destroy(the_bibliography_section);
+ destroy(the_document_bibliography_section);
+ destroy(the_document_glossary_section);
+ destroy(the_document_blurb_section);
+ destroy(the_document_xml_dom_tail_section);
destroy(an_object);
destroy(processing);
destroy(biblio_arr_json);
@@ -837,7 +841,7 @@ tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
auto toc_head = comp_obj_heading_;
html_segnames_ptr_cntr++;
-the_table_of_contents_section = [toc_head];
+the_document_toc_section = [toc_head];
static auto mkup = InlineMarkup();
static auto munge = ObjInlineMarkupMunge();
auto note_section = NotesSection();
@@ -1013,7 +1017,7 @@ if there is a glossary section you need to:
comp_obj_heading_.metainfo.parent_lev_markup = 0;
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
- the_glossary_section ~= comp_obj_heading_;
+ the_document_glossary_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1039,7 +1043,7 @@ if there is a glossary section you need to:
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 1, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 1, 0, 0, 0, 0, 0];
comp_obj_heading_.tags.anchor_tags = ["glossary"];
- the_glossary_section ~= comp_obj_heading_;
+ the_document_glossary_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1058,7 +1062,7 @@ if there is a glossary section you need to:
comp_obj_para.attrib.indent_hang = indent["hang_position"];
comp_obj_para.attrib.indent_base = indent["base_position"];
comp_obj_para.attrib.bullet = bullet;
- the_glossary_section ~= comp_obj_para;
+ the_document_glossary_section ~= comp_obj_para;
}
pith["ocn"] = eN.ocn.on;
}
@@ -1149,7 +1153,7 @@ if there is a blurb section you need to:
comp_obj_heading_.metainfo.parent_lev_markup = 0;
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
- the_blurb_section ~= comp_obj_heading_;
+ the_document_blurb_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1175,7 +1179,7 @@ if there is a blurb section you need to:
comp_obj_heading_.tags.anchor_tags = ["blurb"];
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 1, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 1, 0, 0, 0, 0, 0];
- the_blurb_section ~= comp_obj_heading_;
+ the_document_blurb_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1199,7 +1203,7 @@ if there is a blurb section you need to:
comp_obj_heading_.metainfo.heading_lev_collapsed = an_object["lev_collapsed_number"].to!int; // make int, remove need to conv
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_blurb_section ~= comp_obj_heading_;
+ the_document_blurb_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
} else {
@@ -1218,7 +1222,7 @@ if there is a blurb section you need to:
comp_obj_para.attrib.indent_base = indent["base_position"];
comp_obj_para.has.inline_links = true;
comp_obj_para.attrib.bullet = bullet;
- the_blurb_section ~= comp_obj_para;
+ the_document_blurb_section ~= comp_obj_para;
}
pith["ocn"] = eN.ocn.on;
}
@@ -1582,13 +1586,13 @@ if (pith["txt_is"] == eN.txt_is.heading
= bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, tag_in_seg);
/+ (incrementally build toc) table of contents here! +/
_anchor_tag = obj_cite_digits.identifier;
- the_table_of_contents_section = obj_im.flow_table_of_contents_gather_headings(
+ the_document_toc_section = obj_im.flow_table_of_contents_gather_headings(
an_object,
conf_make_meta,
tag_in_seg,
_anchor_tag,
lev4_subtoc,
- the_table_of_contents_section,
+ the_document_toc_section,
);
if (an_object["lev_markup_number"] == "4") {
segnames["html"] ~= tag_in_seg["seg_lv4"];
@@ -1765,21 +1769,55 @@ if (the_document_body_section.length > 0) {
+/
*** tie up preparation of document sections
+**** in section: xml_dom_tail_section
+
+eof xml_dom_tail_section
+
+#+NAME: abs_loop_body_exit_eof_xml_dom_tail
+#+BEGIN_SRC d
+{ // EOF
+ comp_obj_heading_ = comp_obj_heading_.init;
+ comp_obj_heading_.metainfo.is_of_part = "backmatter";
+ comp_obj_heading_.metainfo.is_of_section = "tail";
+ comp_obj_heading_.metainfo.is_of_type = "para";
+ comp_obj_heading_.metainfo.is_a = "heading";
+ comp_obj_heading_.text = "";
+ comp_obj_heading_.metainfo.ocn = 0;
+ comp_obj_heading_.metainfo.identifier = "";
+ comp_obj_heading_.metainfo.dummy_heading = false;
+ comp_obj_heading_.metainfo.object_number_off = false;
+ comp_obj_heading_.metainfo.object_number_type = 0;
+ comp_obj_heading_.tags.segment_anchor_tag_epub = "_part_eof";
+ comp_obj_heading_.tags.anchor_tag_html = comp_obj_heading_.tags.segment_anchor_tag_epub;
+ comp_obj_heading_.tags.in_segment_html = "tail";
+ comp_obj_heading_.tags.anchor_tags = ["section_eof"];
+ comp_obj_heading_.metainfo.heading_lev_markup = 1;
+ comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
+ comp_obj_heading_.metainfo.parent_ocn = 1;
+ comp_obj_heading_.metainfo.parent_lev_markup = 0;
+ comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0];
+ comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0];
+ the_document_xml_dom_tail_section ~= comp_obj_heading_;
+ tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
+ tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
+}
+#+END_SRC
+
**** endnotes section (scroll & seg) :endnotes:
#+NAME: abs_post_endnote_tuple
#+BEGIN_SRC d
auto en_tuple
= note_section.endnote_objects(obj_cite_digits, opt_action);
-auto the_endnotes_section = en_tuple[0];
+auto the_document_endnotes_section = en_tuple[0];
obj_cite_digits = en_tuple[1];
debug(endnotes) {
writefln(
"%s %s",
__LINE__,
- the_endnotes_section.length
+ the_document_endnotes_section.length
);
- foreach (o; the_endnotes_section) {
+ foreach (o; the_document_endnotes_section) {
writeln(o);
}
}
@@ -1805,10 +1843,10 @@ if (an_object["glossary_nugget"].length == 0) {
comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_glossary_section ~= comp_obj_heading_;
+ the_document_glossary_section ~= comp_obj_heading_;
}
debug(glossary) {
- foreach (gloss; the_glossary_section) {
+ foreach (gloss; the_document_glossary_section) {
writeln(gloss.text);
}
}
@@ -1849,7 +1887,7 @@ if (biblio_ordered.length > 0) {
comp_obj_heading_.metainfo.parent_lev_markup = 0;
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 0, 0, 0, 0, 0, 0];
- the_bibliography_section ~= comp_obj_heading_;
+ the_document_bibliography_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1875,7 +1913,7 @@ if (biblio_ordered.length > 0) {
comp_obj_heading_.metainfo.dom_structure_markedup_tags_status = [ 1, 1, 0, 0, 1, 0, 0, 0];
comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status = [ 1, 1, 1, 0, 0, 0, 0, 0];
comp_obj_heading_.tags.anchor_tags = ["bibliography"];
- the_bibliography_section ~= comp_obj_heading_;
+ the_document_bibliography_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
}
@@ -1909,7 +1947,7 @@ if (biblio_ordered.length > 0) {
comp_obj_para.attrib.indent_base = 1;
comp_obj_para.attrib.bullet = bullet;
comp_obj_para.tags.anchor_tags = [anchor_tag];
- the_bibliography_section ~= comp_obj_para;
+ the_document_bibliography_section ~= comp_obj_para;
}
}
} else {
@@ -1928,14 +1966,14 @@ if (biblio_ordered.length > 0) {
comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_bibliography_section ~= comp_obj_heading_;
+ the_document_bibliography_section ~= comp_obj_heading_;
}
#+END_SRC
#+NAME: abs_post_biblio_debug_write
#+BEGIN_SRC d
debug(bibliosection) {
- foreach (o; the_bibliography_section) {
+ foreach (o; the_document_bibliography_section) {
writeln(o.text);
}
}
@@ -1987,10 +2025,10 @@ auto bi_tuple
opt_action,
);
destroy(bookindex_unordered_hashes);
-auto the_bookindex_section = bi_tuple[0];
+auto the_document_bookindex_section = bi_tuple[0];
obj_cite_digits = bi_tuple[1];
debug(bookindex) {
- foreach (bi_entry; the_bookindex_section) {
+ foreach (bi_entry; the_document_bookindex_section) {
writeln(bi_entry);
}
}
@@ -2018,10 +2056,10 @@ if (an_object["blurb_nugget"].length == 0) {
comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_blurb_section ~= comp_obj_heading_;
+ the_document_blurb_section ~= comp_obj_heading_;
}
debug(blurb) {
- foreach (blurb; the_blurb_section) {
+ foreach (blurb; the_document_blurb_section) {
writeln(blurb.text);
}
}
@@ -2047,7 +2085,7 @@ comp_obj_toc.metainfo.object_number_type = 0;
comp_obj_toc.attrib.indent_hang = indent["hang_position"];
comp_obj_toc.attrib.indent_base = indent["base_position"];
comp_obj_toc.attrib.bullet = false;
-if (the_endnotes_section.length > 1) {
+if (the_document_endnotes_section.length > 1) {
toc_txt_ = format("%s%s%s%s#%s%s",
mkup.lnk_o,
"Endnotes",
@@ -2059,9 +2097,9 @@ if (the_endnotes_section.length > 1) {
toc_txt_= toc_txt_.links_and_images;
comp_obj_toc.text = toc_txt_.to!string.strip;
comp_obj_toc.has.inline_links = true;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
-if (the_glossary_section.length > 1) {
+if (the_document_glossary_section.length > 1) {
toc_txt_ = format("%s%s%s%s#%s%s",
mkup.lnk_o,
"Glossary",
@@ -2073,9 +2111,9 @@ if (the_glossary_section.length > 1) {
toc_txt_= toc_txt_.links_and_images;
comp_obj_toc.text = toc_txt_.to!string.strip;
comp_obj_toc.has.inline_links = true;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
-if (the_bibliography_section.length > 1){
+if (the_document_bibliography_section.length > 1){
toc_txt_ = format("%s%s%s%s#%s%s",
mkup.lnk_o,
"Bibliography",
@@ -2087,9 +2125,9 @@ if (the_bibliography_section.length > 1){
toc_txt_= toc_txt_.links_and_images;
comp_obj_toc.text = toc_txt_.to!string.strip;
comp_obj_toc.has.inline_links = true;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
-if (the_bookindex_section.length > 1) {
+if (the_document_bookindex_section.length > 1) {
toc_txt_ = format("%s%s%s%s#%s%s",
mkup.lnk_o,
"Book Index",
@@ -2101,9 +2139,9 @@ if (the_bookindex_section.length > 1) {
toc_txt_= toc_txt_.links_and_images;
comp_obj_toc.text = toc_txt_.to!string.strip;
comp_obj_toc.has.inline_links = true;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
-if (the_blurb_section.length > 1) {
+if (the_document_blurb_section.length > 1) {
toc_txt_ = format("%s%s%s%s#%s%s",
mkup.lnk_o,
"Blurb",
@@ -2115,14 +2153,14 @@ if (the_blurb_section.length > 1) {
toc_txt_= toc_txt_.links_and_images;
comp_obj_toc.has.inline_links = true;
comp_obj_toc.text = toc_txt_.to!string.strip;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
debug(toc) {
writefln(
"%s %s",
__LINE__,
);
- foreach (toc_linked_heading; the_table_of_contents_section) {
+ foreach (toc_linked_heading; the_document_toc_section) {
writeln(mkup.indent_by_spaces_provided(toc_linked_heading.attrib.indent_hang), toc_linked_heading.text);
}
}
@@ -2136,7 +2174,7 @@ the_document_head_section ~= the_document_body_section[0];
the_document_body_section = the_document_body_section[1..$];
#+END_SRC
-*** ↻ *LOOPs* _post main-loop loops_ :loop:post:
+*** ↻ *LOOPs* _post main-loop loops_ :loop:post: WORKON
**** 1. ↻ _Loop as required_ (e.g. backmatter): loop up to lev4, extract html segnames, set pointers
this extra loop is used/needed to determine pre and (in particular) next segment
@@ -2370,11 +2408,11 @@ if (the_document_body_section.length > 1) {
#+NAME: abs_post_loop_section_endnotes
#+BEGIN_SRC d
-if (the_endnotes_section.length > 1) {
+if (the_document_endnotes_section.length > 1) {
segnames["html"] ~= "endnotes";
segnames["epub"] ~= "endnotes";
html_segnames_ptr = html_segnames_ptr_cntr;
- foreach (ref obj; the_endnotes_section) {
+ foreach (ref obj; the_document_endnotes_section) {
if (obj.metainfo.is_a == "heading") {
obj.metainfo.parent_ocn = obj.metainfo.markedup_ancestors[obj.metainfo.parent_lev_markup];
}
@@ -2391,11 +2429,11 @@ if (the_endnotes_section.length > 1) {
#+NAME: abs_post_loop_section_glossary
#+BEGIN_SRC d
-if (the_glossary_section.length > 1) {
+if (the_document_glossary_section.length > 1) {
segnames["html"] ~= "glossary";
segnames["epub"] ~= "glossary";
html_segnames_ptr = html_segnames_ptr_cntr;
- foreach (ref obj; the_glossary_section) {
+ foreach (ref obj; the_document_glossary_section) {
if (obj.metainfo.is_a == "heading") {
obj.metainfo.parent_ocn = obj.metainfo.markedup_ancestors[obj.metainfo.parent_lev_markup];
}
@@ -2412,11 +2450,11 @@ if (the_glossary_section.length > 1) {
#+NAME: abs_post_loop_section_biblio
#+BEGIN_SRC d
-if (the_bibliography_section.length > 1) {
+if (the_document_bibliography_section.length > 1) {
segnames["html"] ~= "bibliography";
segnames["epub"] ~= "bibliography";
html_segnames_ptr = html_segnames_ptr_cntr;
- foreach (ref obj; the_bibliography_section) {
+ foreach (ref obj; the_document_bibliography_section) {
if (obj.metainfo.is_a == "heading") {
obj.metainfo.parent_ocn = obj.metainfo.markedup_ancestors[obj.metainfo.parent_lev_markup];
}
@@ -2433,11 +2471,11 @@ if (the_bibliography_section.length > 1) {
#+NAME: abs_post_loop_section_bookindex
#+BEGIN_SRC d
-if (the_bookindex_section.length > 1) {
+if (the_document_bookindex_section.length > 1) {
segnames["html"] ~= "bookindex";
segnames["epub"] ~= "bookindex";
html_segnames_ptr = html_segnames_ptr_cntr;
- foreach (ref obj; the_bookindex_section) {
+ foreach (ref obj; the_document_bookindex_section) {
if (obj.metainfo.is_a == "heading") {
obj.metainfo.parent_ocn = obj.metainfo.markedup_ancestors[obj.metainfo.parent_lev_markup];
}
@@ -2454,11 +2492,11 @@ if (the_bookindex_section.length > 1) {
#+NAME: abs_post_loop_section_blurb
#+BEGIN_SRC d
-if (the_blurb_section.length > 1) {
+if (the_document_blurb_section.length > 1) {
segnames["html"] ~= "blurb";
segnames["epub"] ~= "blurb";
html_segnames_ptr = html_segnames_ptr_cntr;
- foreach (ref obj; the_blurb_section) {
+ foreach (ref obj; the_document_blurb_section) {
if (obj.metainfo.is_a == "heading") {
obj.metainfo.parent_ocn = obj.metainfo.markedup_ancestors[obj.metainfo.parent_lev_markup];
}
@@ -2692,11 +2730,11 @@ foreach (ref obj; the_document_head_section) {
#+NAME: abs_post_loop_section_toc
#+BEGIN_SRC d
-if (the_table_of_contents_section.length > 1) {
+if (the_document_toc_section.length > 1) {
/+ scroll +/
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
- foreach (ref obj; the_table_of_contents_section) {
+ foreach (ref obj; the_document_toc_section) {
if (obj.metainfo.is_a == "heading") {
if (obj.metainfo.heading_lev_markup <= 4) {
segnames_0_to_4 ~= obj.tags.segment_anchor_tag_epub;
@@ -2774,12 +2812,12 @@ auto image_list = (_images.sort()).uniq;
#+NAME: abs_post_reloop_section_endnotes
#+BEGIN_SRC d
/+ optional only one 1~ level +/
-if (the_endnotes_section.length > 1) {
+if (the_document_endnotes_section.length > 1) {
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
dom_structure_markedup_tags_status = dom_structure_markedup_tags_status_buffer.dup;
dom_structure_collapsed_tags_status = dom_structure_collapsed_tags_status_buffer.dup;
- foreach (ref obj; the_endnotes_section) {
+ foreach (ref obj; the_document_endnotes_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) {
writeln(obj.text);
@@ -2819,8 +2857,8 @@ if (the_endnotes_section.length > 1) {
#+NAME: abs_post_reloop_section_glossary_get_numbering
#+BEGIN_SRC d
/+ optional only one 1~ level +/
-if (the_glossary_section.length > 1) {
- foreach (ref obj; the_glossary_section) {
+if (the_document_glossary_section.length > 1) {
+ foreach (ref obj; the_document_glossary_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) {
writeln(obj.text);
@@ -2864,8 +2902,8 @@ if (the_glossary_section.length > 1) {
#+NAME: abs_post_reloop_section_biblio_get_numbering
#+BEGIN_SRC d
/+ optional only one 1~ level +/
-if (the_bibliography_section.length > 1) {
- foreach (ref obj; the_bibliography_section) {
+if (the_document_bibliography_section.length > 1) {
+ foreach (ref obj; the_document_bibliography_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) {
writeln(obj.text);
@@ -2912,10 +2950,10 @@ if (the_bibliography_section.length > 1) {
int ocn_ = obj_cite_digits.object_number;
int ocn_bkidx_ = 0;
int ocn_bidx_;
-if (the_bookindex_section.length > 1) { /+ scroll +/
+if (the_document_bookindex_section.length > 1) { /+ scroll +/
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
- foreach (ref obj; the_bookindex_section) {
+ foreach (ref obj; the_document_bookindex_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) {
}
@@ -2964,8 +3002,8 @@ if (the_bookindex_section.length > 1) { /
#+NAME: abs_post_reloop_section_blurb_get_numbering
#+BEGIN_SRC d
/+ optional only one 1~ level +/
-if (the_blurb_section.length > 1) {
- foreach (ref obj; the_blurb_section) {
+if (the_document_blurb_section.length > 1) {
+ foreach (ref obj; the_document_blurb_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) {
writeln(obj.text);
@@ -3010,11 +3048,12 @@ if (the_document_body_section.length > 1) {
auto pairs = get_decendants(
the_document_head_section ~
the_document_body_section ~
- the_endnotes_section ~
- the_glossary_section ~
- the_bibliography_section ~
- the_bookindex_section ~
- the_blurb_section
+ the_document_endnotes_section ~
+ the_document_glossary_section ~
+ the_document_bibliography_section ~
+ the_document_bookindex_section ~
+ the_document_blurb_section ~
+ the_document_xml_dom_tail_section
);
debug(decendants_tuple) {
pairs = pairs.sort();
@@ -3042,8 +3081,19 @@ if (the_document_body_section.length > 1) {
}
}
}
- if (the_endnotes_section.length > 1) {
- foreach (ref obj; the_endnotes_section) {
+ if (the_document_endnotes_section.length > 1) {
+ foreach (ref obj; the_document_endnotes_section) {
+ if (obj.metainfo.is_a == "heading") {
+ foreach (pair; pairs) {
+ if (obj.metainfo.ocn == pair[0]) {
+ obj.metainfo.last_decendant_ocn = pair[1];
+ }
+ }
+ }
+ }
+ }
+ if (the_document_glossary_section.length > 1) {
+ foreach (ref obj; the_document_glossary_section) {
if (obj.metainfo.is_a == "heading") {
foreach (pair; pairs) {
if (obj.metainfo.ocn == pair[0]) {
@@ -3053,8 +3103,8 @@ if (the_document_body_section.length > 1) {
}
}
}
- if (the_glossary_section.length > 1) {
- foreach (ref obj; the_glossary_section) {
+ if (the_document_bibliography_section.length > 1) {
+ foreach (ref obj; the_document_bibliography_section) {
if (obj.metainfo.is_a == "heading") {
foreach (pair; pairs) {
if (obj.metainfo.ocn == pair[0]) {
@@ -3064,8 +3114,8 @@ if (the_document_body_section.length > 1) {
}
}
}
- if (the_bibliography_section.length > 1) {
- foreach (ref obj; the_bibliography_section) {
+ if (the_document_bookindex_section.length > 1) {
+ foreach (ref obj; the_document_bookindex_section) {
if (obj.metainfo.is_a == "heading") {
foreach (pair; pairs) {
if (obj.metainfo.ocn == pair[0]) {
@@ -3075,8 +3125,8 @@ if (the_document_body_section.length > 1) {
}
}
}
- if (the_bookindex_section.length > 1) {
- foreach (ref obj; the_bookindex_section) {
+ if (the_document_blurb_section.length > 1) {
+ foreach (ref obj; the_document_blurb_section) {
if (obj.metainfo.is_a == "heading") {
foreach (pair; pairs) {
if (obj.metainfo.ocn == pair[0]) {
@@ -3086,8 +3136,8 @@ if (the_document_body_section.length > 1) {
}
}
}
- if (the_blurb_section.length > 1) {
- foreach (ref obj; the_blurb_section) {
+ if (the_document_xml_dom_tail_section.length > 1) {
+ foreach (ref obj; the_document_xml_dom_tail_section) {
if (obj.metainfo.is_a == "heading") {
foreach (pair; pairs) {
if (obj.metainfo.ocn == pair[0]) {
@@ -3144,17 +3194,17 @@ comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt);
#+BEGIN_SRC d
ObjGenericComposite[][string] document_the = [
"head": the_document_head_section,
- "toc": the_table_of_contents_section,
+ "toc": the_document_toc_section,
/+ substantive/body: +/
"body": the_document_body_section,
/+ backmatter: +/
- "endnotes": the_endnotes_section,
- "glossary": the_glossary_section,
- "bibliography": the_bibliography_section,
- "bookindex": the_bookindex_section,
- "blurb": the_blurb_section,
+ "endnotes": the_document_endnotes_section,
+ "glossary": the_document_glossary_section,
+ "bibliography": the_document_bibliography_section,
+ "bookindex": the_document_bookindex_section,
+ "blurb": the_document_blurb_section,
/+ dom tail only +/
- "tail": the_dom_tail_section,
+ "tail": the_document_xml_dom_tail_section,
];
#+END_SRC
@@ -3223,13 +3273,14 @@ debug(segnames) {
#+NAME: abs_post_document_reinitialize
#+BEGIN_SRC d
destroy(the_document_head_section);
-destroy(the_table_of_contents_section);
+destroy(the_document_toc_section);
destroy(the_document_body_section);
-destroy(the_endnotes_section);
-destroy(the_glossary_section);
-destroy(the_bibliography_section);
-destroy(the_bookindex_section);
-destroy(the_blurb_section);
+destroy(the_document_endnotes_section);
+destroy(the_document_glossary_section);
+destroy(the_document_bibliography_section);
+destroy(the_document_bookindex_section);
+destroy(the_document_blurb_section);
+destroy(the_document_xml_dom_tail_section);
destroy(segnames);
destroy(bookindex_unordered_hashes);
destroy(an_object);
@@ -6104,7 +6155,7 @@ invariant() {
string[string] tag_in_seg,
string _anchor_tag,
return ref string[][string] lev4_subtoc,
- ObjGenericComposite[] the_table_of_contents_section,
+ ObjGenericComposite[] the_document_toc_section,
) {
ObjGenericComposite comp_obj_toc;
mixin InternalMarkup;
@@ -6144,7 +6195,7 @@ invariant() {
comp_obj_toc.attrib.bullet = false;
comp_obj_toc.text = toc_txt_.to!string.strip;
comp_obj_toc.has.inline_links = true;
- the_table_of_contents_section ~= comp_obj_toc;
+ the_document_toc_section ~= comp_obj_toc;
}
comp_obj_toc = comp_obj_toc.init;
comp_obj_toc.metainfo.is_of_part = "frontmatter";
@@ -6181,7 +6232,7 @@ invariant() {
default:
break;
}
- return the_table_of_contents_section;
+ return the_document_toc_section;
}
invariant() {
}
@@ -7120,7 +7171,7 @@ struct NotesSection {
O opt_action,
) {
mixin spineNode;
- ObjGenericComposite[] the_endnotes_section;
+ ObjGenericComposite[] the_document_endnotes_section;
auto endnotes_ = gathered_notes();
string type_is;
string lev, lev_markup_number, lev_collapsed_number;
@@ -7149,7 +7200,7 @@ struct NotesSection {
comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_endnotes_section ~= comp_obj_heading_;
+ the_document_endnotes_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
++mkn;
@@ -7174,7 +7225,7 @@ struct NotesSection {
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
comp_obj_heading_.tags.anchor_tags = ["endnotes"];
- the_endnotes_section ~= comp_obj_heading_;
+ the_document_endnotes_section ~= comp_obj_heading_;
tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"] = comp_obj_heading_.tags.in_segment_html;
tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;
++mkn;
@@ -7195,7 +7246,7 @@ struct NotesSection {
comp_obj_heading_.metainfo.heading_lev_collapsed = 1;
comp_obj_heading_.metainfo.parent_ocn = 1;
comp_obj_heading_.metainfo.parent_lev_markup = 0;
- the_endnotes_section ~= comp_obj_heading_;
+ the_document_endnotes_section ~= comp_obj_heading_;
}
if (opt_action.backmatter && opt_action.section_endnotes) {
ObjGenericComposite comp_obj_endnote_;
@@ -7219,10 +7270,10 @@ struct NotesSection {
comp_obj_endnote_.tags.anchor_tags = [ endnotes_["anchor"][i] ];
comp_obj_endnote_.has.inline_links = true;
comp_obj_endnote_.text = endnote.inline_markup_faces.strip;
- the_endnotes_section ~= comp_obj_endnote_;
+ the_document_endnotes_section ~= comp_obj_endnote_;
}
}
- auto t = tuple(the_endnotes_section, obj_cite_digits);
+ auto t = tuple(the_document_endnotes_section, obj_cite_digits);
return t;
}
#+END_SRC
diff --git a/org/out_xmls.org b/org/out_xmls.org
index 4ccd2a0..86ee194 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -42,7 +42,8 @@ template outputXHTMLs() {
<<xhtml_format_objects_inline_search_form>>
<<xhtml_format_objects_html_head>>
<<xhtml_format_objects_epub3_seg_head>>
- <<xhtml_format_objects_tail>>
+<<xhtml_format_objects_dom_close>>
+<<xhtml_format_objects_tail>>
<<xhtml_format_objects_inline_images>>
<<xhtml_format_objects_inline_links>>
<<xhtml_format_objects_inline_notes_scroll>>
@@ -464,6 +465,17 @@ import
}
#+END_SRC
+***** xhtml dom tail
+
+#+NAME: xhtml_format_objects_dom_close
+#+BEGIN_SRC d
+@safe string dom_close() {
+ string o;
+ o = format(q"┃</div>┃");
+ return o;
+}
+#+END_SRC
+
***** xhtml tail
#+NAME: xhtml_format_objects_tail
@@ -1759,6 +1771,9 @@ case "backmatter":
case "blurb": assert(part == "blurb");
doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
break;
+ case "tail": assert(part == "tail");
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ break;
default:
{ /+ debug +/
if (doc_matters.opt.action.debug_do
@@ -1800,7 +1815,10 @@ default:
}
}
}
- doc = xhtml_format.html_head(doc_matters, "scroll") ~ doc_html ~ xhtml_format.tail;
+ doc = xhtml_format.html_head(doc_matters, "scroll")
+ ~ doc_html
+ ~ xhtml_format.dom_close
+ ~ xhtml_format.tail;
scroll_write_output(doc, doc_matters);
}
#+END_SRC
@@ -2092,6 +2110,11 @@ case "backmatter":
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
+ case "tail": assert(part == "tail");
+ t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ doc_html[segment_filename] ~= t[0];
+ doc_html_endnotes[segment_filename] ~= t[1];
+ break;
default:
{ /+ debug +/
if (doc_matters.opt.action.debug_do
@@ -2911,6 +2934,11 @@ case "backmatter":
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
+ case "tail": assert(part == "tail");
+ t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ epubWrite.doc_epub3[segment_filename] ~= t[0];
+ epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
+ break;
default:
{ /+ debug +/
if (doc_matters.opt.action.debug_do