From 4ce831bbc753ed1352e615ca79daddd13ea448d5 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 29 Jul 2017 05:35:06 -0400 Subject: 0.18.1 ocn, looks promising --- org/meta_abstraction.org | 458 +++++++++++++++++++++++++++++------------------ org/sdp.org | 11 +- 2 files changed, 287 insertions(+), 182 deletions(-) (limited to 'org') diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index 322fb0c..da74f39 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -199,7 +199,7 @@ enum DocStructMarkupHeading { h_text_5, // extra level, drop content_non_header } // header section A-D; header text 1-4 -enum OCNstatus { inc, exc, bkidx, closing, reset, } +enum OCNstatus { on, off, bkidx, closing, reset, } enum OCNtype { ocn, non, bkidx, } /+ biblio variables +/ string biblio_tag_name, biblio_tag_entry, st; @@ -221,7 +221,15 @@ string content_non_header = "8"; static auto obj_im = ObjInlineMarkup(); static auto obj_att = ObjAttributes(); /+ ocn +/ -int obj_cite_digit, obj_cite_digit_, obj_cite_digit_bkidx; +struct OCNset { + int digit; + int on; + int off; + int bkidx; + int type; +} +OCNset obj_cite_digits; +int obj_cite_digit_, obj_cite_digit_off, obj_cite_digit_bkidx, obj_cite_digit_type; auto object_citation_number = OCNemitter(); int[] dom_markedup = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; int[] dom_markedup_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,]; @@ -393,7 +401,7 @@ pure auto obj_dom_set_collapsed_tags(O)( #+name: abs_top_init_struct #+BEGIN_SRC d -int ocn_emit(int ocn_status_flag) { +static auto ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); } /+ book index variables +/ @@ -491,8 +499,8 @@ auto heading_match_rgx = [ ]; string _anchor_tag; string toc_txt_; -an_object["glossary_nugget"] = ""; -an_object["blurb_nugget"] = ""; +an_object["glossary_nugget"] = ""; +an_object["blurb_nugget"] = ""; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.of_part = "frontmatter"; comp_obj_heading_.of_section = "toc"; @@ -501,6 +509,8 @@ comp_obj_heading_.is_a = "heading"; comp_obj_heading_.text = "Table of Contents"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; +comp_obj_heading_.obj_cite_number_off = ""; +comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "toc"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -645,6 +655,8 @@ if there is a glossary section you need to: comp_obj_heading_.text = "Glossary"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "_part_glossary"; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -662,6 +674,8 @@ if there is a glossary section you need to: comp_obj_heading_.text = "Glossary"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "glossary"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -682,12 +696,14 @@ if there is a glossary section you need to: comp_obj_para.text = line.to!string.strip; comp_obj_para.ocn = 0; comp_obj_para.obj_cite_number = ""; + comp_obj_para.obj_cite_number_off = ""; + comp_obj_para.obj_cite_number_type = 0; comp_obj_para.indent_hang = indent["hang_position"]; comp_obj_para.indent_base = indent["base_position"]; comp_obj_para.bullet = bullet; the_glossary_section ~= comp_obj_para; } - obj_type_status["ocn_status"] = OCNstatus.inc; + obj_type_status["ocn_status"] = OCNstatus.on; } continue; #+END_SRC @@ -734,6 +750,8 @@ if there is a blurb section you need to: comp_obj_heading_.text = "Blurb"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "_part_blurb"; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -751,6 +769,8 @@ if there is a blurb section you need to: comp_obj_heading_.text = "Blurb"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "blurb"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -771,6 +791,8 @@ if there is a blurb section you need to: comp_obj_heading_.text = line.to!string; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "blurb"; comp_obj_heading_.marked_up_level = an_object["lev"].to!string; comp_obj_heading_.heading_lev_markup = an_object["lev_markup_number"].to!int; // make int, remove need to conv @@ -788,12 +810,14 @@ if there is a blurb section you need to: comp_obj_para.text = line.to!string.strip; comp_obj_para.ocn = 0; comp_obj_para.obj_cite_number = ""; + comp_obj_para.obj_cite_number_off = ""; + comp_obj_para.obj_cite_number_type = 0; comp_obj_para.indent_hang = indent["hang_position"]; comp_obj_para.indent_base = indent["base_position"]; comp_obj_para.bullet = bullet; the_blurb_section ~= comp_obj_para; } - obj_type_status["ocn_status"] = OCNstatus.inc; + obj_type_status["ocn_status"] = OCNstatus.on; } continue; #+END_SRC @@ -881,7 +905,7 @@ if (line.matchFirst(rgx.block_poem_open)) { /+ poem to verse exceptions! +/ object_reset(an_object); processing.remove("verse"); - obj_cite_number_poem["start"] = obj_cite_digit.to!string; + obj_cite_number_poem["start"] = obj_cite_digits.on.to!string; } _start_block_(line, obj_type_status, obj_cite_number_poem); continue; @@ -1034,7 +1058,7 @@ _block_flag_line_empty_( an_object, the_document_body_section, bookindex_unordered_hashes, - obj_cite_digit, + obj_cite_digits, comp_obj_heading, cntr, obj_type_status, @@ -1066,9 +1090,9 @@ assert( if ((obj_type_status["heading"] == State.on) && (line_occur["heading"] > State.off)) { /+ heading object (current line empty) +/ - obj_cite_digit = (an_object["lev_markup_number"].to!int == 0) - ? (ocn_emit(OCNstatus.reset)) - : (obj_cite_digit = ocn_emit(obj_type_status["ocn_status"])); + obj_cite_digits = (an_object["lev_markup_number"].to!int == 0) + ? ocn_emit(OCNstatus.reset) + : ocn_emit(OCNstatus.on); // : ocn_emit(obj_type_status["ocn_status"]); an_object["is"] = "heading"; an_object_key="body_nugget"; auto substantive_object_and_anchor_tags_tuple = @@ -1081,7 +1105,7 @@ if ((obj_type_status["heading"] == State.on) anchor_tag_ = anchor_tags[0]; } else if (an_object["lev_markup_number"].to!int > 4) { segment_anchor_tag_that_object_belongs_to = anchor_tag_; - segment_anchor_tag_that_object_belongs_to_uri = anchor_tag_ ~ ".fnSuffix#" ~ obj_cite_digit.to!string; + segment_anchor_tag_that_object_belongs_to_uri = anchor_tag_ ~ ".fnSuffix#" ~ obj_cite_digits.on.to!string; } else if (an_object["lev_markup_number"].to!int < 4) { string segn; switch (an_object["lev_markup_number"].to!int) { @@ -1109,9 +1133,9 @@ if ((obj_type_status["heading"] == State.on) 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_digit, segment_anchor_tag_that_object_belongs_to); + bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, segment_anchor_tag_that_object_belongs_to); /+ (incrementally build toc) table of contents here! +/ - _anchor_tag=to!string(obj_cite_digit); + _anchor_tag=to!string(obj_cite_digits.on); the_table_of_contents_section = obj_im.table_of_contents_gather_headings( an_object, dochead_make_aa, @@ -1132,7 +1156,7 @@ if ((obj_type_status["heading"] == State.on) an_object["lev_markup_number"], // string an_object["lev_collapsed_number"], // string segment_anchor_tag_that_object_belongs_to, // string - obj_cite_digit, // int + obj_cite_digits, // OCNset cntr, // int heading_ptr, // int lv_ancestors_txt, // string[] @@ -1165,17 +1189,17 @@ if ((obj_type_status["heading"] == State.on) } else if ((obj_type_status["para"] == State.on) && (line_occur["para"] > State.off)) { /+ paragraph object (current line empty) +/ - obj_cite_digit = ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(obj_type_status["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_digit, segment_anchor_tag_that_object_belongs_to); + bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, segment_anchor_tag_that_object_belongs_to); an_object["is"] = "para"; auto comp_obj_heading = node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"], @@ -1190,8 +1214,11 @@ if ((obj_type_status["heading"] == State.on) comp_obj_para.is_of = "para"; comp_obj_para.is_a = "para"; comp_obj_para.text = an_object["substantive"].to!string.strip; - comp_obj_para.ocn = obj_cite_digit; - comp_obj_para.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_para.ocn = obj_cite_digits.digit; + comp_obj_para.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_para.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_para.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_para.obj_cite_number_type = obj_cite_digits.type; comp_obj_para.indent_hang = indent["hang_position"]; comp_obj_para.indent_base = indent["base_position"]; comp_obj_para.bullet = bullet; @@ -1284,10 +1311,10 @@ if (the_document_body_section.length > 0) { #+name: abs_post #+BEGIN_SRC d auto en_tuple = - note_section.endnote_objects(obj_cite_digit, opt_action); + note_section.endnote_objects(obj_cite_digits, opt_action); static assert(!isTypeTuple!(en_tuple)); auto the_endnotes_section = en_tuple[0]; -obj_cite_digit = en_tuple[1]; +obj_cite_digits = en_tuple[1]; debug(endnotes) { writefln( "%s %s", @@ -1313,6 +1340,8 @@ if (an_object["glossary_nugget"].length == 0) { comp_obj_heading_.text = "(skip) there is no Glossary section"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; comp_obj_heading_.heading_lev_collapsed = 1; @@ -1350,6 +1379,8 @@ if (biblio_ordered.length > 0) { comp_obj_heading_.text = "Bibliography"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "_part_bibliography"; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -1365,6 +1396,8 @@ if (biblio_ordered.length > 0) { comp_obj_heading_.text = "Bibliography"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "bibliography"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -1382,6 +1415,8 @@ if (biblio_ordered.length > 0) { comp_obj_heading_.text = "(skip) there is no Bibliography"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; comp_obj_heading_.heading_lev_collapsed = 1; @@ -1419,6 +1454,8 @@ foreach (entry; biblio_ordered) { comp_obj_para.text = out_.to!string.strip; comp_obj_para.ocn = 0; comp_obj_para.obj_cite_number = ""; + comp_obj_para.obj_cite_number_off = ""; + comp_obj_para.obj_cite_number_type = 0; comp_obj_para.indent_hang = 0; comp_obj_para.indent_base = 1; comp_obj_para.bullet = bullet; @@ -1476,13 +1513,13 @@ auto bi = BookIndexReportSection(); auto bi_tuple = bi.bookindex_build_abstraction_section( bookindex_unordered_hashes, - obj_cite_digit, + obj_cite_digits, opt_action, ); destroy(bookindex_unordered_hashes); static assert(!isTypeTuple!(bi_tuple)); auto the_bookindex_section = bi_tuple[0]; -obj_cite_digit = bi_tuple[1]; +obj_cite_digits = bi_tuple[1]; debug(bookindex) { foreach (bi_entry; the_bookindex_section["seg"]) { writeln(bi_entry); @@ -1503,6 +1540,8 @@ if (an_object["blurb_nugget"].length == 0) { comp_obj_heading_.text = "(skip) there is no Blurb section"; comp_obj_heading_.ocn = 0; comp_obj_para.obj_cite_number = ""; + comp_obj_para.obj_cite_number_off = ""; + comp_obj_para.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = ""; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -1533,6 +1572,8 @@ comp_obj_toc.is_of = "para"; comp_obj_toc.is_a = "toc"; comp_obj_toc.ocn = 0; comp_obj_toc.obj_cite_number = ""; +comp_obj_toc.obj_cite_number_off = ""; +comp_obj_toc.obj_cite_number_type = 0; comp_obj_toc.indent_hang = indent["hang_position"]; comp_obj_toc.indent_base = indent["base_position"]; comp_obj_toc.bullet = false; @@ -1831,6 +1872,12 @@ foreach (ref obj; the_document_head_section) { if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; } + if (obj.heading_lev_markup == 0) { + assert( obj.ocn == 1, "Title OCN should be 1 not: " ~ obj.ocn.to!string); // bug introduced 0.18.1 + obj.ocn = 1; + obj.obj_cite_number = "1"; + obj.obj_cite_number_type = OCNtype.ocn; + } /+ dom structure (marked up & collapsed) +/ if ((opt_action["html"]) || (opt_action["html-scroll"]) @@ -1960,6 +2007,9 @@ if (the_endnotes_section.length > 1) { debug(dom) { writeln(obj.text); } + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.digit; + obj.obj_cite_number = obj_cite_digits.on.to!string; if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; if (obj.heading_lev_markup == 4) { @@ -1997,9 +2047,9 @@ if (the_glossary_section.length > 1) { debug(dom) { writeln(obj.text); } - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.digit; + obj.obj_cite_number = obj_cite_digits.on.to!string; if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; if (obj.heading_lev_markup == 4) { @@ -2022,9 +2072,9 @@ if (the_glossary_section.length > 1) { } obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "glossary") { - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.digit; + obj.obj_cite_number = obj_cite_digits.on.to!string; } } } @@ -2041,9 +2091,9 @@ if (the_bibliography_section.length > 1) { debug(dom) { writeln(obj.text); } - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.digit; + obj.obj_cite_number = obj_cite_digits.on.to!string; // check if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; if (obj.heading_lev_markup == 4) { @@ -2066,9 +2116,9 @@ if (the_bibliography_section.length > 1) { } obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "bibliography") { - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.on; + obj.obj_cite_number = obj_cite_digits.on.to!string; } } } @@ -2079,7 +2129,7 @@ if (the_bibliography_section.length > 1) { #+name: abs_post #+BEGIN_SRC d /+ optional only one 1~ level +/ -int ocn_ = obj_cite_digit; +int ocn_ = obj_cite_digits.on; int ocn_bkidx_ = 0; int ocn_bidx_; if (the_bookindex_section["scroll"].length > 1) { @@ -2090,9 +2140,9 @@ if (the_bookindex_section["scroll"].length > 1) { if (obj.is_a == "heading") { debug(dom) { } - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.on; + obj.obj_cite_number = obj_cite_digits.on.to!string; if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; if (obj.heading_lev_markup == 4) { @@ -2115,8 +2165,9 @@ if (the_bookindex_section["scroll"].length > 1) { } obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "bookindex") { - obj_cite_digit_bkidx = ocn_emit(OCNstatus.bkidx); - obj.obj_cite_number_bkidx = obj_cite_digit_bkidx.to!string; // FIX need to distinguish from regular ocn + obj_cite_digits = ocn_emit(OCNstatus.bkidx); + obj.ocn = obj_cite_digits.digit; + obj.obj_cite_number_bkidx = obj_cite_digits.bkidx.to!string; obj.obj_cite_number_type = OCNtype.bkidx; } } @@ -2157,7 +2208,6 @@ if (the_bookindex_section["scroll"].length > 1) { obj.obj_cite_number_type = OCNtype.bkidx; } } - assert(obj_cite_digit == ocn_); assert(obj_cite_digit_bkidx == ocn_bidx_); } #+END_SRC @@ -2173,9 +2223,9 @@ if (the_blurb_section.length > 1) { debug(dom) { writeln(obj.text); } - obj_cite_digit = ocn_emit(OCNstatus.inc); - obj.ocn = obj_cite_digit; - obj.obj_cite_number = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.on); + obj.ocn = obj_cite_digits.on; + obj.obj_cite_number = obj_cite_digits.on.to!string; if (obj.heading_lev_markup <= 4) { segnames_0_4 ~= obj.segment_anchor_tag; if (obj.heading_lev_markup == 4) { @@ -2198,8 +2248,8 @@ if (the_blurb_section.length > 1) { } obj = obj_heading_ancestors(obj, lv_ancestors_txt); } else if (obj.is_a == "blurb") { - obj_cite_digit = ocn_emit(OCNstatus.exc); - obj.obj_cite_number_non = obj_cite_digit.to!string; + obj_cite_digits = ocn_emit(OCNstatus.off); + obj.obj_cite_number_off = obj_cite_digits.off.to!string; obj.obj_cite_number_type = OCNtype.non; } } @@ -2223,6 +2273,8 @@ comp_obj_heading_.is_of = "para"; comp_obj_heading_.is_a = "heading"; comp_obj_heading_.ocn = 0; comp_obj_para.obj_cite_number = ""; +comp_obj_para.obj_cite_number_off = ""; +comp_obj_para.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = ""; comp_obj_heading_.marked_up_level = ""; comp_obj_heading_.heading_lev_markup = 9; @@ -2327,7 +2379,7 @@ destroy(html_segnames); destroy(bookindex_unordered_hashes); destroy(an_object); biblio_arr_json = []; -obj_cite_digit=0; +obj_cite_digits=ocn_emit(OCNstatus.reset); obj_cite_digit_=0; html_segnames_ptr=0; html_segnames_ptr_cntr=0; @@ -2388,10 +2440,10 @@ auto _common_reset_(L,O,T)( static assert(is(typeof(an_object) == string[string])); static assert(is(typeof(obj_type_status) == int[string])); } - line_occur["heading"] = State.off; - line_occur["para"] = State.off; - obj_type_status["heading"] = State.off; - obj_type_status["para"] = State.off; + line_occur["heading"] = State.off; + line_occur["para"] = State.off; + obj_type_status["heading"] = State.off; + obj_type_status["para"] = State.off; an_object = object_reset(an_object); } #+END_SRC @@ -2428,11 +2480,11 @@ static auto _check_ocn_status_(L,T)( } else { if (obj_type_status["ocn_status_off_for_multiple_objects"] == TriState.off) { if (line.matchFirst(rgx.obj_cite_number_off)) { - obj_type_status["ocn_status"] = OCNstatus.exc; + obj_type_status["ocn_status"] = OCNstatus.off; } else if (line.matchFirst(rgx.obj_cite_number_off_dh)) { obj_type_status["ocn_status"] = OCNstatus.closing; } else { - obj_type_status["ocn_status"] = OCNstatus.inc; + obj_type_status["ocn_status"] = OCNstatus.on; } } else { obj_type_status["ocn_status"] = @@ -2442,7 +2494,7 @@ static auto _check_ocn_status_(L,T)( } else if ((!line.empty) && (obj_type_status["ocn_status_off_for_multiple_objects"] > TriState.off)) { if (line.matchFirst(rgx.obj_cite_number_off_block_close)) { obj_type_status["ocn_status_off_for_multiple_objects"] = TriState.off; - obj_type_status["ocn_status"] = OCNstatus.inc; + obj_type_status["ocn_status"] = OCNstatus.on; debug(ocnoff) { writeln(line); } @@ -2498,8 +2550,7 @@ void _start_block_(L,T,N)( line ); } - obj_cite_number_poem["start"] = - obj_cite_digit.to!string; + obj_cite_number_poem["start"] = obj_cite_digits.on.to!string; obj_type_status["blocks"] = TriState.on; obj_type_status["verse_new"] = State.on; obj_type_status["poem"] = TriState.on; @@ -2584,7 +2635,7 @@ void _start_block_(L,T,N)( line ); } - obj_cite_number_poem["start"] = obj_cite_digit.to!string; + obj_cite_number_poem["start"] = obj_cite_digits.on.to!string; obj_type_status["blocks"] = TriState.on; obj_type_status["verse_new"] = State.on; obj_type_status["poem"] = TriState.on; @@ -3111,14 +3162,14 @@ void _poem_block_(L,O,T,C,N,Ma)( writeln(__LINE__); writefln( "* %s %s", - obj_cite_digit, + obj_cite_digits.on, line ); } if (an_object.length > 0) { debug(poem) { // poem (curly) close writeln( - obj_cite_digit, + obj_cite_digits.on, an_object[an_object_key] ); } @@ -3132,8 +3183,11 @@ void _poem_block_(L,O,T,C,N,Ma)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "verse"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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]; @@ -3144,16 +3198,14 @@ void _poem_block_(L,O,T,C,N,Ma)( processing.remove("verse"); ++cntr; } - obj_cite_number_poem["end"] = - obj_cite_digit.to!string; + obj_cite_number_poem["end"] = obj_cite_digits.on.to!string; obj_type_status["blocks"] = TriState.closing; obj_type_status["poem"] = TriState.closing; obj_type_status["curly_poem"] = TriState.off; } else { processing["verse"] ~= line ~= "\n"; if (obj_type_status["verse_new"] == State.on) { - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); obj_type_status["verse_new"] = State.off; } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) { processing["verse"] = processing["verse"].stripRight; @@ -3166,7 +3218,7 @@ void _poem_block_(L,O,T,C,N,Ma)( debug(poem) { // poem verse writefln( "* %s curly\n%s", - obj_cite_digit, + obj_cite_digits.on, an_object[an_object_key] ); } @@ -3175,7 +3227,7 @@ void _poem_block_(L,O,T,C,N,Ma)( auto comp_obj_location = node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3189,8 +3241,11 @@ void _poem_block_(L,O,T,C,N,Ma)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "verse"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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]; @@ -3216,7 +3271,7 @@ void _poem_block_(L,O,T,C,N,Ma)( if (an_object.length > 0) { debug(poem) { // poem (tic) close writeln(__LINE__); - writeln(obj_cite_digit, line); + writeln(obj_cite_digits.on, line); } processing.remove("verse"); an_object["is"] = "verse"; @@ -3229,14 +3284,17 @@ void _poem_block_(L,O,T,C,N,Ma)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "verse"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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; - obj_cite_number_poem["end"] = obj_cite_digit.to!string; + obj_cite_number_poem["end"] = obj_cite_digits.on.to!string; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -3247,8 +3305,7 @@ void _poem_block_(L,O,T,C,N,Ma)( } else { processing["verse"] ~= line ~= "\n"; if (obj_type_status["verse_new"] == State.on) { - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); obj_type_status["verse_new"] = State.off; } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) { processing["verse"] = processing["verse"].stripRight; @@ -3261,7 +3318,7 @@ void _poem_block_(L,O,T,C,N,Ma)( debug(poem) { // poem (tic) close writefln( "* %s tic\n%s", - obj_cite_digit, + obj_cite_digits.on, an_object[an_object_key] ); } @@ -3271,7 +3328,7 @@ void _poem_block_(L,O,T,C,N,Ma)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3285,8 +3342,11 @@ void _poem_block_(L,O,T,C,N,Ma)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "verse"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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]; @@ -3356,7 +3416,7 @@ void _table_block_(L,O,T,Ma)( line, an_object, the_document_body_section, - obj_cite_digit, + obj_cite_digits, comp_obj_heading, cntr, obj_type_status, @@ -3396,24 +3456,23 @@ process and use an_object["table_head"] (then empty it) #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d -void _table_closed_make_special_notation_table_( +void _table_closed_make_special_notation_table_(N)( char[] line, return ref string[string] an_object, return ref ObjGenericComposite[] the_document_body_section, - return ref int obj_cite_digit, + return ref N obj_cite_digits, return ref ObjGenericComposite _comp_obj_heading, return ref int cntr, return ref int[string] obj_type_status, string[string][string] dochead_make_aa, ) { comp_obj_block = comp_obj_block.init; - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); auto comp_obj_location = node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, "table" @@ -3421,12 +3480,15 @@ void _table_closed_make_special_notation_table_( an_object["is"] = "table"; auto substantive_obj_misc_tuple = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, "body_nugget", dochead_make_aa); - an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; - comp_obj_block = table_instructions(comp_obj_block, an_object["table_head"]); - comp_obj_block = table_substantive_munge_special(comp_obj_block, an_object["substantive"]); - the_document_body_section ~= comp_obj_block; + an_object["substantive"] = substantive_obj_misc_tuple[sObj.content]; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; + comp_obj_block = table_instructions(comp_obj_block, an_object["table_head"]); + comp_obj_block = table_substantive_munge_special(comp_obj_block, an_object["substantive"]); + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -3439,13 +3501,13 @@ void _table_closed_make_special_notation_table_( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d -void _block_flag_line_empty_(B)( +void _block_flag_line_empty_(B,N)( 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, - return ref int obj_cite_digit, + return ref N obj_cite_digits, return ref ObjGenericComposite _comp_obj_heading, return ref int cntr, return ref int[string] obj_type_status, @@ -3469,14 +3531,13 @@ void _block_flag_line_empty_(B)( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d if (obj_type_status["quote"] == TriState.closing) { - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); 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_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "quote"; @@ -3484,7 +3545,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3498,8 +3559,11 @@ void _block_flag_line_empty_(B)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "quote"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digit_type; 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]; @@ -3517,14 +3581,13 @@ void _block_flag_line_empty_(B)( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d } else if (obj_type_status["group"] == TriState.closing) { - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); 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_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "group"; @@ -3532,7 +3595,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3546,8 +3609,11 @@ void _block_flag_line_empty_(B)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "group"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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]; @@ -3565,13 +3631,13 @@ void _block_flag_line_empty_(B)( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d } else if (obj_type_status["block"] == TriState.closing) { - obj_cite_digit = ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); 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_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "block"; @@ -3579,7 +3645,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3592,8 +3658,11 @@ void _block_flag_line_empty_(B)( comp_obj_block.of_section = "body"; comp_obj_block.is_of = "block"; comp_obj_block.is_a = "block"; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digit_type; 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]; @@ -3616,7 +3685,7 @@ void _block_flag_line_empty_(B)( bookindex_unordered_hashes = bookindex_extract_hash.bookindex_nugget_hash( an_object["bookindex_nugget"], - obj_cite_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "verse"; @@ -3624,7 +3693,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3634,8 +3703,11 @@ void _block_flag_line_empty_(B)( comp_obj_poem_ocn.of_section = "body"; comp_obj_poem_ocn.is_of = "block"; comp_obj_poem_ocn.is_a = "poem"; - comp_obj_poem_ocn.ocn = obj_cite_digit; + comp_obj_poem_ocn.ocn = obj_cite_digits.on; comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); + comp_obj_poem_ocn.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; // + comp_obj_poem_ocn.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; // + comp_obj_poem_ocn.obj_cite_number_type = obj_cite_digits.type; comp_obj_poem_ocn.text = ""; the_document_body_section ~= comp_obj_poem_ocn; obj_type_status["blocks"] = TriState.off; @@ -3649,14 +3721,13 @@ void _block_flag_line_empty_(B)( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d } else if (obj_type_status["code"] == TriState.closing) { - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); 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_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "code"; @@ -3664,7 +3735,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3678,8 +3749,11 @@ void _block_flag_line_empty_(B)( comp_obj_code.of_section = "body"; comp_obj_code.is_of = "block"; comp_obj_code.is_a = "code"; - comp_obj_code.ocn = obj_cite_digit; - comp_obj_code.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_code.ocn = obj_cite_digits.on; + comp_obj_code.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; 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]; @@ -3698,14 +3772,13 @@ void _block_flag_line_empty_(B)( #+BEGIN_SRC d } else if (obj_type_status["table"] == TriState.closing) { comp_obj_block = comp_obj_block.init; - obj_cite_digit = - ocn_emit(obj_type_status["ocn_status"]); + obj_cite_digits = ocn_emit(OCNstatus.on); 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_digit, + obj_cite_digits, segment_anchor_tag_that_object_belongs_to ); an_object["is"] = "table"; @@ -3713,7 +3786,7 @@ void _block_flag_line_empty_(B)( node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, - obj_cite_digit, + obj_cite_digits, cntr, heading_ptr-1, an_object["is"] @@ -3722,8 +3795,11 @@ 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]; comp_obj_block = comp_obj_block.init; - comp_obj_block.ocn = obj_cite_digit; - comp_obj_block.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + comp_obj_block.ocn = obj_cite_digits.on; + comp_obj_block.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + comp_obj_block.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + comp_obj_block.obj_cite_number_bkidx = (obj_cite_digits.bkidx==0) ? "" : obj_cite_digits.bkidx.to!string; + comp_obj_block.obj_cite_number_type = obj_cite_digits.type; comp_obj_block = table_instructions(comp_obj_block, an_object["table_head"]); comp_obj_block = table_substantive_munge(comp_obj_block, an_object["substantive"]); the_document_body_section ~= comp_obj_block; @@ -4001,19 +4077,19 @@ auto _heading_matched_(L,C,O,K,Lv,Lc,T,Me)( static auto rgx = Rgx(); if (auto m = line.match(rgx.heading)) { /+ heading match +/ - obj_type_status["heading"] = State.on; + ++line_occur["heading"]; + obj_type_status["heading"] = State.on; + obj_type_status["para"] = State.off; if (line.match(rgx.heading_seg_and_above)) { - obj_type_status["biblio_section"] = State.off; + obj_type_status["biblio_section"] = State.off; obj_type_status["glossary_section"] = State.off; - obj_type_status["blurb_section"] = State.off; + obj_type_status["blurb_section"] = State.off; } - obj_type_status["para"] = State.off; - ++line_occur["heading"]; an_object[an_object_key] ~= line ~= "\n"; an_object["lev"] ~= m.captures[1]; assertions_doc_structure(an_object, lv); // includes most of the logic for collapsed levels switch (an_object["lev"]) { - case "A": + case "A": // Title set an_object[an_object_key]=(an_object[an_object_key]) .replaceFirst(rgx.variable_doc_title, (dochead_meta_aa["title"]["full"] ~ ",")) @@ -4465,23 +4541,24 @@ auto table_substantive_munge_special(O,T)( #+name: meta_emitters_ocn #+BEGIN_SRC d pure struct OCNemitter { - int ocn_, ocn_in, ocn_in_, ocn_out_, ocn_bkidx_; - int ocn_emitter(int ocn_status_flag) - in { assert(ocn_status_flag <= OCNstatus.reset); } - body { + int ocn_, ocn_on, ocn_on_, ocn_off, ocn_off_, ocn_bkidx, ocn_bkidx_; + auto ocn_emitter(int ocn_status_flag) { + OCNset ocn; + assert(ocn_status_flag <= OCNstatus.reset); + ocn_on = ocn_off = ocn_bkidx = 0; switch(ocn_status_flag) { case OCNstatus.reset: - ocn_ = ocn_in_ = ocn_out_ = 1; + ocn_ = ocn_on_ = ocn_off_ = 1; ocn_bkidx_ = 0; break; - case OCNstatus.inc: - ocn_ = ++ocn_in_; + case OCNstatus.on: + ocn_ = ocn_on = ++ocn_on_; break; - case OCNstatus.exc: - ocn_ = ++ocn_out_; + case OCNstatus.off: + ocn_ = ocn_off = ++ocn_off_; break; case OCNstatus.bkidx: - ocn_ = ++ocn_bkidx_; + ocn_ = ocn_bkidx = ++ocn_bkidx_; break; case OCNstatus.closing: break; @@ -4489,7 +4566,12 @@ pure struct OCNemitter { ocn_ = 0; } assert(ocn_ >= 0); - return ocn_; + ocn.digit = ocn_; + ocn.on = ocn_on; + ocn.off = ocn_off; + ocn.bkidx = ocn_bkidx; + ocn.type = ocn_status_flag; + return ocn; } invariant() { } @@ -4522,7 +4604,7 @@ static struct ObjInlineMarkupMunge { #+name: meta_emitters_obj_inline_markup_munge #+BEGIN_SRC d - static string url_links(Ot)(Ot obj_txt_in) { + static auto url_links(Ot)(Ot obj_txt_in) { debug(asserts) { static assert(is(typeof(obj_txt_in) == string)); } @@ -5088,6 +5170,8 @@ static struct ObjInlineMarkup { comp_obj_toc.is_a = "toc"; comp_obj_toc.ocn = 0; comp_obj_toc.obj_cite_number = ""; + comp_obj_toc.obj_cite_number_off = ""; + comp_obj_toc.obj_cite_number_type = 0; comp_obj_toc.indent_hang = indent["hang_position"]; comp_obj_toc.indent_base = indent["base_position"]; comp_obj_toc.bullet = false; @@ -5106,6 +5190,8 @@ static struct ObjInlineMarkup { comp_obj_toc.is_a = "toc"; comp_obj_toc.ocn = 0; comp_obj_toc.obj_cite_number = ""; + comp_obj_toc.obj_cite_number_off = ""; + comp_obj_toc.obj_cite_number_type = 0; comp_obj_toc.indent_hang = indent["hang_position"]; comp_obj_toc.indent_base = indent["base_position"]; comp_obj_toc.bullet = false; @@ -5120,6 +5206,8 @@ static struct ObjInlineMarkup { comp_obj_toc.is_a = "toc"; comp_obj_toc.ocn = 0; comp_obj_toc.obj_cite_number = ""; + comp_obj_toc.obj_cite_number_off = ""; + comp_obj_toc.obj_cite_number_type = 0; comp_obj_toc.bullet = false; comp_obj_toc.inline_links = true; switch (obj_["lev_markup_number"].to!int) { @@ -5811,19 +5899,19 @@ struct BookIndexNuggetHash { string[] bi_main_terms_split_arr; string[][string][string] bookindex_nugget_hash(BI,N,S)( BI bookindex_section, - N obj_cite_digit, + N obj_cite_digits, S segment_anchor_tag, ) in { debug(asserts) { static assert(is(typeof(bookindex_section) == string)); - static assert(is(typeof(obj_cite_digit) == int)); + static assert(is(typeof(obj_cite_digits.on) == int)); } debug(bookindexraw) { if (!bookindex_section.empty) { writeln( "* [bookindex] ", - "[", obj_cite_digit.to!string, ": ", segment_anchor_tag, "] ", bookindex_section + "[", obj_cite_digits.on.to!string, ": ", segment_anchor_tag, "] ", bookindex_section ); } } @@ -5841,12 +5929,12 @@ struct BookIndexNuggetHash { ) { main_term = m.captures[1].strip; obj_cite_number_offset = m.captures[2].to!int; - obj_cite_number_endpoint=(obj_cite_digit + obj_cite_number_offset); - obj_cite_numbers ~= (obj_cite_digit.to!string ~ "-" ~ to!string(obj_cite_number_endpoint) + obj_cite_number_endpoint=(obj_cite_digits.on + obj_cite_number_offset); + obj_cite_numbers ~= (obj_cite_digits.on.to!string ~ "-" ~ to!string(obj_cite_number_endpoint) ~ ":" ~ segment_anchor_tag); } else { main_term = bi_main_term_and_rest[0].strip; - obj_cite_numbers ~= obj_cite_digit.to!string + obj_cite_numbers ~= obj_cite_digits.on.to!string ~ ":" ~ segment_anchor_tag; } bi[main_term]["_a"] ~= obj_cite_numbers; @@ -5860,12 +5948,12 @@ struct BookIndexNuggetHash { if (auto m = sub_terms_bits.match(rgx.bi_term_and_obj_cite_numbers_match)) { sub_term = m.captures[1].strip; obj_cite_number_offset = m.captures[2].to!int; - obj_cite_number_endpoint=(obj_cite_digit + obj_cite_number_offset); - obj_cite_numbers ~= (obj_cite_digit.to!string ~ " - " ~ to!string(obj_cite_number_endpoint) + obj_cite_number_endpoint=(obj_cite_digits.on + obj_cite_number_offset); + obj_cite_numbers ~= (obj_cite_digits.on.to!string ~ " - " ~ to!string(obj_cite_number_endpoint) ~ ":" ~ segment_anchor_tag); } else { sub_term = sub_terms_bits.strip; - obj_cite_numbers ~= to!string(obj_cite_digit) + obj_cite_numbers ~= to!string(obj_cite_digits.on) ~ ":" ~ segment_anchor_tag; } if (!empty(sub_term)) { @@ -5971,12 +6059,12 @@ struct BookIndexReportSection { #+BEGIN_SRC d auto bookindex_build_abstraction_section(BI,N,B)( BI bookindex_unordered_hashes, - N obj_cite_digit, + N obj_cite_digits, B opt_action, ) { debug(asserts) { static assert(is(typeof(bookindex_unordered_hashes) == string[][string][string])); - static assert(is(typeof(obj_cite_digit) == int)); + static assert(is(typeof(obj_cite_digits.on) == int)); static assert(is(typeof(opt_action) == bool[string])); } mixin SiSUnode; @@ -6006,6 +6094,8 @@ struct BookIndexReportSection { comp_obj_heading_.text = "Book Index"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "_part_book_index"; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -6024,6 +6114,8 @@ struct BookIndexReportSection { comp_obj_heading_.text = "Index"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "bookindex"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -6100,6 +6192,8 @@ struct BookIndexReportSection { comp_obj_para.text = bi_tmp_scroll.to!string.strip; comp_obj_para.ocn = 0; comp_obj_para.obj_cite_number = ""; + comp_obj_para.obj_cite_number_off = ""; + comp_obj_para.obj_cite_number_type = 0; comp_obj_para.anchor_tags = bi_tmp_tags; comp_obj_para.indent_hang = 0; comp_obj_para.indent_base = 1; @@ -6115,6 +6209,8 @@ struct BookIndexReportSection { comp_obj_heading_.text = "(skip) there is no Book Index"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; comp_obj_heading_.heading_lev_collapsed = 1; @@ -6123,7 +6219,7 @@ struct BookIndexReportSection { bookindex_section["scroll"] ~= comp_obj_heading_; bookindex_section["seg"] ~= comp_obj_heading_; } - auto t = tuple(bookindex_section, obj_cite_digit); + auto t = tuple(bookindex_section, obj_cite_digits); return t; } #+END_SRC @@ -6232,8 +6328,8 @@ struct NotesSection { #+name: meta_emitters_endnotes #+BEGIN_SRC d - private auto endnote_objects( - int obj_cite_digit, + private auto endnote_objects(N)( + N obj_cite_digits, bool[string] opt_action, ) in { @@ -6257,6 +6353,8 @@ struct NotesSection { comp_obj_heading_.text = "Endnotes"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "_part_endnotes"; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; @@ -6264,7 +6362,6 @@ struct NotesSection { comp_obj_heading_.parent_ocn = 1; comp_obj_heading_.parent_lev_markup = 0; the_endnotes_section ~= comp_obj_heading_; - ++obj_cite_digit; ++mkn; comp_obj_heading_ = comp_obj_heading_.init; comp_obj_heading_.of_part = "backmatter"; @@ -6274,6 +6371,8 @@ struct NotesSection { comp_obj_heading_.text = "Endnotes"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.segment_anchor_tag = "endnotes"; comp_obj_heading_.marked_up_level = "1"; comp_obj_heading_.heading_lev_markup = 4; @@ -6282,7 +6381,6 @@ struct NotesSection { comp_obj_heading_.parent_lev_markup = 0; comp_obj_heading_.anchor_tags = ["endnotes"]; the_endnotes_section ~= comp_obj_heading_; - ++obj_cite_digit; ++mkn; } else { comp_obj_heading_ = comp_obj_heading_.init; @@ -6293,6 +6391,8 @@ struct NotesSection { comp_obj_heading_.text = "(skip) there are no Endnotes"; comp_obj_heading_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_heading_.marked_up_level = "B"; comp_obj_heading_.heading_lev_markup = 1; comp_obj_heading_.heading_lev_collapsed = 1; @@ -6309,6 +6409,8 @@ struct NotesSection { comp_obj_endnote_.is_a = "endnote"; comp_obj_endnote_.ocn = 0; comp_obj_heading_.obj_cite_number = ""; + comp_obj_heading_.obj_cite_number_off = ""; + comp_obj_heading_.obj_cite_number_type = 0; comp_obj_endnote_.indent_hang = 0; comp_obj_endnote_.indent_base = 0; comp_obj_endnote_.bullet = false; @@ -6322,7 +6424,7 @@ struct NotesSection { the_endnotes_section ~= comp_obj_endnote_; } } - auto t = tuple(the_endnotes_section, obj_cite_digit); + auto t = tuple(the_endnotes_section, obj_cite_digits); return t; } #+END_SRC @@ -6489,7 +6591,7 @@ struct NodeStructureMetadata { ObjGenericComposite node_location_emitter(Lv,Ta,N,C,P,I)( Lv lev_markup_number, Ta segment_anchor_tag, - N obj_cite_digit_, + N obj_cite_digits, C cntr_, P ptr_, I is_ @@ -6498,18 +6600,17 @@ struct NodeStructureMetadata { debug(asserts) { static assert(is(typeof(lev_markup_number) == string)); static assert(is(typeof(segment_anchor_tag) == string)); - static assert(is(typeof(obj_cite_digit_) == int)); + static assert(is(typeof(obj_cite_digits.on) == int)); static assert(is(typeof(cntr_) == int)); static assert(is(typeof(ptr_) == int)); static assert(is(typeof(is_) == string)); } assert(is_ != "heading"); - assert(obj_cite_digit_.to!int >= 0); + assert(obj_cite_digits.on.to!int >= 0); } body { assert(is_ != "heading"); // should not be necessary - assert(obj_cite_digit_.to!int >= 0); // should not be necessary - int obj_cite_digit = obj_cite_digit_.to!int; + assert(obj_cite_digits.on.to!int >= 0); // should not be necessary if (lv7 > State.off) { p_["lev_markup_number"] = DocStructMarkupHeading.h_text_4; p_["obj_cite_number"] = lv7; @@ -6526,7 +6627,7 @@ struct NodeStructureMetadata { ObjGenericComposite comp_obj_location; comp_obj_location = comp_obj_location.init; comp_obj_location.is_a = is_; - comp_obj_location.ocn = obj_cite_digit_; + comp_obj_location.ocn = obj_cite_digits.on; comp_obj_location.segment_anchor_tag = segment_anchor_tag.to!string; comp_obj_location.parent_ocn = p_["obj_cite_number"]; comp_obj_location.parent_lev_markup = p_["lev_markup_number"]; @@ -6556,7 +6657,7 @@ struct NodeStructureMetadata { Lm lev_markup_number, Lc lev_collapsed_number, Ta segment_anchor_tag, - N obj_cite_digit_, + N obj_cite_digits, C cntr_, P ptr_, LA lv_ancestors_txt, @@ -6573,7 +6674,7 @@ struct NodeStructureMetadata { static assert(is(typeof(lev_markup_number) == string)); static assert(is(typeof(lev_collapsed_number) == string)); static assert(is(typeof(segment_anchor_tag) == string)); - static assert(is(typeof(obj_cite_digit_) == int)); + static assert(is(typeof(obj_cite_digits.on) == int)); static assert(is(typeof(cntr_) == int)); static assert(is(typeof(ptr_) == int)); static assert(is(typeof(lv_ancestors_txt) == string[])); @@ -6581,19 +6682,18 @@ struct NodeStructureMetadata { static assert(is(typeof(html_segnames_ptr) == int)); } assert(is_ == "heading"); - assert((obj_cite_digit_).to!int >= 0); + assert((obj_cite_digits.on).to!int >= 0); assert( lev_markup_number.match(rgx.levels_numbered), - ("not a valid heading level: " ~ lev_markup_number ~ " at " ~ obj_cite_digit_.to!string) + ("not a valid heading level: " ~ lev_markup_number ~ " at " ~ obj_cite_digits.on.to!string) ); if (lev_markup_number.match(rgx.levels_numbered)) { if (lev_markup_number.to!int == 0) { - assert(obj_cite_digit_.to!int == 1); + assert(obj_cite_digits.on.to!int == 1); } } } body { - int obj_cite_digit = obj_cite_digit_.to!int; switch (lev_markup_number.to!int) { case 0: lv = DocStructMarkupHeading.h_sect_A; @@ -6681,8 +6781,10 @@ struct NodeStructureMetadata { _comp_obj_heading_.is_of = "para"; _comp_obj_heading_.is_a = "heading"; _comp_obj_heading_.text = _text.to!string.strip; - _comp_obj_heading_.ocn = obj_cite_digit_; - _comp_obj_heading_.obj_cite_number = (obj_cite_digit==0) ? "" : obj_cite_digit.to!string; + _comp_obj_heading_.ocn = obj_cite_digits.on; + _comp_obj_heading_.obj_cite_number = (obj_cite_digits.on==0) ? "" : obj_cite_digits.on.to!string; + _comp_obj_heading_.obj_cite_number_off = (obj_cite_digits.off==0) ? "" : obj_cite_digits.off.to!string; + _comp_obj_heading_.obj_cite_number_type = obj_cite_digits.type; _comp_obj_heading_.segment_anchor_tag = segment_anchor_tag.to!string; _comp_obj_heading_.marked_up_level = lev; _comp_obj_heading_.heading_lev_markup = (!(lev_markup_number.empty) ? lev_markup_number.to!int : 0); @@ -7035,7 +7137,7 @@ struct ObjGenericComposite { string is_a = ""; string text = ""; string obj_cite_number = ""; - string obj_cite_number_non = ""; + string obj_cite_number_off = ""; string obj_cite_number_bkidx = ""; int obj_cite_number_type = 0; string[] anchor_tags = []; diff --git a/org/sdp.org b/org/sdp.org index cc9eee2..032448e 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -27,7 +27,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 18, 0); +enum ver = Version(0, 18, 1); #+END_SRC #+NAME: version_txt @@ -714,10 +714,13 @@ foreach (k; doc_matters.keys_seq.seg) { if (k == "body") { check["last_obj_cite_number_body"] = obj.obj_cite_number; } - if ((k != "bookindex_seg") && (k != "blurb")) { + if (!(obj.obj_cite_number.empty)) { check["last_obj_cite_number"] = obj.obj_cite_number; - } else if (k == "bookindex_seg") { - check["last_obj_cite_number_bkidx"] = obj.obj_cite_number; + } + } + if (k == "bookindex_seg") { + if (obj.obj_cite_number_type == 2) { + check["last_obj_cite_number_bkidx"] = obj.obj_cite_number_bkidx; } } } -- cgit v1.2.3