diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-12-16 22:50:16 -0500 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-12-17 20:05:25 -0500 |
commit | b69940c0641e56ba9ad0822ad8ad287053199458 (patch) | |
tree | ca9f4584c88ca61b62193fcfb572ba9120b7b3f8 /src/doc_reform | |
parent | org, spine ver & doc header (copyright & license) (diff) |
org, ocda (ongoing)
Diffstat (limited to 'src/doc_reform')
-rw-r--r-- | src/doc_reform/meta/metadoc_from_src.d | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d index e1779ad..7374c76 100644 --- a/src/doc_reform/meta/metadoc_from_src.d +++ b/src/doc_reform/meta/metadoc_from_src.d @@ -1115,8 +1115,7 @@ template docAbstraction() { if (line.matchFirst(rgx.book_index_item) || line.matchFirst(rgx.book_index_item_open) || pith["section"] == eN.sect.book_index) { - // book_index - { + { // book_index auto _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); { an_object = _get.this_object; @@ -1544,7 +1543,7 @@ template docAbstraction() { object_notes = _doc_by_line.object_notes; // endnotes, compare, not sure is used destroy(_doc_by_line); } - { // EOF + { // EOF backMatter comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.metainfo.is_of_part = "backmatter"; comp_obj_heading_.metainfo.is_of_section = "tail"; @@ -1570,6 +1569,7 @@ template docAbstraction() { 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_lv1to4"] = comp_obj_heading_.tags.segment_anchor_tag_epub; } + // endNotes auto en_tuple = note_section.endnote_objects(obj_cite_digits, opt_action); // endnotes, check auto the_document_endnotes_section = en_tuple[0]; obj_cite_digits = en_tuple[1]; @@ -1577,6 +1577,7 @@ template docAbstraction() { writefln("%s %s", __LINE__, the_document_endnotes_section.length); foreach (o; the_document_endnotes_section) { writeln(o); } } + // glossary if (an_object["glossary_nugget"].length == 0) { comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.metainfo.is_of_part = "empty"; @@ -1596,6 +1597,7 @@ template docAbstraction() { the_document_glossary_section ~= comp_obj_heading_; } debug(glossary) { foreach (gloss; the_document_glossary_section) { writeln(gloss.text); } } + // bibliography auto biblio_unsorted_incomplete = biblio_arr_json.dup; auto biblio = Bibliography(); JSONValue[] biblio_ordered; @@ -1719,6 +1721,7 @@ template docAbstraction() { obj_cite_digits, opt_action, ); + // bookindex destroy(bookindex_unordered_hashes); auto the_document_bookindex_section = bi_tuple[0]; obj_cite_digits = bi_tuple[1]; @@ -1743,6 +1746,7 @@ template docAbstraction() { comp_obj_heading_.metainfo.parent_lev_markup = 0; the_document_blurb_section ~= comp_obj_heading_; } + // blurb debug(blurb) { foreach (blurb; the_document_blurb_section) { writeln(blurb.text); } } indent = [ "hang_position" : 1, @@ -1760,6 +1764,7 @@ template docAbstraction() { comp_obj_toc.attrib.indent_hang = indent["hang_position"]; comp_obj_toc.attrib.indent_base = indent["base_position"]; comp_obj_toc.attrib.bullet = false; + // use gathered if (the_document_endnotes_section.length > 1) { toc_txt_ = format("%s%s%s%s#%s%s", mkup.lnk_o, @@ -1836,8 +1841,10 @@ template docAbstraction() { writeln(mkup.indent_by_spaces_provided(toc_linked_heading.attrib.indent_hang), toc_linked_heading.text); } } + // document head and body the_document_head_section ~= the_document_body_section[0]; the_document_body_section = the_document_body_section[1..$]; + // document ancestors @safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); } @@ -2025,6 +2032,7 @@ template docAbstraction() { writeln("ancestors collapsed o_n: ", obj.metainfo.markedup_ancestors); } } + // segnames if (the_document_endnotes_section.length > 1) { segnames["html"] ~= "endnotes"; segnames["epub"] ~= "endnotes"; @@ -2100,6 +2108,7 @@ template docAbstraction() { } html_segnames_ptr_cntr++; } + // decendants @safe auto get_decendants()(ObjGenericComposite[] document_sections) { int[string] _heading_ocn_decendants; string[] _ocn_open_key = ["","","","","","","",""]; @@ -2147,6 +2156,7 @@ template docAbstraction() { } return pairs.sort; } + // images string[] _images; @safe string[] extract_images()(string content_block) { string[] images_; @@ -2193,6 +2203,7 @@ template docAbstraction() { } return obj; } + // links @safe auto _links(O)(O obj) { if (auto m = obj.text.match(rgx.inline_link_stow_uri)) { debug(links) { @@ -2212,6 +2223,7 @@ template docAbstraction() { } return obj; } + // document head foreach (ref obj; the_document_head_section) { if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); } @@ -2300,7 +2312,7 @@ template docAbstraction() { } } auto image_list = (_images.sort()).uniq; - // optional only one 1~ level + // endnotes optional only one 1~ level 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; @@ -2335,7 +2347,7 @@ template docAbstraction() { obj = _links(obj); } } - // optional only one 1~ level + // glossary optional only one 1~ level if (the_document_glossary_section.length > 1) { foreach (ref obj; the_document_glossary_section) { if (obj.metainfo.is_a == "heading") { @@ -2370,7 +2382,7 @@ template docAbstraction() { obj = _links(obj); } } - // optional only one 1~ level + // bibliography optional only one 1~ level if (the_document_bibliography_section.length > 1) { foreach (ref obj; the_document_bibliography_section) { if (obj.metainfo.is_a == "heading") { @@ -2405,7 +2417,7 @@ template docAbstraction() { obj = _links(obj); } } - // optional only one 1~ level + // book index, optional only one 1~ level int ocn_ = obj_cite_digits.object_number; int ocn_bkidx_ = 0; int ocn_bidx_; @@ -2451,7 +2463,7 @@ template docAbstraction() { // TODO assert failure, reinstate // assert(obj_cite_digit_bkidx == ocn_bidx_ obj_cite_digit_bkidx ~ " == ocn_" ~ ocn_ ~ "?"); } - // optional only one 1~ level + // blurb optional only one 1~ level if (the_document_blurb_section.length > 1) { foreach (ref obj; the_document_blurb_section) { if (obj.metainfo.is_a == "heading") { @@ -2486,6 +2498,7 @@ template docAbstraction() { obj = _links(obj); } } + // get decendants if (the_document_body_section.length > 1) { auto pairs = get_decendants( the_document_head_section ~ @@ -2620,6 +2633,7 @@ template docAbstraction() { comp_obj_heading_ = comp_obj_heading_.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, 0); comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt); // the_dom_tail_section ~= comp_obj_heading_; // remove tail for now, decide on later + // the doc ObjGenericComposite[][string] document_the = [ "head": the_document_head_section, "toc": the_document_toc_section, @@ -2634,6 +2648,7 @@ template docAbstraction() { // dom tail only "tail": the_document_xml_dom_tail_section, ]; + // document parts keys as needed string[][string] document_section_keys_sequenced = [ "scroll": ["head", "toc", "body",], "seg": ["head", "toc", "body",], @@ -2676,12 +2691,14 @@ template docAbstraction() { document_section_keys_sequenced["scroll"] ~= "tail"; document_section_keys_sequenced["seg"] ~= "tail"; } + // segnames string[] segnames_4 = segnames["html"].dup; string[] segnames_lv1to4 = segnames["epub"].dup; debug(segnames) { writeln("segnames_lv4: ", segnames_4); writeln("segnames_lv1to4: ", segnames_lv1to4); } + // restart destroy(the_document_head_section); destroy(the_document_toc_section); destroy(the_document_body_section); @@ -2706,6 +2723,7 @@ template docAbstraction() { dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0,]; lev_anchor_tag = ""; anchor_tag = ""; + // identify parts struct DocHas_ { uint inline_links() { return dochas["inline_links"]; @@ -2756,6 +2774,7 @@ template docAbstraction() { @safe auto doc_has() { return DocHas_(); } + // the doc to be returned struct ST_docAbstraction { ObjGenericComposite[][string] document_the; DocHas_ doc_has; |