aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sisudoc
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2026-08-28 19:07:05 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2026-08-28 20:15:35 -0400
commit45a73e4464fb662d481d31ebf8d3ef204296159a (patch)
tree0aa0ef5111f55a6ad6cfce4110fa961d9e2001b1 /src/sisudoc
parenttest build .ssp requires --serial (--no-parallel) run (diff)
.ssp: doc structure related fixes (& to epub toc_nav)
for document abstraction and its .ssp output, removed the requirement of including --abstraction & --serial flags to produce correct output (for: .dom_status, .dom_status_collapsed & .last_descendant) - meta_processing_xml_dom() includes show_abstraction, so --pod2 and --show-abstraction run the dom pass; last_descendant is derived from that pass via after_doc_get_descendants() The accumulators are now verified as eight wide locals of docAbstraction(), so each document starts clean and no two threads share one. - bug: the four dom accumulators were template scope (shared) and nine wide, while their end of document reset was eight wide, so the first document of a run differed from the rest and parallel runs raced on one buffer, (which also mis-nested epub toc_nav) test/ reference .ssp regenerated: accelerando only, trailing zero dropped. test-abstraction-ssp.sh now runs parallel and diffs output against a serial run. (assisted by Claude-Code)
Diffstat (limited to 'src/sisudoc')
-rw-r--r--src/sisudoc/ocda/meta/metadoc_from_src.d9
-rw-r--r--src/sisudoc/ocda/meta/metadoc_from_src_functions.d4
-rw-r--r--src/sisudoc/spine.d2
3 files changed, 7 insertions, 8 deletions
diff --git a/src/sisudoc/ocda/meta/metadoc_from_src.d b/src/sisudoc/ocda/meta/metadoc_from_src.d
index e104c94..7fcf3bb 100644
--- a/src/sisudoc/ocda/meta/metadoc_from_src.d
+++ b/src/sisudoc/ocda/meta/metadoc_from_src.d
@@ -136,6 +136,11 @@ template docAbstraction() {
"end" : ""
];
string[] lv_ancestors_txt = [ "", "", "", "", "", "", "", "", ];
+ /+ ↓ dom structure state, per document (not shared, parallel safe) +/
+ int[] dom_structure_markedup_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] dom_structure_markedup_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0,];
int[string] lv = [
"lv" : eN.bi.off,
"h0" : eN.bi.off,
@@ -1506,10 +1511,6 @@ template docAbstraction() {
html_segnames_ptr = 0;
html_segnames_ptr_cntr = 0;
content_non_header = "8";
- dom_structure_markedup_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
- dom_structure_markedup_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0,];
- dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
- dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0,];
lev_anchor_tag = "";
anchor_tag = "";
// identify parts
diff --git a/src/sisudoc/ocda/meta/metadoc_from_src_functions.d b/src/sisudoc/ocda/meta/metadoc_from_src_functions.d
index 9824d61..cf46fda 100644
--- a/src/sisudoc/ocda/meta/metadoc_from_src_functions.d
+++ b/src/sisudoc/ocda/meta/metadoc_from_src_functions.d
@@ -90,10 +90,6 @@ template docAbstractionFunctions() {
// ocn
OCNset obj_cite_digits;
int obj_cite_digit_, obj_cite_digit_off, obj_cite_digit_bkidx, obj_cite_digit_type;
- int[] dom_structure_markedup_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
- int[] dom_structure_markedup_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
- int[] dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
- int[] dom_structure_collapsed_tags_status_buffer = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];
static auto obj_im = ObjInlineMarkup();
static auto obj_att = ObjAttributes();
auto object_citation_number = OCNemitter();
diff --git a/src/sisudoc/spine.d b/src/sisudoc/spine.d
index c80814e..17950d0 100644
--- a/src/sisudoc/spine.d
+++ b/src/sisudoc/spine.d
@@ -821,6 +821,8 @@ string program_name = "spine";
@trusted bool meta_processing_xml_dom() {
return (
opts["abstraction"]
+ || show_abstraction
+ || show_abstraction_db
|| html
|| epub
|| odt