aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/ao_abstract_doc_source.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp/ao_abstract_doc_source.d')
-rw-r--r--src/sdp/ao_abstract_doc_source.d524
1 files changed, 427 insertions, 97 deletions
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index 074fbc5..683b748 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -17,7 +17,10 @@ template SiSUdocAbstraction() {
/+ ↓ abstraction struct init +/
/+ initialize +/
auto rgx = Rgx();
- ObjComposite[] contents_the_objects;
+ ObjComposite[] the_document_head_section;
+ ObjComposite[][string] the_table_of_contents_section;
+ ObjComposite[] the_document_body_section;
+ ObjComposite[] the_bibliography_section;
string[string] an_object, processing;
string[] anchor_tags;
string segment_object_belongs_to;
@@ -83,7 +86,10 @@ template SiSUdocAbstraction() {
scope(failure) {
}
scope(exit) {
- destroy(contents_the_objects);
+ destroy(the_document_head_section);
+ destroy(the_table_of_contents_section);
+ destroy(the_document_body_section);
+ destroy(the_bibliography_section);
destroy(an_object);
destroy(processing);
destroy(biblio_arr_json);
@@ -272,9 +278,9 @@ template SiSUdocAbstraction() {
writeln(line);
}
an_object["obj"] ~= line ~= "\n";
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_comment(strip(an_object["obj"]));
- _header_set_common_(line_occur, an_object, type);
+ _common_reset_(line_occur, an_object, type);
processing.remove("verse");
++counter;
} else if (((line_occur["para"] == State.off)
@@ -295,6 +301,13 @@ template SiSUdocAbstraction() {
/+ heading make set +/
_heading_make_set_(line, line_occur, heading_match_rgx, type);
}
+ /+ TODO node info: all headings identified at this point,
+ - extract node info here??
+ - how long can it wait?
+ - should be incorporated in composite objects
+ - should happen before endnote links set (they need to be moved down?)
+ // node_construct.node_emitter_heading segment anchor tag
+ +/
if (matchFirst(line, rgx.heading)) {
/+ heading match +/
_heading_matched_(line, line_occur, an_object, lv, collapsed_lev, type, dochead_meta_aa);
@@ -320,7 +333,18 @@ template SiSUdocAbstraction() {
}
} else if (type["blocks"] == TriState.closing) {
/+ line empty, with blocks flag +/
- _block_flag_line_empty_(line, an_object, contents_the_objects, bookindex_unordered_hashes, obj_cite_number, _node, counter, type, obj_cite_number_poem, dochead_make_aa); // watch
+ _block_flag_line_empty_(
+ line,
+ an_object,
+ the_document_body_section,
+ bookindex_unordered_hashes,
+ obj_cite_number,
+ _node,
+ counter,
+ type,
+ obj_cite_number_poem,
+ dochead_make_aa
+ ); // watch
} else {
/+ line empty +/
/+ line.empty, post contents, empty variables: +/
@@ -350,6 +374,13 @@ template SiSUdocAbstraction() {
} else if (to!int(an_object["lev_markup_number"]) < 4) {
segment_object_belongs_to = "";
}
+ the_table_of_contents_section = obj_im.table_of_contents_gather_headings(
+ an_object,
+ dochead_make_aa,
+ segment_object_belongs_to,
+ obj_cite_number,
+ the_table_of_contents_section,
+ );
_node =
node_construct.node_emitter_heading(
an_object["lev_markup_number"],
@@ -367,7 +398,7 @@ template SiSUdocAbstraction() {
writeln(an_object["lev_markup_number"]);
writeln(segment_object_belongs_to);
}
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_heading(
an_object["substantive"],
an_object["attrib"],
@@ -384,7 +415,7 @@ template SiSUdocAbstraction() {
// writeln(contents_am[counter]["obj_cite_number"], " ", contents_am[counter]["obj"]);
// writeln(m.hit, "\n");
}
- _header_set_common_(line_occur, an_object, type);
+ _common_reset_(line_occur, an_object, type);
an_object.remove("lev");
an_object.remove("lev_markup_number");
// an_object["lev_markup_number"]="9";
@@ -413,7 +444,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_para(
an_object["is"],
an_object["substantive"],
@@ -422,16 +453,11 @@ template SiSUdocAbstraction() {
indent,
bullet
);
- // contents_the_objects ~=
- // set_abstract_object.contents_para(
- // an_object,
- // obj_cite_number,
- // indent,
- // bullet
- // );
- _header_set_common_(line_occur, an_object, type);
- indent["hang_position"] = "0";
- indent["base_position"] = "0";
+ _common_reset_(line_occur, an_object, type);
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
bullet = false;
processing.remove("verse");
++counter;
@@ -445,18 +471,18 @@ template SiSUdocAbstraction() {
} // close else for line empty
} // close else for not the above
} // close after non code, other blocks or regular text
- /+ unless (contents_the_objects.length == 0) ? +/
- if (contents_the_objects.length > 0) {
- if (((contents_the_objects[$-1].is_a == "para")
- || (contents_the_objects[$-1].is_a == "heading"))
+ /+ unless (the_document_body_section.length == 0) ? +/
+ if (the_document_body_section.length > 0) {
+ if (((the_document_body_section[$-1].is_a == "para")
+ || (the_document_body_section[$-1].is_a == "heading"))
&& (counter-1 > previous_count)) {
- if (match(contents_the_objects[$-1].object,
+ if (match(the_document_body_section[$-1].object,
rgx.inline_notes_delimiter_al_regular_number_note)) {
- previous_count=contents_the_objects.length -1;
+ previous_count=the_document_body_section.length -1;
note_section.gather_notes_for_endnote_section(
- contents_the_objects,
+ the_document_body_section,
segment_object_belongs_to,
- contents_the_objects.length -1
+ the_document_body_section.length -1
);
}
}
@@ -475,39 +501,116 @@ template SiSUdocAbstraction() {
+/
// TODO FIGURE OUT, you need this possibility
// obj_im.obj_inline_markup_and_anchor_tags("doc_end_reset", "", dochead_make_aa);
+ debug(toc) {
+ writefln(
+ "%s %s",
+ __LINE__,
+ the_table_of_contents_section["seg"].length
+ );
+ foreach (toc_linked_heading; the_table_of_contents_section["seg"]) {
+ writeln(toc_linked_heading.object);
+ }
+ }
auto en_tuple =
note_section.endnote_objects(obj_cite_number);
static assert(!isTypeTuple!(en_tuple));
- auto endnotes_section = en_tuple[0];
+ auto the_endnotes_section = en_tuple[0];
obj_cite_number = en_tuple[1];
debug(endnotes) {
writefln(
"%s %s",
__LINE__,
- endnotes_section.length
+ the_endnotes_section["seg"].length
+ );
+ foreach (o; the_endnotes_section["seg"]) {
+ writeln(o);
+ }
+ }
+ the_bibliography_section ~=
+ set_abstract_object.contents_heading(
+ "Bibliography", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ "B", // lev
+ 1, // lev_markup_number
+ 1, // lev_collapsed_number
+ );
+ the_bibliography_section ~=
+ set_abstract_object.contents_heading(
+ "Bibliography", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ ["bibliography"], // anchor tag
+ "1", // lev
+ 4, // lev_markup_number
+ 2, // lev_collapsed_number
);
- foreach (n; endnotes_section) {
- writeln(n);
- }
- }
auto biblio_unsorted_incomplete = biblio_arr_json.dup;
// destroy(biblio_arr_json);
auto biblio = Bibliography();
auto biblio_ordered =
biblio._bibliography_(biblio_unsorted_incomplete, bib_arr_json);
+ string out_;
+ foreach (entry; biblio_ordered) {
+ out_ = format(
+ "%s \"%s\"%s%s%s%s%s%s%s%s%s.",
+ ((entry["author"].str.empty) ? entry["editor"].str : entry["author"].str),
+ entry["fulltitle"].str,
+ ((entry["journal"].str.empty) ? "" : ", /{" ~ entry["journal"].str ~ "}/"),
+ ((entry["volume"].str.empty) ? "" : ", " ~ entry["volume"].str),
+ ((entry["in"].str.empty) ? "" : ", " ~ entry["in"].str),
+ ((!(entry["author"].str.empty) && (!(entry["editor"].str.empty))) ? entry["editor"].str : ""),
+ ", " ~ entry["year"].str,
+ ((entry["pages"].str.empty) ? "" : ", " ~ entry["pages"].str),
+ ((entry["publisher"].str.empty) ? "" : ", " ~ entry["publisher"].str),
+ ((entry["place"].str.empty) ? "" : ", " ~ entry["place"].str),
+ ((entry["url"].str.empty) ? "" : ", [" ~ entry["url"].str ~ "]"),
+ );
+ the_bibliography_section ~=
+ set_abstract_object.contents_para(
+ "bibliography",
+ out_, // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ ([ "hang_position" : "0", "base_position" : "1", ]), // indent
+ false
+ );
+ }
+ debug(bibliosection) {
+ foreach (o; the_bibliography_section) {
+ writeln(o.object);
+ }
+ }
auto bi = BookIndexReportSection();
auto bi_tuple =
- bi.bookindex_build_section(bookindex_unordered_hashes, obj_cite_number, segment_object_belongs_to);
+ bi.bookindex_build_section(
+ bookindex_unordered_hashes,
+ obj_cite_number,
+ segment_object_belongs_to
+ );
static assert(!isTypeTuple!(bi_tuple));
- auto bookindex_section = bi_tuple[0];
+ auto the_bookindex_section = bi_tuple[0];
obj_cite_number = bi_tuple[1];
debug(bookindex) { // bookindex
- foreach (bi_entry; bookindex_section) {
+ foreach (bi_entry; the_bookindex_section["seg"]) {
writeln(bi_entry);
}
}
- auto document_the =
- contents_the_objects ~ endnotes_section ~ bookindex_section;
+ the_document_head_section ~= the_document_body_section[0];
+ the_document_body_section=the_document_body_section[1..$];
+ auto document_the = [
+ "head": the_document_head_section,
+ "toc_seg": the_table_of_contents_section["seg"],
+ "toc_scroll": the_table_of_contents_section["scroll"],
+ "body": the_document_body_section,
+ "endnotes_seg": the_endnotes_section["seg"],
+ "endnotes_scroll": the_endnotes_section["scroll"],
+ // "glossary": the_glossary_section, // TODO
+ "bibliography": the_bibliography_section,
+ "bookindex_scroll": the_bookindex_section["scroll"],
+ "bookindex_seg": the_bookindex_section["seg"],
+ ];
auto t = tuple(
document_the,
bookindex_unordered_hashes,
@@ -524,12 +627,11 @@ template SiSUdocAbstraction() {
an_object.remove("attrib");
an_object.remove("bookindex");
}
- auto _header_set_common_(
+ auto _common_reset_(
ref int[string] line_occur,
ref string[string] an_object,
ref int[string] type
) {
- // line_occur["header"] = State.off;
line_occur["heading"] = State.off;
line_occur["para"]= State.off;
type["heading"] = State.off;
@@ -944,7 +1046,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -966,7 +1068,7 @@ template SiSUdocAbstraction() {
obj_cite_number =
obj_cite_number_emit(type["obj_cite_number_status"]);
type["verse_new"] = State.off;
- } else if (matchFirst(line, rgx.line_delimiter_only)) {
+ } else if (matchFirst(line, rgx.newline_eol_delimiter_only)) {
verse_line = TriState.off;
type["verse_new"] = State.on;
}
@@ -996,7 +1098,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1033,7 +1135,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1054,7 +1156,7 @@ template SiSUdocAbstraction() {
obj_cite_number =
obj_cite_number_emit(type["obj_cite_number_status"]);
type["verse_new"] = State.off;
- } else if (matchFirst(line, rgx.line_delimiter_only)) {
+ } else if (matchFirst(line, rgx.newline_eol_delimiter_only)) {
type["verse_new"] = State.on;
verse_line = TriState.off;
}
@@ -1085,7 +1187,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1242,7 +1344,7 @@ template SiSUdocAbstraction() {
void _block_flag_line_empty_(
char[] line,
ref string[string] an_object,
- ref ObjComposite[] contents_the_objects,
+ ref ObjComposite[] the_document_body_section,
ref string[][string][string] bookindex_unordered_hashes,
ref int obj_cite_number,
ref string _node,
@@ -1284,7 +1386,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block_code(
an_object["is"],
an_object["substantive"],
@@ -1313,7 +1415,7 @@ template SiSUdocAbstraction() {
an_object["is"]
// "verse"
);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block_obj_cite_number_string(
"poem",
"",
@@ -1348,7 +1450,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1383,7 +1485,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1417,7 +1519,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1452,7 +1554,7 @@ template SiSUdocAbstraction() {
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
obj_att.obj_attributes(an_object["is"], an_object["obj"], _node);
- contents_the_objects ~=
+ the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
an_object["substantive"],
@@ -1672,8 +1774,10 @@ template SiSUdocAbstraction() {
assertions_doc_structure(an_object, lv); // includes most of the logic for collapsed levels
switch (an_object["lev"]) {
case "A":
- an_object["obj"]=replaceFirst(an_object["obj"], rgx.variable_doc_title, dochead_meta_aa["title"]["main"]);
- an_object["obj"]=replaceFirst(an_object["obj"], rgx.variable_doc_author, dochead_meta_aa["creator"]["author"]);
+ an_object["obj"]=replaceFirst(an_object["obj"],
+ rgx.variable_doc_title, (dochead_meta_aa["title"]["full"] ~ ","));
+ an_object["obj"]=replaceFirst(an_object["obj"],
+ rgx.variable_doc_author, dochead_meta_aa["creator"]["author"]);
collapsed_lev["h0"] = 1;
an_object["lev_collapsed_number"] =
to!string(collapsed_lev["h0"]);
@@ -1817,8 +1921,10 @@ template SiSUdocAbstraction() {
}
type["para"] = State.on;
an_object["obj"] ~= line;
- indent["hang_position"] = "0";
- indent["base_position"] = "0";
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
bullet = true;
} else if (auto m = matchFirst(line, rgx.para_indent_hang)) {
debug(paraindenthang) { // para indent hang
@@ -1826,8 +1932,10 @@ template SiSUdocAbstraction() {
}
type["para"] = State.on;
an_object["obj"] ~= line;
- indent["hang_position"] = to!string(m.captures[1]);
- indent["base_position"] = to!string(m.captures[2]);
+ indent=[
+ "hang_position" : to!string(m.captures[1]),
+ "base_position" : to!string(m.captures[2]),
+ ];
bullet = false;
} else if (auto m = matchFirst(line, rgx.para_bullet_indent)) {
debug(parabulletindent) { // para bullet indent
@@ -1835,15 +1943,19 @@ template SiSUdocAbstraction() {
}
type["para"] = State.on;
an_object["obj"] ~= line;
- indent["hang_position"] = to!string(m.captures[1]);
- indent["base_position"] = "0";
+ indent=[
+ "hang_position" : to!string(m.captures[1]),
+ "base_position" : "0",
+ ];
bullet = true;
} else {
// !line.empty
type["para"] = State.on;
an_object["obj"] ~= line;
- indent["hang_position"] = "0";
- indent["base_position"] = "0";
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
bullet = false;
}
++line_occur["para"];
@@ -1963,6 +2075,7 @@ template SiSUdocAbstraction() {
obj_txt["munge"]=obj_txt_in;
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading, "");
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.obj_cite_number_off_all, "");
+ obj_txt["munge"]=strip(obj_txt["munge"]);
obj_txt["munge"]=object_notes_(obj_txt["munge"]);
debug(munge) {
writeln(__LINE__);
@@ -2054,7 +2167,10 @@ template SiSUdocAbstraction() {
struct ObjInlineMarkup {
auto munge = ObjInlineMarkupMunge();
string[string] obj_txt;
- auto obj_inline_markup_and_anchor_tags(string[string] obj_, string[string][string] dochead_make_aa)
+ auto obj_inline_markup_and_anchor_tags(
+ string[string] obj_,
+ string[string][string] dochead_make_aa
+ )
in { }
body {
obj_txt["munge"]=obj_["obj"].dup;
@@ -2115,6 +2231,150 @@ template SiSUdocAbstraction() {
}
invariant() {
}
+ auto _clean_heading_toc_(
+ char[] heading_toc_,
+ ) {
+ auto m = matchFirst(cast(char[]) heading_toc_, rgx.heading);
+ heading_toc_ = m.post;
+ return heading_toc_;
+ };
+ auto table_of_contents_gather_headings(
+ string[string] obj_,
+ string[string][string] dochead_make_aa,
+ string segment_object_belongs_to,
+ int obj_cite_number,
+ ObjComposite[][string] the_table_of_contents_section,
+ )
+ in { }
+ body {
+ char[] heading_toc_ = to!(char[])(obj_["obj"].dup.strip);
+ heading_toc_ = _clean_heading_toc_(heading_toc_);
+ auto attrib="";
+ string toc_txt_;
+ string[string] indent;
+ auto set_abstract_object = ObjectAbstractSet();
+ if (to!int(obj_["lev_markup_number"]) > 0) {
+ toc_txt_ = format(
+ "{ %s }#%s",
+ heading_toc_,
+ obj_cite_number,
+ );
+ indent=[
+ "hang_position" : obj_["lev_markup_number"],
+ "base_position" : obj_["lev_markup_number"],
+ ];
+ toc_txt_ = format(
+ "{ %s }#%s",
+ heading_toc_,
+ obj_cite_number,
+ );
+ the_table_of_contents_section["scroll"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ toc_txt_,
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ } else {
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
+ the_table_of_contents_section["scroll"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ "Table of Contents",
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ }
+ switch (to!int(obj_["lev_markup_number"])) {
+ case 0:
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
+ the_table_of_contents_section["seg"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ "{ Table of Contents }../toc.fn_suffix",
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ break;
+ case 1: .. case 3:
+ indent=[
+ "hang_position" : obj_["lev_markup_number"],
+ "base_position" : obj_["lev_markup_number"],
+ ];
+ toc_txt_ = format(
+ "%s",
+ heading_toc_,
+ );
+ the_table_of_contents_section["seg"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ toc_txt_,
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ break;
+ case 4:
+ toc_txt_ = format(
+ "{ %s }../%s.fn_suffix",
+ heading_toc_,
+ segment_object_belongs_to,
+ );
+ indent=[
+ "hang_position" : obj_["lev_markup_number"],
+ "base_position" : obj_["lev_markup_number"],
+ ];
+ the_table_of_contents_section["seg"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ toc_txt_,
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ break;
+ case 5: .. case 7:
+ toc_txt_ = format(
+ "{ %s }../%s.fn_suffix#%s",
+ heading_toc_,
+ segment_object_belongs_to,
+ obj_cite_number,
+ );
+ indent=[
+ "hang_position" : obj_["lev_markup_number"],
+ "base_position" : obj_["lev_markup_number"],
+ ];
+ the_table_of_contents_section["seg"] ~=
+ set_abstract_object.contents_para(
+ "toc",
+ toc_txt_,
+ "", // attrib
+ 0,
+ indent,
+ false
+ );
+ break;
+ default:
+ break;
+ }
+ return the_table_of_contents_section;
+ }
+ invariant() {
+ }
private:
static string _configured_auto_heading_numbering_and_segment_anchor_tags(string munge_, string[string] obj_, string[string][string] dochead_make_aa) {
if (dochead_make_aa["make"]["num_top"].length > 0) {
@@ -2639,15 +2899,25 @@ template SiSUdocAbstraction() {
auto set_abstract_object = ObjectAbstractSet();
auto mainkeys =
bookindex_unordered_hashes.byKey.array.sort().release;
- string bi_tmp;
- ObjComposite[] bookindex_section;
+ string bi_tmp_seg, bi_tmp_scroll;
+ ObjComposite[][string] bookindex_section;
// writeln(mainkeys.length);
// B~ Book Index
attrib="";
lev="B";
lev_markup_number="1";
lev_collapsed_number="1";
- bookindex_section ~=
+ bookindex_section["scroll"] ~=
+ set_abstract_object.contents_heading(
+ "Book Index",
+ attrib,
+ obj_cite_number,
+ [],
+ to!string(lev),
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
+ );
+ bookindex_section["seg"] ~=
set_abstract_object.contents_heading(
"Book Index",
attrib,
@@ -2664,7 +2934,17 @@ template SiSUdocAbstraction() {
lev="1";
lev_markup_number="4";
lev_collapsed_number="2";
- bookindex_section ~=
+ bookindex_section["scroll"] ~=
+ set_abstract_object.contents_heading(
+ "Index",
+ attrib,
+ obj_cite_number,
+ ["book_index"],
+ to!string(lev),
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
+ );
+ bookindex_section["seg"] ~=
set_abstract_object.contents_heading(
"Index",
attrib,
@@ -2677,35 +2957,43 @@ template SiSUdocAbstraction() {
++obj_cite_number;
++mkn;
foreach (mainkey; mainkeys) {
- bi_tmp = "!{" ~ mainkey ~ "}! ";
+ bi_tmp_scroll = "!{" ~ mainkey ~ "}! ";
+ bi_tmp_seg = "!{" ~ mainkey ~ "}! ";
// bi_tmp = "_0_1 !{" ~ mainkey ~ "}! ";
foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
- bi_tmp ~= (segment_object_belongs_to.empty)
+ bi_tmp_scroll ~= (" {" ~ ref_ ~ "}#" ~ go ~ ", ");
+ bi_tmp_seg ~= (segment_object_belongs_to.empty)
? (" {" ~ ref_ ~ "}#" ~ go ~ ", ")
- : (" {" ~ ref_ ~ "}[../" ~ segment_object_belongs_to ~ ".fn_suffix]#" ~ go ~ ", ");
+ : (" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
}
- bi_tmp ~= " \\\\\n ";
+ bi_tmp_scroll ~= " \\\\\n ";
+ bi_tmp_seg ~= " \\\\\n ";
bookindex_unordered_hashes[mainkey].remove("_a");
auto subkeys =
bookindex_unordered_hashes[mainkey].byKey.array.sort().release;
foreach (subkey; subkeys) {
- bi_tmp ~= subkey ~ ", ";
+ bi_tmp_scroll ~= subkey ~ ", ";
+ bi_tmp_seg ~= subkey ~ ", ";
foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
- bi_tmp ~= (segment_object_belongs_to.empty)
+ bi_tmp_scroll ~= (" {" ~ ref_ ~ "}#" ~ go ~ ", ");
+ bi_tmp_seg ~= (segment_object_belongs_to.empty)
? (" {" ~ ref_ ~ "}#" ~ go ~ ", ")
- : (" {" ~ ref_ ~ "}[../" ~ segment_object_belongs_to ~ ".fn_suffix]#" ~ go ~ ", ");
+ : (" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", ");
}
- bi_tmp ~= " \\\\\n ";
+ bi_tmp_scroll ~= " \\\\\n ";
+ bi_tmp_seg ~= " \\\\\n ";
++skn;
}
- bi_tmp = replaceFirst(bi_tmp, rgx.trailing_linebreak, "");
+ bi_tmp_scroll = replaceFirst(bi_tmp_scroll, rgx.trailing_linebreak, "");
+ bi_tmp_seg = replaceFirst(bi_tmp_seg, rgx.trailing_linebreak, "");
type="para";
attrib="";
- indent["hang_position"] = "0";
- indent["base_position"] = "1";
- attrib="";
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "1",
+ ];
// bookindex_section ~=
// set_abstract_object.contents_para(
// obj,
@@ -2713,10 +3001,19 @@ template SiSUdocAbstraction() {
// indent,
// false
// );
- bookindex_section ~=
+ bookindex_section["scroll"] ~=
+ set_abstract_object.contents_para(
+ type,
+ bi_tmp_scroll,
+ attrib,
+ obj_cite_number,
+ indent,
+ false
+ );
+ bookindex_section["seg"] ~=
set_abstract_object.contents_para(
type,
- bi_tmp,
+ bi_tmp_seg,
attrib,
obj_cite_number,
indent,
@@ -2730,7 +3027,7 @@ template SiSUdocAbstraction() {
}
}
struct NotesSection {
- string object_notes;
+ string[string] object_notes;
long previous_count;
int mkn;
auto rgx = Rgx();
@@ -2758,15 +3055,22 @@ template SiSUdocAbstraction() {
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_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ",
m.captures[2]); // sometimes need segment name (segmented html & epub)
// writeln("{^{", m.captures[1], ".}^}#", contents_am[counter]["obj_cite_number"], " ", m.captures[2]);
}
- object_notes ~= (segment_object_belongs_to.empty)
+ // TODO NEXT you need anchor for segments at this point ->
+ object_notes["seg"] ~=
+ "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
+ m.captures[1] ~ " " ~ m.captures[2] ~ "』";
+ object_notes["seg"] ~= (segment_object_belongs_to.empty)
? ("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
m.captures[1] ~ " " ~ m.captures[2] ~ "』")
- : ("{^{" ~ m.captures[1] ~ ".}^}[../" ~ segment_object_belongs_to ~ ".fn_suffix]#noteref_" ~
+ : ("{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~
m.captures[1] ~ " " ~ m.captures[2] ~ "』");
+ object_notes["scroll"] ~=
+ "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
+ m.captures[1] ~ " " ~ m.captures[2] ~ "』";
}
return object_notes;
}
@@ -2774,9 +3078,13 @@ template SiSUdocAbstraction() {
in {
}
body {
- string[] endnotes_;
+ string[][string] endnotes_;
if (object_notes.length > 1) {
- endnotes_ = (split(object_notes, rgx.break_string))[0..$-1];
+ endnotes_["seg"] = (split(object_notes["seg"], rgx.break_string))[0..$-1];
+ endnotes_["scroll"] = (split(object_notes["scroll"], rgx.break_string))[0..$-1];
+ } else {
+ endnotes_["seg"] = [];
+ endnotes_["scroll"] = [];
}
return endnotes_;
}
@@ -2785,7 +3093,7 @@ template SiSUdocAbstraction() {
}
body {
auto set_abstract_object = ObjectAbstractSet();
- ObjComposite[] endnotes_section;
+ ObjComposite[][string] the_endnotes_section;
auto endnotes_ = gathered_notes();
// auto endnotes_ = (split(object_notes, rgx.break_string))[0..$-1];
string type;
@@ -2797,7 +3105,17 @@ template SiSUdocAbstraction() {
lev="B";
lev_markup_number="1";
lev_collapsed_number="1";
- endnotes_section ~=
+ the_endnotes_section["seg"] ~=
+ set_abstract_object.contents_heading(
+ "Endnotes",
+ attrib,
+ obj_cite_number,
+ [],
+ to!string(lev),
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
+ );
+ the_endnotes_section["scroll"] ~=
set_abstract_object.contents_heading(
"Endnotes",
attrib,
@@ -2814,7 +3132,17 @@ template SiSUdocAbstraction() {
lev="1";
lev_markup_number="4";
lev_collapsed_number="2";
- endnotes_section ~=
+ the_endnotes_section["seg"] ~=
+ set_abstract_object.contents_heading(
+ "Endnotes",
+ attrib,
+ obj_cite_number,
+ ["endnotes"],
+ to!string(lev),
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
+ );
+ the_endnotes_section["scroll"] ~=
set_abstract_object.contents_heading(
"Endnotes",
attrib,
@@ -2826,7 +3154,7 @@ template SiSUdocAbstraction() {
);
++obj_cite_number;
++mkn;
- foreach (endnote; endnotes_) {
+ foreach (endnote; endnotes_["seg"]) {
attrib="";
// endnotes ~=
// set_abstract_object.contents_para(
@@ -2835,13 +3163,15 @@ template SiSUdocAbstraction() {
// indent,
// false
// );
- endnotes_section ~=
- set_abstract_object.contents_endnote(
- endnote,
- );
- ++mkn;
+ the_endnotes_section["seg"] ~=
+ set_abstract_object.contents_endnote(endnote);
+ }
+ foreach (endnote; endnotes_["scroll"]) {
+ attrib="";
+ the_endnotes_section["scroll"] ~=
+ set_abstract_object.contents_endnote(endnote);
}
- auto t = tuple(endnotes_section, obj_cite_number);
+ auto t = tuple(the_endnotes_section, obj_cite_number);
return t;
}
}