aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-12-02 14:44:39 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:13 -0400
commit313ddb0ac605838eaca89054ff80a0402a8c6313 (patch)
tree960459bef8876b5e859fa15435a15ee673212a67 /src
parent0.9.2 backmatter: control processing, possible to omit sections (diff)
0.9.3 start work on node pointers, a way to go
Diffstat (limited to 'src')
-rwxr-xr-xsrc/sdp.d9
-rw-r--r--src/sdp/ao_abstract_doc_source.d338
-rw-r--r--src/sdp/ao_object_setter.d48
-rw-r--r--src/sdp/ao_output_debugs.d85
-rw-r--r--src/sdp/output_html.d4
-rw-r--r--src/sdp/output_hub.d1
6 files changed, 232 insertions, 253 deletions
diff --git a/src/sdp.d b/src/sdp.d
index 9f98716..8b376e6 100755
--- a/src/sdp.d
+++ b/src/sdp.d
@@ -213,8 +213,7 @@ void main(string[] args) {
auto t = abs.abstract_doc_source(content_body, dochead_make, dochead_meta, opt_action_bool);
static assert(!isTypeTuple!(t));
auto doc_ao_contents = t[0]; // head ~ toc ~ contents ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~blurb;
- auto doc_ao_bookindex_unordered_hashes = t[1]; // redundant?
- auto doc_ao_biblio = t[2]; // redundant?
+ auto doc_html_segnames = t[1];
string[][string] document_section_keys_sequenced = [
"seg": [
"head",
@@ -266,8 +265,7 @@ void main(string[] args) {
dbg.abstract_doc_source_debugs(
doc_ao_contents,
document_section_keys_sequenced,
- doc_ao_bookindex_unordered_hashes, // redundant?
- doc_ao_biblio, // redundant?
+ doc_html_segnames,
dochead_make,
dochead_meta,
fn_src,
@@ -278,6 +276,7 @@ void main(string[] args) {
output.hub(
doc_ao_contents,
document_section_keys_sequenced,
+ doc_html_segnames,
dochead_make,
dochead_meta,
fn_src,
@@ -293,7 +292,7 @@ void main(string[] args) {
destroy(content_body);
destroy(t);
destroy(doc_ao_contents);
- destroy(doc_ao_biblio);
+ destroy(doc_html_segnames);
destroy(fn_src);
}
} else {
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index cc39ea1..7dbc573 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -22,7 +22,7 @@ template SiSUdocAbstraction() {
string[string] an_object, processing;
string an_object_key;
string[] anchor_tags;
- string segment_object_belongs_to;
+ string segment_anchor_tag_that_object_belongs_to;
auto set_abstract_object = ObjectAbstractSet();
auto note_section = NotesSection();
/+ enum +/
@@ -48,9 +48,12 @@ template SiSUdocAbstraction() {
JSONValue[] bib_arr_json;
int bib_entry;
/+ counters +/
- long counter, previous_count, previous_length;
+ long cntr, previous_count, previous_length;
int[string] line_occur;
- int verse_line, heading_pointer;
+ int verse_line, heading_ptr;
+ string[] html_segnames=[];
+ uint html_segnames_ptr=0;
+ uint html_segnames_ptr_cntr=0;
/+ paragraph attributes +/
int[string] indent;
bool bullet = true;
@@ -122,7 +125,7 @@ template SiSUdocAbstraction() {
"h5" : State.off,
"h6" : State.off,
"h7" : State.off,
- "lev_collapsed_number" : 0,
+ "lev_int_collapsed" : 0,
];
int[string] collapsed_lev = [
"h0" : State.off,
@@ -165,8 +168,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
["toc"], // anchor tag
"1", // lev
- 4, // lev_markup_number
- 2, // lev_collapsed_number
+ 4, // lev_int_markup
+ 2, // lev_int_collapsed
);
the_table_of_contents_section = [
"seg": [toc_head],
@@ -262,8 +265,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
the_glossary_section ~=
set_abstract_object.contents_heading(
@@ -272,8 +275,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
["glossary"], // anchor tag
"1", // lev
- 4, // lev_markup_number
- 2, // lev_collapsed_number
+ 4, // lev_int_markup
+ 2, // lev_int_collapsed
);
// } else if (matchFirst(line, rgx.heading)) {
// _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels?
@@ -323,8 +326,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
the_blurb_section ~=
set_abstract_object.contents_heading(
@@ -333,8 +336,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
["blurb"], // anchor tag
"1", // lev
- 4, // lev_markup_number
- 2, // lev_collapsed_number
+ 4, // lev_int_markup
+ 2, // lev_int_collapsed
);
} else if ((matchFirst(line, rgx.heading))
&& (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) {
@@ -366,7 +369,7 @@ template SiSUdocAbstraction() {
continue;
} else if (type["poem"] == TriState.on) {
/+ within block object: poem +/
- _poem_block_(line, an_object, type, counter, obj_cite_number_poem, dochead_make_aa);
+ _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa);
continue;
/+ within block object: group +/
} else if (type["group"] == TriState.on) {
@@ -444,7 +447,7 @@ template SiSUdocAbstraction() {
set_abstract_object.contents_comment(strip(an_object[an_object_key]));
_common_reset_(line_occur, an_object, type);
processing.remove("verse");
- ++counter;
+ ++cntr;
} else if (((line_occur["para"] == State.off)
&& (line_occur["heading"] == State.off))
&& ((type["para"] == State.off)
@@ -503,7 +506,7 @@ template SiSUdocAbstraction() {
bookindex_unordered_hashes,
obj_cite_number,
_node,
- counter,
+ cntr,
type,
obj_cite_number_poem,
dochead_make_aa
@@ -534,34 +537,40 @@ template SiSUdocAbstraction() {
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
if (to!int(an_object["lev_markup_number"]) == 4) {
- segment_object_belongs_to = anchor_tags[0];
+ segment_anchor_tag_that_object_belongs_to = anchor_tags[0];
} else if (to!int(an_object["lev_markup_number"]) < 4) {
- segment_object_belongs_to = "";
+ segment_anchor_tag_that_object_belongs_to = "";
}
_anchor_tag=to!string(obj_cite_number);
the_table_of_contents_section = obj_im.table_of_contents_gather_headings(
an_object,
dochead_make_aa,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
_anchor_tag,
the_table_of_contents_section,
);
+ if (an_object["lev_markup_number"] == "4") {
+ html_segnames ~= segment_anchor_tag_that_object_belongs_to;
+ html_segnames_ptr = html_segnames_ptr_cntr;
+ html_segnames_ptr_cntr++;
+ }
_node =
node_construct.node_emitter_heading(
an_object["lev_markup_number"],
an_object["lev_collapsed_number"],
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer,
- an_object["is"]
+ cntr,
+ heading_ptr,
+ an_object["is"],
+ html_segnames_ptr,
); // heading
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
- ++heading_pointer;
+ ++heading_ptr;
debug(segments) {
writeln(an_object["lev_markup_number"]);
- writeln(segment_object_belongs_to);
+ writeln(segment_anchor_tag_that_object_belongs_to);
}
the_document_body_section ~=
set_abstract_object.contents_heading(
@@ -581,7 +590,7 @@ template SiSUdocAbstraction() {
an_object.remove("lev");
an_object.remove("lev_markup_number");
processing.remove("verse");
- ++counter;
+ ++cntr;
} else if ((type["para"] == State.on) && (line_occur["para"] > State.off)) {
/+ paragraph object (current line empty) +/
obj_cite_number = obj_cite_number_emit(type["obj_cite_number_status"]);
@@ -593,11 +602,11 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
- an_object["is"]
+ cntr,
+ heading_ptr-1,
+ an_object["is"],
);
auto substantive_object_and_anchor_tags_tuple =
obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); // ...
@@ -621,7 +630,7 @@ template SiSUdocAbstraction() {
];
bullet = false;
processing.remove("verse");
- ++counter;
+ ++cntr;
} else {
assert(
line == null,
@@ -640,7 +649,7 @@ template SiSUdocAbstraction() {
&& (the_document_body_section.length > previous_length)
) {
if ((the_document_body_section[$-1].is_a == "heading")
- && (the_document_body_section[$-1].heading_attrib.lev_markup_number < 5)) {
+ && (the_document_body_section[$-1].heading_attrib.lev_int_markup < 5)) {
type["biblio_section"] = State.off;
type["glossary_section"] = State.off;
type["blurb_section"] = State.off;
@@ -653,8 +662,8 @@ template SiSUdocAbstraction() {
previous_count=the_document_body_section.length -1;
note_section.gather_notes_for_endnote_section(
the_document_body_section,
- segment_object_belongs_to,
- the_document_body_section.length-1
+ segment_anchor_tag_that_object_belongs_to,
+ the_document_body_section.length-1,
);
}
}
@@ -698,8 +707,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
} else {
writeln("gloss");
@@ -722,8 +731,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
the_bibliography_section ~=
set_abstract_object.contents_heading(
@@ -732,8 +741,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
["bibliography"], // anchor tag
"1", // lev
- 4, // lev_markup_number
- 2, // lev_collapsed_number
+ 4, // lev_int_markup
+ 2, // lev_int_collapsed
);
} else {
the_bibliography_section ~=
@@ -743,8 +752,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
}
string out_;
@@ -783,7 +792,7 @@ template SiSUdocAbstraction() {
bi.bookindex_build_section(
bookindex_unordered_hashes,
obj_cite_number,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
opt_action_bool,
);
static assert(!isTypeTuple!(bi_tuple));
@@ -803,8 +812,8 @@ template SiSUdocAbstraction() {
0, // obj_cite_number
[""], // anchor tag
"B", // lev
- 1, // lev_markup_number
- 1, // lev_collapsed_number
+ 1, // lev_int_markup
+ 1, // lev_int_collapsed
);
} else {
writeln("blurb");
@@ -823,7 +832,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix",
"Endnotes",
- "endnotes", // segment_object_belongs_to
+ "endnotes", // segment_anchor_tag_that_object_belongs_to
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
@@ -857,7 +866,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffixs",
"Glossary",
- "glossary", // segment_object_belongs_to
+ "glossary", // segment_anchor_tag_that_object_belongs_to
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
@@ -889,7 +898,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix",
"Bibliography",
- "bibliography", // segment_object_belongs_to
+ "bibliography", // segment_anchor_tag_that_object_belongs_to
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
@@ -921,7 +930,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix",
"Book Index",
- "bookindex", // segment_object_belongs_to
+ "bookindex", // segment_anchor_tag_that_object_belongs_to
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
@@ -955,7 +964,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix",
"Blurb",
- "blurb", // segment_object_belongs_to
+ "blurb", // segment_anchor_tag_that_object_belongs_to
);
toc_txt_= munge.url_links(toc_txt_);
the_table_of_contents_section["seg"] ~=
@@ -1010,8 +1019,7 @@ template SiSUdocAbstraction() {
];
auto t = tuple(
document_the,
- bookindex_unordered_hashes,
- biblio_ordered
+ html_segnames,
);
return t;
/+ post loop markup document/text ↑ +/
@@ -1400,7 +1408,7 @@ template SiSUdocAbstraction() {
char[] line,
ref string[string] an_object,
ref int[string] type,
- ref long counter,
+ ref long cntr,
string[string] obj_cite_number_poem,
string[string][string] dochead_make_aa,
) {
@@ -1447,7 +1455,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
}
obj_cite_number_poem["end"] =
to!string(obj_cite_number);
@@ -1478,10 +1486,10 @@ template SiSUdocAbstraction() {
an_object["is"] = "verse";
_node = node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1499,7 +1507,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
}
}
} else if (type["tic_poem"] == TriState.on) {
@@ -1537,7 +1545,7 @@ template SiSUdocAbstraction() {
obj_cite_number_poem["end"] = to!string(obj_cite_number);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
}
type["blocks"] = TriState.closing;
type["poem"] = TriState.closing;
@@ -1567,10 +1575,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1588,7 +1596,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
}
}
}
@@ -1740,7 +1748,7 @@ template SiSUdocAbstraction() {
ref string[][string][string] bookindex_unordered_hashes,
ref int obj_cite_number,
ref string _node,
- ref long counter,
+ ref long cntr,
ref int[string] type,
string[string] obj_cite_number_poem,
string[string][string] dochead_make_aa,
@@ -1766,10 +1774,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1787,7 +1795,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
type["blocks"] = TriState.off;
type["code"] = TriState.off;
} else if (type["poem"] == TriState.closing) {
@@ -1799,10 +1807,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
the_document_body_section ~=
@@ -1827,10 +1835,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1848,7 +1856,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
type["blocks"] = TriState.off;
type["table"] = TriState.off;
} else if (type["group"] == TriState.closing) {
@@ -1862,10 +1870,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1883,7 +1891,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
type["blocks"] = TriState.off;
type["group"] = TriState.off;
} else if (type["block"] == TriState.closing) {
@@ -1896,10 +1904,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1917,7 +1925,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
type["blocks"] = TriState.off;
type["block"] = TriState.off;
} else if (type["quote"] == TriState.closing) {
@@ -1931,10 +1939,10 @@ template SiSUdocAbstraction() {
_node =
node_construct.node_emitter(
content_non_header,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
obj_cite_number,
- counter,
- heading_pointer-1,
+ cntr,
+ heading_ptr-1,
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
@@ -1952,7 +1960,7 @@ template SiSUdocAbstraction() {
);
object_reset(an_object);
processing.remove("verse");
- ++counter;
+ ++cntr;
type["blocks"] = TriState.off;
type["quote"] = TriState.off;
}
@@ -2667,7 +2675,7 @@ template SiSUdocAbstraction() {
auto table_of_contents_gather_headings(
string[string] obj_,
string[string][string] dochead_make_aa,
- string segment_object_belongs_to,
+ string segment_anchor_tag_that_object_belongs_to,
string _anchor_tag,
ObjComposite[][string] the_table_of_contents_section,
)
@@ -2762,7 +2770,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix",
heading_toc_,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
);
toc_txt_= munge.url_links(toc_txt_);
indent=[
@@ -2783,7 +2791,7 @@ template SiSUdocAbstraction() {
toc_txt_ = format(
"{ %s }../%s.fn_suffix#%s",
heading_toc_,
- segment_object_belongs_to,
+ segment_anchor_tag_that_object_belongs_to,
_anchor_tag,
);
toc_txt_= munge.url_links(toc_txt_);
@@ -3178,10 +3186,10 @@ template SiSUdocAbstraction() {
oa_j.object["obj_cite_number"] = node_j["obj_cite_number"];
oa_j.object["lev_markup_number"] = node_j["lev_markup_number"];
oa_j.object["lev_collapsed_number"] = node_j["lev_collapsed_number"];
- oa_j.object["heading_pointer"] =
- node_j["heading_pointer"]; // check
- oa_j.object["doc_object_pointer"] =
- node_j["doc_object_pointer"]; // check
+ oa_j.object["heading_ptr"] =
+ node_j["heading_ptr"]; // check
+ oa_j.object["doc_object_ptr"] =
+ node_j["doc_object_ptr"]; // check
}
oa_j.object["parent_obj_cite_number"] = node_j["parent_obj_cite_number"];
oa_j.object["parent_lev_markup_number"] = node_j["parent_lev_markup_number"];
@@ -3318,12 +3326,12 @@ template SiSUdocAbstraction() {
auto bookindex_build_section(
string[][string][string] bookindex_unordered_hashes,
int obj_cite_number,
- string segment_object_belongs_to,
+ string segment_anchor_tag_that_object_belongs_to,
bool[string] opt_action_bool,
) {
string type;
string lev;
- int lev_markup_number, lev_collapsed_number;
+ int lev_int_markup, lev_int_collapsed;
string attrib;
int[string] indent;
auto set_abstract_object = ObjectAbstractSet();
@@ -3335,8 +3343,8 @@ template SiSUdocAbstraction() {
string bi_tmp_seg, bi_tmp_scroll;
attrib="";
lev="B";
- lev_markup_number=1;
- lev_collapsed_number=1;
+ lev_int_markup=1;
+ lev_int_collapsed=1;
bookindex_section["scroll"] ~=
set_abstract_object.contents_heading(
"Book Index",
@@ -3344,8 +3352,8 @@ template SiSUdocAbstraction() {
obj_cite_number,
[],
to!string(lev),
- lev_markup_number,
- lev_collapsed_number
+ lev_int_markup,
+ lev_int_collapsed
);
bookindex_section["seg"] ~=
set_abstract_object.contents_heading(
@@ -3354,16 +3362,16 @@ template SiSUdocAbstraction() {
obj_cite_number,
[],
to!string(lev),
- lev_markup_number,
- lev_collapsed_number
+ lev_int_markup,
+ lev_int_collapsed
);
++obj_cite_number;
++mkn;
// 1~ Index
attrib="";
lev="1";
- lev_markup_number=4;
- lev_collapsed_number=2;
+ lev_int_markup=4;
+ lev_int_collapsed=2;
bookindex_section["scroll"] ~=
set_abstract_object.contents_heading(
"Index",
@@ -3371,8 +3379,8 @@ template SiSUdocAbstraction() {
obj_cite_number,
["book_index"],
to!string(lev),
- lev_markup_number,
- lev_collapsed_number
+ lev_int_markup,
+ lev_int_collapsed
);
bookindex_section["seg"] ~=
set_abstract_object.contents_heading(
@@ -3381,8 +3389,8 @@ template SiSUdocAbstraction() {
obj_cite_number,
["book_index"],
to!string(lev),
- lev_markup_number,
- lev_collapsed_number
+ lev_int_markup,
+ lev_int_collapsed
);
++obj_cite_number;
++mkn;
@@ -3392,9 +3400,9 @@ template SiSUdocAbstraction() {
foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ");
- bi_tmp_seg ~= (segment_object_belongs_to.empty)
+ bi_tmp_seg ~= (segment_anchor_tag_that_object_belongs_to.empty)
? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ")
- : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
+ : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
}
bi_tmp_scroll ~= " \\\\\n ";
bi_tmp_seg ~= " \\\\\n ";
@@ -3407,9 +3415,9 @@ template SiSUdocAbstraction() {
foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ");
- bi_tmp_seg ~= (segment_object_belongs_to.empty)
+ bi_tmp_seg ~= (segment_anchor_tag_that_object_belongs_to.empty)
? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ")
- : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
+ : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
}
bi_tmp_scroll ~= " \\\\\n ";
bi_tmp_seg ~= " \\\\\n ";
@@ -3477,20 +3485,20 @@ template SiSUdocAbstraction() {
auto rgx = Rgx();
private auto gather_notes_for_endnote_section(
ObjComposite[] contents_am,
- string segment_object_belongs_to,
- ulong counter,
+ string segment_anchor_tag_that_object_belongs_to,
+ ulong cntr,
)
in {
// endnotes/ footnotes for
// doc objects other than paragraphs & headings
// various forms of grouped text
- assert((contents_am[counter].is_a == "para")
- || (contents_am[counter].is_a == "heading")
- || (contents_am[counter].is_a == "group"));
- assert(counter >= previous_count);
- previous_count=counter;
+ assert((contents_am[cntr].is_a == "para")
+ || (contents_am[cntr].is_a == "heading")
+ || (contents_am[cntr].is_a == "group"));
+ assert(cntr >= previous_count);
+ previous_count=cntr;
assert(
- match(contents_am[counter].object,
+ match(contents_am[cntr].object,
rgx.inline_notes_delimiter_al_regular_number_note)
);
}
@@ -3499,24 +3507,24 @@ template SiSUdocAbstraction() {
foreach(
m;
matchAll(
- contents_am[counter].object,
+ contents_am[cntr].object,
rgx.inline_notes_delimiter_al_regular_number_note
)
) {
debug(endnotes_build) {
writeln(
- "{^{", m.captures[1], ".}^}../", segment_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ",
+ "{^{", m.captures[1], ".}^}../", segment_anchor_tag_that_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ",
m.captures[2]); // sometimes need segment name (segmented html & epub)
}
// TODO NEXT you need anchor for segments at this point ->
object_notes["anchor"] ~= "#note_" ~ m.captures[1] ~ "』";
- object_notes["seg"] ~= (segment_object_belongs_to.empty)
+ object_notes["seg"] ~= (segment_anchor_tag_that_object_belongs_to.empty)
? (munge.url_links(
"{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
m.captures[1]) ~ " " ~ m.captures[2] ~ "』"
)
: (munge.url_links(
- "{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~
+ "{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#noteref_" ~
m.captures[1]) ~ " " ~ m.captures[2] ~ "』"
);
object_notes["scroll"] ~=
@@ -3666,11 +3674,11 @@ template SiSUdocAbstraction() {
writeln("json: ", bib_arr_json.length);
writeln("unsorted: ", biblio_unsorted.length);
writeln("sorted: ", biblio_sorted__.length);
- int counter;
+ int cntr;
int[7] x;
- while (counter < x.length) {
- writeln(counter, ": ", biblio_sorted__[counter]["fulltitle"]);
- counter++;
+ while (cntr < x.length) {
+ writeln(cntr, ": ", biblio_sorted__[cntr]["fulltitle"]);
+ cntr++;
}
}
return biblio_sorted__;
@@ -3737,9 +3745,9 @@ template SiSUdocAbstraction() {
string node_emitter(
string lev_markup_number,
string segment_anchor_tag,
- int obj_cite_number_,
- long counter_,
- int pointer_,
+ int obj_cite_number_,
+ long cntr_,
+ int ptr_,
string is_
)
in {
@@ -3765,20 +3773,20 @@ template SiSUdocAbstraction() {
p_["obj_cite_number"] = lv4;
}
_node=("{ " ~
- "\"is\": \"" ~ is_ ~ "\"" ~
- ", \"heading_pointer\": " ~ to!string(pointer_) ~
- ", \"doc_object_pointer\": " ~ to!string(counter_) ~
- ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~
- ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~
- ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~
+ "\"is\": \"" ~ is_ ~ "\"" ~
+ ", \"heading_ptr\": " ~ to!string(ptr_) ~
+ ", \"doc_object_ptr\": " ~ to!string(cntr_) ~
+ ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~
+ ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~
+ ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~
", \"parent_lev_markup_number\": " ~ to!string(p_["lev_markup_number"]) ~
" }"
);
debug(node) {
if (match(lev_markup_number, rgx.levels_numbered_headings)) {
- writeln("* ", to!string(_node));
+ writeln("x ", to!string(_node));
} else {
- writeln("* ", to!string(_node));
+ writeln("- ", to!string(_node));
}
}
JSONValue j = parseJSON(_node);
@@ -3793,10 +3801,11 @@ template SiSUdocAbstraction() {
string lev_markup_number,
string lev_collapsed_number,
string segment_anchor_tag,
- int obj_cite_number_,
- long counter_,
- int pointer_,
- string is_
+ int obj_cite_number_,
+ long cntr_,
+ int ptr_,
+ string is_,
+ uint html_segnames_ptr,
)
in {
auto rgx = Rgx();
@@ -3815,15 +3824,15 @@ template SiSUdocAbstraction() {
body {
auto rgx = Rgx();
int obj_cite_number = to!int(obj_cite_number_);
- switch (lev_markup_number) { // switch (to!string(lv)) {
- case "0":
+ switch (to!int(lev_markup_number)) { // switch (to!string(lv)) {
+ case 0:
lv = DocStructMarkupHeading.h_sect_A;
lv0 = obj_cite_number;
lv1=0; lv2=0; lv3=0; lv4=0; lv5=0; lv6=0; lv7=0;
p_["lev_markup_number"] = 0;
p_["obj_cite_number"] = 0;
break;
- case "1":
+ case 1:
lv = DocStructMarkupHeading.h_sect_B;
lv1 = obj_cite_number;
lv2=0; lv3=0; lv4=0; lv5=0; lv6=0; lv7=0;
@@ -3831,7 +3840,7 @@ template SiSUdocAbstraction() {
DocStructMarkupHeading.h_sect_A;
p_["obj_cite_number"] = lv0;
break;
- case "2":
+ case 2:
lv = DocStructMarkupHeading.h_sect_C;
lv2 = obj_cite_number;
lv3=0; lv4=0; lv5=0; lv6=0; lv7=0;
@@ -3839,7 +3848,7 @@ template SiSUdocAbstraction() {
DocStructMarkupHeading.h_sect_B;
p_["obj_cite_number"] = lv1;
break;
- case "3":
+ case 3:
lv = DocStructMarkupHeading.h_sect_D;
lv3=obj_cite_number;
lv4=0; lv5=0; lv6=0; lv7=0;
@@ -3847,7 +3856,7 @@ template SiSUdocAbstraction() {
DocStructMarkupHeading.h_sect_C;
p_["obj_cite_number"] = lv2;
break;
- case "4":
+ case 4:
lv = DocStructMarkupHeading.h_text_1;
lv4 = obj_cite_number;
lv5=0; lv6=0; lv7=0;
@@ -3869,7 +3878,7 @@ template SiSUdocAbstraction() {
p_["obj_cite_number"] = lv0;
}
break;
- case "5":
+ case 5:
lv = DocStructMarkupHeading.h_text_2;
lv5 = obj_cite_number;
lv6=0; lv7=0;
@@ -3877,7 +3886,7 @@ template SiSUdocAbstraction() {
DocStructMarkupHeading.h_text_1;
p_["obj_cite_number"] = lv4;
break;
- case "6":
+ case 6:
lv = DocStructMarkupHeading.h_text_3;
lv6 = obj_cite_number;
lv7=0;
@@ -3885,7 +3894,7 @@ template SiSUdocAbstraction() {
DocStructMarkupHeading.h_text_2;
p_["obj_cite_number"] = lv5;
break;
- case "7":
+ case 7:
lv = DocStructMarkupHeading.h_text_4;
lv7 = obj_cite_number;
p_["lev_markup_number"] =
@@ -3896,15 +3905,16 @@ template SiSUdocAbstraction() {
break;
}
_node=("{ " ~
- "\"is\": \"" ~ is_ ~ "\"" ~
- ", \"heading_pointer\": " ~ to!string(pointer_) ~
- ", \"doc_object_pointer\": " ~ to!string(counter_) ~
- ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~
- ", \"lev_markup_number\": " ~ to!string(lev_markup_number) ~
- ", \"lev_collapsed_number\": " ~ to!string(lev_collapsed_number) ~
- ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~
- ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~
- ", \"parent_lev_markup_number\": " ~ to!string(p_["lev_markup_number"]) ~
+ "\"is\": \"" ~ is_ ~ "\"" ~
+ ", \"heading_ptr\": " ~ to!string(ptr_) ~
+ ", \"doc_object_ptr\": " ~ to!string(cntr_) ~
+ ", \"html_segnames_ptr\": \"" ~ ((lev_markup_number == "4") ? (to!string(html_segnames_ptr)) : "") ~ "\"" ~
+ ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~
+ ", \"lev_markup_number\": " ~ to!string(lev_markup_number) ~
+ ", \"lev_collapsed_number\": " ~ to!string(lev_collapsed_number) ~
+ ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~
+ ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~
+ ", \"parent_lev_markup_number\": " ~ to!string(p_["lev_markup_number"]) ~
" }"
);
debug(heading) {
@@ -3912,11 +3922,9 @@ template SiSUdocAbstraction() {
writeln("* ", to!string(_node));
}
}
- debug(node) {
+ debug(nodeheading) {
if (match(lev_markup_number, rgx.levels_numbered_headings)) {
writeln("* ", to!string(_node));
- } else {
- writeln("* ", to!string(_node));
}
}
JSONValue j = parseJSON(_node);
diff --git a/src/sdp/ao_object_setter.d b/src/sdp/ao_object_setter.d
index 844af9b..35ca768 100644
--- a/src/sdp/ao_object_setter.d
+++ b/src/sdp/ao_object_setter.d
@@ -6,9 +6,14 @@
template ObjectSetter() {
/+ structs +/
struct HeadingAttrib {
- string lev = "9";
- int lev_markup_number = 9;
- int lev_collapsed_number = 9;
+ string lev = "9";
+ int lev_int_markup = 9;
+ int lev_int_collapsed = 9;
+ int[] closes_lev_collapsed = []; // TODO track
+ int[] closes_lev_markup = []; // TODO track
+ int array_ptr = 0;
+ // heading segments, 1~ lev4:
+ int heading_array_ptr_segments = 0; // TODO
}
struct ParaAttrib {
int indent_start = 0;
@@ -22,10 +27,22 @@ template ObjectSetter() {
// no .attrib and no .obj_cite_number
}
struct Node {
- int ocn = 0;
- int parent_lev = 0;
- int parent_ocn = 0;
- string node = "";
+ int ocn = 0;
+ string seg_anchor_tag = "";
+ // parent
+ int parent_lev_int_markup = 0;
+ int parent_ocn = 0;
+ int[] ancestors = []; // TODO track
+ // heading:
+ int heading_lev_int_markup = 0;
+ int heading_lev_int_collapsed = 0;
+ int[] heading_closes_lev_collapsed = []; // TODO track
+ int[] heading_closes_lev_markup = []; // TODO track
+ int heading_array_ptr = 0;
+ // heading segments, 1~ lev4:
+ int heading_array_ptr_segments = 0; // TODO
+ // node info json string:
+ string node = "";
}
struct ObjComposite {
string use = "";
@@ -59,8 +76,8 @@ template ObjectSetter() {
in int obj_cite_number,
in string[] tags,
in string lev,
- in int lev_markup_number,
- in int lev_collapsed_number,
+ in int lev_int_markup,
+ in int lev_int_collapsed,
) {
ObjComposite object_set;
object_set.use = "content";
@@ -70,9 +87,8 @@ template ObjectSetter() {
object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
object_set.anchor_tags ~= tags;
object_set.heading_attrib.lev = lev;
- object_set.heading_attrib.lev_markup_number = lev_markup_number;
- object_set.heading_attrib.lev_collapsed_number = lev_collapsed_number;
- // object_set.node_structure.node = _node;
+ object_set.heading_attrib.lev_int_markup = lev_int_markup;
+ object_set.heading_attrib.lev_int_collapsed = lev_int_collapsed;
return object_set;
}
auto contents_para(
@@ -81,7 +97,7 @@ template ObjectSetter() {
in string attrib,
in int obj_cite_number,
in int[string] indent,
- in bool bullet
+ in bool bullet,
) {
ObjComposite object_set;
object_set.use = "content";
@@ -101,7 +117,7 @@ template ObjectSetter() {
in string attrib,
in int obj_cite_number,
in int[string] indent,
- in bool bullet
+ in bool bullet,
) {
ObjComposite object_set;
object_set.use = "content";
@@ -137,7 +153,7 @@ template ObjectSetter() {
in string type,
in string object,
in string attrib,
- in int obj_cite_number
+ in int obj_cite_number,
) {
ObjComposite object_set;
object_set.use = "content";
@@ -152,7 +168,7 @@ template ObjectSetter() {
in string type,
in string object,
in string attrib_language_syntax,
- in int obj_cite_number
+ in int obj_cite_number,
) {
ObjComposite object_set;
object_set.use = "content";
diff --git a/src/sdp/ao_output_debugs.d b/src/sdp/ao_output_debugs.d
index 3c3b101..c6e8ac7 100644
--- a/src/sdp/ao_output_debugs.d
+++ b/src/sdp/ao_output_debugs.d
@@ -6,8 +6,7 @@ template SiSUoutputDebugs() {
auto abstract_doc_source_debugs(S)(
auto ref const S contents,
string[][string] document_section_keys_sequenced,
- string[][string][string] bookindex_unordered_hashes, // redundant, consider
- JSONValue[] biblio, // redundant, consider
+ string[] html_segnames,
string[string][string] dochead_make,
string[string][string] dochead_meta,
string fn_src,
@@ -18,30 +17,7 @@ template SiSUoutputDebugs() {
auto rgx = Rgx();
auto markup = InlineMarkup();
string key;
- struct BookIndexReport {
- int mkn, skn;
- auto bookindex_report_sorted(
- string[][string][string] bookindex_unordered_hashes
- ) {
- auto mainkeys=bookindex_unordered_hashes.byKey.array.
- sort!("toLower(a) < toLower(b)", SwapStrategy.stable).release;
- foreach (mainkey; mainkeys) {
- auto subkeys=bookindex_unordered_hashes[mainkey].byKey.array.
- sort!("toLower(a) < toLower(b)", SwapStrategy.stable).release;
- foreach (subkey; subkeys) {
- debug(bookindex) {
- writeln(
- mainkey, ": ",
- subkey, ": ",
- to!string(bookindex_unordered_hashes[mainkey][subkey])
- );
- }
- ++skn;
- }
- ++mkn;
- }
- }
- }
+
debug(parent) {
writefln(
"%s:%s",
@@ -56,7 +32,7 @@ template SiSUoutputDebugs() {
"%s node: %s heading: %s %s",
obj.obj_cite_number,
obj.node,
- obj.lev_markup_number,
+ obj.lev_int_markup,
obj.object,
);
}
@@ -251,12 +227,12 @@ template SiSUoutputDebugs() {
"%s\n%s\n%s",
"document header, metadata & make instructions:",
dochead_meta,
- pointer_head_main,
+ ptr_head_main,
);
- foreach (main_header; pointer_head_main) {
+ foreach (main_header; ptr_head_main) {
switch (main_header) {
case "make":
- foreach (sub_header; pointer_head_sub_make) {
+ foreach (sub_header; ptr_head_sub_make) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -277,12 +253,12 @@ template SiSUoutputDebugs() {
"%s\n%s\n%s",
"document header, metadata & make instructions:",
dochead_meta,
- pointer_head_main,
+ ptr_head_main,
);
- foreach (main_header; pointer_head_main) {
+ foreach (main_header; ptr_head_main) {
switch (main_header) {
case "creator":
- foreach (sub_header; pointer_head_sub_creator) {
+ foreach (sub_header; ptr_head_sub_creator) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -294,7 +270,7 @@ template SiSUoutputDebugs() {
}
break;
case "title":
- foreach (sub_header; pointer_head_sub_title) {
+ foreach (sub_header; ptr_head_sub_title) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -306,7 +282,7 @@ template SiSUoutputDebugs() {
}
break;
case "rights":
- foreach (sub_header; pointer_head_sub_rights) {
+ foreach (sub_header; ptr_head_sub_rights) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -318,7 +294,7 @@ template SiSUoutputDebugs() {
}
break;
case "date":
- foreach (sub_header; pointer_head_sub_date) {
+ foreach (sub_header; ptr_head_sub_date) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -330,7 +306,7 @@ template SiSUoutputDebugs() {
}
break;
case "original":
- foreach (sub_header; pointer_head_sub_original) {
+ foreach (sub_header; ptr_head_sub_original) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -342,7 +318,7 @@ template SiSUoutputDebugs() {
}
break;
case "classify":
- foreach (sub_header; pointer_head_sub_classify) {
+ foreach (sub_header; ptr_head_sub_classify) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -354,7 +330,7 @@ template SiSUoutputDebugs() {
}
break;
case "identifier":
- foreach (sub_header; pointer_head_sub_identifier) {
+ foreach (sub_header; ptr_head_sub_identifier) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -366,7 +342,7 @@ template SiSUoutputDebugs() {
}
break;
case "notes":
- foreach (sub_header; pointer_head_sub_notes) {
+ foreach (sub_header; ptr_head_sub_notes) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -378,7 +354,7 @@ template SiSUoutputDebugs() {
}
break;
case "publisher":
- foreach (sub_header; pointer_head_sub_publisher) {
+ foreach (sub_header; ptr_head_sub_publisher) {
if (to!string(dochead_meta[main_header][sub_header]).length > 2) {
writefln(
"%s:%s: %s",
@@ -394,27 +370,6 @@ template SiSUoutputDebugs() {
}
}
}
- debug(bookindex) {
- writefln(
- "%s\n%s:%s",
- "-------------------------------",
- __FILE__,
- __LINE__,
- );
- auto bookindex = BookIndexReport();
- bookindex.bookindex_report_sorted(bookindex_unordered_hashes);
- }
-
- debug(biblio) {
- foreach (entry; biblio) {
- writefln(
- "%s; (%s)",
- entry["sortby_deemed_author_year_title"],
- entry["author"],
- );
- }
- }
-
debug(anchor) {
writefln(
"%s\n%s:%s",
@@ -442,7 +397,7 @@ template SiSUoutputDebugs() {
foreach (k; document_section_keys_sequenced["seg"]) {
foreach (o; contents[k]) {
if (o.is_a == "heading") {
- switch (o.heading_attrib.lev_markup_number) {
+ switch (o.heading_attrib.lev_int_markup) {
case 0:
spc="";
break;
@@ -478,8 +433,8 @@ template SiSUoutputDebugs() {
"%s* %s\n (markup level: %s; collapsed level: %s)",
spc,
strip(o.object),
- o.heading_attrib.lev_markup_number,
- o.heading_attrib.lev_collapsed_number
+ o.heading_attrib.lev_int_markup,
+ o.heading_attrib.lev_int_collapsed
);
}
}
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index c20d6ef..3767d5a 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -14,12 +14,12 @@ template SiSUoutputHTML() {
¶",
obj.obj_cite_number,
obj.obj_cite_number,
- obj.heading_attrib.lev_markup_number,
+ obj.heading_attrib.lev_int_markup,
obj.is_a,
obj.obj_cite_number,
obj.obj_cite_number,
obj.object,
- obj.heading_attrib.lev_markup_number
+ obj.heading_attrib.lev_int_markup
);
return o;
}
diff --git a/src/sdp/output_hub.d b/src/sdp/output_hub.d
index bdb8480..7235619 100644
--- a/src/sdp/output_hub.d
+++ b/src/sdp/output_hub.d
@@ -7,6 +7,7 @@ template SiSUoutputHub() {
void hub(S)(
auto ref const S contents,
string[][string] document_section_keys_sequenced,
+ string[] html_segnames,
string[string][string] dochead_make,
string[string][string] dochead_meta,
string fn_src,