aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-07-29 05:35:06 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit4ce831bbc753ed1352e615ca79daddd13ea448d5 (patch)
treed430a75278548827e9414fcaab1c9cb427856934
parentfix for: gdc compiled program when run, segfaults on certain actions (diff)
0.18.1 ocn, looks promising
-rw-r--r--org/meta_abstraction.org458
-rw-r--r--org/sdp.org11
-rw-r--r--src/sdp/meta/metadoc_from_src.d456
-rw-r--r--src/sdp/meta/metadoc_summary.d9
-rw-r--r--src/sdp/meta/object_setter.d2
-rw-r--r--views/version.txt2
6 files changed, 574 insertions, 364 deletions
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;
}
}
}
diff --git a/src/sdp/meta/metadoc_from_src.d b/src/sdp/meta/metadoc_from_src.d
index 920e7af..e3cbe2d 100644
--- a/src/sdp/meta/metadoc_from_src.d
+++ b/src/sdp/meta/metadoc_from_src.d
@@ -47,7 +47,7 @@ template SiSUdocAbstraction() {
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;
@@ -69,7 +69,15 @@ template SiSUdocAbstraction() {
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,];
@@ -217,7 +225,7 @@ template SiSUdocAbstraction() {
obj.dom_collapsed = dom.dup;
return obj;
}
- 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 +/
@@ -318,8 +326,8 @@ template SiSUdocAbstraction() {
];
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";
@@ -328,6 +336,8 @@ template SiSUdocAbstraction() {
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;
@@ -442,6 +452,8 @@ template SiSUdocAbstraction() {
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;
@@ -459,6 +471,8 @@ template SiSUdocAbstraction() {
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;
@@ -479,12 +493,14 @@ template SiSUdocAbstraction() {
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;
} else if (line.matchFirst(rgx.heading_blurb)
@@ -518,6 +534,8 @@ template SiSUdocAbstraction() {
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;
@@ -535,6 +553,8 @@ template SiSUdocAbstraction() {
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;
@@ -555,6 +575,8 @@ template SiSUdocAbstraction() {
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
@@ -572,12 +594,14 @@ template SiSUdocAbstraction() {
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;
} else if (obj_type_status["quote"] == TriState.on) {
@@ -624,7 +648,7 @@ template SiSUdocAbstraction() {
/+ 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;
@@ -733,7 +757,7 @@ template SiSUdocAbstraction() {
an_object,
the_document_body_section,
bookindex_unordered_hashes,
- obj_cite_digit,
+ obj_cite_digits,
comp_obj_heading,
cntr,
obj_type_status,
@@ -754,9 +778,9 @@ template SiSUdocAbstraction() {
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 =
@@ -769,7 +793,7 @@ template SiSUdocAbstraction() {
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) {
@@ -797,9 +821,9 @@ template SiSUdocAbstraction() {
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,
@@ -820,7 +844,7 @@ template SiSUdocAbstraction() {
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[]
@@ -847,17 +871,17 @@ template SiSUdocAbstraction() {
} 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"],
@@ -872,8 +896,11 @@ template SiSUdocAbstraction() {
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;
@@ -946,10 +973,10 @@ template SiSUdocAbstraction() {
} /+ ← closed: loop markup document/text line by line +/
/+ ↓ post loop markup document/text +/
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",
@@ -969,6 +996,8 @@ template SiSUdocAbstraction() {
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;
@@ -996,6 +1025,8 @@ template SiSUdocAbstraction() {
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;
@@ -1011,6 +1042,8 @@ template SiSUdocAbstraction() {
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;
@@ -1028,6 +1061,8 @@ template SiSUdocAbstraction() {
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;
@@ -1059,6 +1094,8 @@ template SiSUdocAbstraction() {
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;
@@ -1074,13 +1111,13 @@ template SiSUdocAbstraction() {
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);
@@ -1095,6 +1132,8 @@ template SiSUdocAbstraction() {
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;
@@ -1119,6 +1158,8 @@ template SiSUdocAbstraction() {
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;
@@ -1326,6 +1367,12 @@ template SiSUdocAbstraction() {
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"])
@@ -1437,6 +1484,9 @@ template SiSUdocAbstraction() {
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) {
@@ -1468,9 +1518,9 @@ template SiSUdocAbstraction() {
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) {
@@ -1493,9 +1543,9 @@ template SiSUdocAbstraction() {
}
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;
}
}
}
@@ -1506,9 +1556,9 @@ template SiSUdocAbstraction() {
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) {
@@ -1531,14 +1581,14 @@ template SiSUdocAbstraction() {
}
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;
}
}
}
/+ 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) {
@@ -1549,9 +1599,9 @@ template SiSUdocAbstraction() {
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) {
@@ -1574,8 +1624,9 @@ template SiSUdocAbstraction() {
}
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;
}
}
@@ -1616,7 +1667,6 @@ template SiSUdocAbstraction() {
obj.obj_cite_number_type = OCNtype.bkidx;
}
}
- assert(obj_cite_digit == ocn_);
assert(obj_cite_digit_bkidx == ocn_bidx_);
}
/+ optional only one 1~ level +/
@@ -1626,9 +1676,9 @@ template SiSUdocAbstraction() {
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) {
@@ -1651,8 +1701,8 @@ template SiSUdocAbstraction() {
}
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;
}
}
@@ -1670,6 +1720,8 @@ template SiSUdocAbstraction() {
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;
@@ -1749,7 +1801,7 @@ template SiSUdocAbstraction() {
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;
@@ -1790,10 +1842,10 @@ template SiSUdocAbstraction() {
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);
}
static auto _check_ocn_status_(L,T)(
@@ -1824,11 +1876,11 @@ template SiSUdocAbstraction() {
} 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"] =
@@ -1838,7 +1890,7 @@ template SiSUdocAbstraction() {
} 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);
}
@@ -1880,8 +1932,7 @@ template SiSUdocAbstraction() {
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;
@@ -1960,7 +2011,7 @@ template SiSUdocAbstraction() {
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;
@@ -2177,14 +2228,14 @@ template SiSUdocAbstraction() {
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]
);
}
@@ -2198,8 +2249,11 @@ template SiSUdocAbstraction() {
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];
@@ -2210,16 +2264,14 @@ template SiSUdocAbstraction() {
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;
@@ -2232,7 +2284,7 @@ template SiSUdocAbstraction() {
debug(poem) { // poem verse
writefln(
"* %s curly\n%s",
- obj_cite_digit,
+ obj_cite_digits.on,
an_object[an_object_key]
);
}
@@ -2241,7 +2293,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2255,8 +2307,11 @@ template SiSUdocAbstraction() {
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];
@@ -2282,7 +2337,7 @@ template SiSUdocAbstraction() {
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";
@@ -2295,14 +2350,17 @@ template SiSUdocAbstraction() {
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;
@@ -2313,8 +2371,7 @@ template SiSUdocAbstraction() {
} 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;
@@ -2327,7 +2384,7 @@ template SiSUdocAbstraction() {
debug(poem) { // poem (tic) close
writefln(
"* %s tic\n%s",
- obj_cite_digit,
+ obj_cite_digits.on,
an_object[an_object_key]
);
}
@@ -2337,7 +2394,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2351,8 +2408,11 @@ template SiSUdocAbstraction() {
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];
@@ -2447,7 +2507,7 @@ template SiSUdocAbstraction() {
line,
an_object,
the_document_body_section,
- obj_cite_digit,
+ obj_cite_digits,
comp_obj_heading,
cntr,
obj_type_status,
@@ -2619,24 +2679,23 @@ template SiSUdocAbstraction() {
header_tag_value="";
}
}
- 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"
@@ -2644,23 +2703,26 @@ template SiSUdocAbstraction() {
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;
}
- 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,
@@ -2678,14 +2740,13 @@ template SiSUdocAbstraction() {
);
assertions_flag_types_block_status_none_or_closed(obj_type_status);
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";
@@ -2693,7 +2754,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2707,8 +2768,11 @@ template SiSUdocAbstraction() {
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];
@@ -2720,14 +2784,13 @@ template SiSUdocAbstraction() {
processing.remove("verse");
++cntr;
} 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";
@@ -2735,7 +2798,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2749,8 +2812,11 @@ template SiSUdocAbstraction() {
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];
@@ -2762,13 +2828,13 @@ template SiSUdocAbstraction() {
processing.remove("verse");
++cntr;
} 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";
@@ -2776,7 +2842,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2789,8 +2855,11 @@ template SiSUdocAbstraction() {
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];
@@ -2807,7 +2876,7 @@ template SiSUdocAbstraction() {
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";
@@ -2815,7 +2884,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2825,8 +2894,11 @@ template SiSUdocAbstraction() {
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;
@@ -2834,14 +2906,13 @@ template SiSUdocAbstraction() {
object_reset(an_object);
processing.remove("verse");
} 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";
@@ -2849,7 +2920,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2863,8 +2934,11 @@ template SiSUdocAbstraction() {
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];
@@ -2877,14 +2951,13 @@ template SiSUdocAbstraction() {
++cntr;
} 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";
@@ -2892,7 +2965,7 @@ template SiSUdocAbstraction() {
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"]
@@ -2901,8 +2974,11 @@ template SiSUdocAbstraction() {
obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_obj_misc_tuple[sObj.content];
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;
@@ -3149,19 +3225,19 @@ template SiSUdocAbstraction() {
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"] ~ ","))
@@ -3556,23 +3632,24 @@ template SiSUdocAbstraction() {
/+ abstraction functions ↑ +/
/+ ↓ abstraction function emitters +/
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;
@@ -3580,7 +3657,12 @@ template SiSUdocAbstraction() {
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() {
}
@@ -3600,7 +3682,7 @@ template SiSUdocAbstraction() {
n_foot_sp_asterisk = 0;
n_foot_sp_plus = 0;
}
- 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));
}
@@ -4038,6 +4120,8 @@ template SiSUdocAbstraction() {
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;
@@ -4056,6 +4140,8 @@ template SiSUdocAbstraction() {
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;
@@ -4070,6 +4156,8 @@ template SiSUdocAbstraction() {
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) {
@@ -4634,19 +4722,19 @@ template SiSUdocAbstraction() {
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
);
}
}
@@ -4664,12 +4752,12 @@ template SiSUdocAbstraction() {
) {
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;
@@ -4683,12 +4771,12 @@ template SiSUdocAbstraction() {
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)) {
@@ -4769,12 +4857,12 @@ template SiSUdocAbstraction() {
}
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;
@@ -4804,6 +4892,8 @@ template SiSUdocAbstraction() {
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;
@@ -4822,6 +4912,8 @@ template SiSUdocAbstraction() {
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;
@@ -4898,6 +4990,8 @@ template SiSUdocAbstraction() {
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;
@@ -4913,6 +5007,8 @@ template SiSUdocAbstraction() {
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;
@@ -4921,7 +5017,7 @@ template SiSUdocAbstraction() {
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;
}
}
@@ -5001,8 +5097,8 @@ template SiSUdocAbstraction() {
}
return endnotes_;
}
- private auto endnote_objects(
- int obj_cite_digit,
+ private auto endnote_objects(N)(
+ N obj_cite_digits,
bool[string] opt_action,
)
in {
@@ -5026,6 +5122,8 @@ template SiSUdocAbstraction() {
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;
@@ -5033,7 +5131,6 @@ template SiSUdocAbstraction() {
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";
@@ -5043,6 +5140,8 @@ template SiSUdocAbstraction() {
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;
@@ -5051,7 +5150,6 @@ template SiSUdocAbstraction() {
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;
@@ -5062,6 +5160,8 @@ template SiSUdocAbstraction() {
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;
@@ -5078,6 +5178,8 @@ template SiSUdocAbstraction() {
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;
@@ -5091,7 +5193,7 @@ template SiSUdocAbstraction() {
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;
}
}
@@ -5204,7 +5306,7 @@ template SiSUdocAbstraction() {
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_
@@ -5213,18 +5315,17 @@ template SiSUdocAbstraction() {
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;
@@ -5241,7 +5342,7 @@ template SiSUdocAbstraction() {
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"];
@@ -5265,7 +5366,7 @@ template SiSUdocAbstraction() {
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,
@@ -5282,7 +5383,7 @@ template SiSUdocAbstraction() {
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[]));
@@ -5290,19 +5391,18 @@ template SiSUdocAbstraction() {
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;
@@ -5390,8 +5490,10 @@ template SiSUdocAbstraction() {
_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);
diff --git a/src/sdp/meta/metadoc_summary.d b/src/sdp/meta/metadoc_summary.d
index 591844f..a415387 100644
--- a/src/sdp/meta/metadoc_summary.d
+++ b/src/sdp/meta/metadoc_summary.d
@@ -33,10 +33,13 @@ template SiSUabstractionSummary() {
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;
}
}
}
diff --git a/src/sdp/meta/object_setter.d b/src/sdp/meta/object_setter.d
index 805afd3..e4bb05f 100644
--- a/src/sdp/meta/object_setter.d
+++ b/src/sdp/meta/object_setter.d
@@ -23,7 +23,7 @@ template ObjectSetter() {
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/views/version.txt b/views/version.txt
index db9b02e..09db722 100644
--- a/views/version.txt
+++ b/views/version.txt
@@ -4,7 +4,7 @@ struct Version {
int minor;
int patch;
}
-enum ver = Version(0, 18, 0);
+enum ver = Version(0, 18, 1);
version (Posix) {
version (DigitalMars) {
} else version (LDC) {