aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-11-09 17:52:33 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:13 -0400
commit2301a8251d111ca2e020f524ce036c11e4306a14 (patch)
treeaed462b441e64efe989dca5c5d5eee306d9d53be /src/sdp
parenta bit of naming and tidying (diff)
0.9.0 document sections
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/ao_abstract_doc_source.d323
-rw-r--r--src/sdp/ao_conf_make_meta_native.d12
-rw-r--r--src/sdp/ao_defaults.d7
-rw-r--r--src/sdp/ao_output_debugs.d167
-rw-r--r--src/sdp/ao_rgx.d3
-rw-r--r--src/sdp/output_html.d33
-rw-r--r--src/sdp/output_hub.d16
7 files changed, 390 insertions, 171 deletions
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d
index 8d2ff70..421c094 100644
--- a/src/sdp/ao_abstract_doc_source.d
+++ b/src/sdp/ao_abstract_doc_source.d
@@ -18,8 +18,9 @@ template SiSUdocAbstraction() {
/+ initialize +/
auto rgx = Rgx();
ObjComposite[][string] the_table_of_contents_section;
- ObjComposite[] the_document_head_section, the_document_body_section, the_bibliography_section;
+ ObjComposite[] the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section;
string[string] an_object, processing;
+ string an_object_key;
string[] anchor_tags;
string segment_object_belongs_to;
auto set_abstract_object = ObjectAbstractSet();
@@ -93,8 +94,10 @@ template SiSUdocAbstraction() {
destroy(biblio_arr_json);
}
line_occur = [
- "heading" : 0,
- "para" : 0,
+ "heading" : 0,
+ "para" : 0,
+ "glossary" : 0,
+ "blurb" : 0,
];
auto type = flags_type_init;
void tell_lo(int obj_cite_number, in char[] line) {
@@ -150,6 +153,22 @@ template SiSUdocAbstraction() {
"h_3": regex(r"^(none)"),
"h_4": regex(r"^(none)")
];
+ an_object["glossary_nugget"] = "";
+ an_object["blurb_nugget"] = "";
+ auto toc_head =
+ set_abstract_object.contents_heading(
+ "Table of Contents", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ ["toc"], // anchor tag
+ "1", // lev
+ 4, // lev_markup_number
+ 2, // lev_collapsed_number
+ );
+ the_table_of_contents_section = [
+ "seg": [toc_head],
+ "scroll": [toc_head],
+ ];
/+ abstraction init ↑ +/
/+ ↓ loop markup document/text line by line +/
srcDocLoop:
@@ -196,11 +215,140 @@ template SiSUdocAbstraction() {
&& (!matchFirst(line, rgx.comment))) {
/+ within section (block object): biblio +/
_biblio_block_(line, type, bib_entry, biblio_entry_str_json, biblio_arr_json);
+ type["glossary_section"] = State.off;
+ type["biblio_section"] = State.on;
+ type["blurb_section"] = State.off;
debug(bibliobuild) {
writeln("- ", biblio_entry_str_json);
writeln("-> ", biblio_arr_json.length);
}
continue;
+ } else if ((matchFirst(line, rgx.heading_glossary)
+ || (type["glossary_section"] == State.on))
+ && (!matchFirst(line, rgx.heading))
+ && (!matchFirst(line, rgx.comment))) {
+ /+ within section (block object): glossary +/
+ debug(glossary) {
+ writeln(__LINE__);
+ writeln(line);
+ }
+ // _glossary_block_(line, type);
+ type["glossary_section"] = State.on;
+ type["biblio_section"] = State.off;
+ type["blurb_section"] = State.off;
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
+ bullet = false;
+ type["para"] = State.on;
+ line_occur["para"] = State.off;
+ an_object_key="glossary_nugget"; //
+ if (matchFirst(line, rgx.heading_glossary)) {
+ the_glossary_section ~=
+ set_abstract_object.contents_heading(
+ "Glossary", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ "B", // lev
+ 1, // lev_markup_number
+ 1, // lev_collapsed_number
+ );
+ the_glossary_section ~=
+ set_abstract_object.contents_heading(
+ "Glossary", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ ["glossary"], // anchor tag
+ "1", // lev
+ 4, // lev_markup_number
+ 2, // lev_collapsed_number
+ );
+ // } else if (matchFirst(line, rgx.heading)) {
+ // _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels?
+ } else {
+ _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur);
+ the_glossary_section ~=
+ set_abstract_object.contents_para(
+ "para", // an_object["is"],
+ to!string(line), // an_object["substantive"],
+ "", // attrib
+ 0, // obj_cite_number,
+ indent,
+ bullet
+ );
+ }
+ type["obj_cite_number_status"] = TriState.off;
+ continue;
+ } else if ((matchFirst(line, rgx.heading_blurb)
+ || (type["blurb_section"] == State.on))
+ && (!matchFirst(line, rgx.heading))
+ && (!matchFirst(line, rgx.comment))) {
+ /+ within section (block object): blurb +/
+ debug(blurb) {
+ writeln(__LINE__);
+ writeln(line);
+ }
+ // _blurb_block_(line, type);
+ type["glossary_section"] = State.off;
+ type["biblio_section"] = State.off;
+ type["blurb_section"] = State.on;
+ indent=[
+ "hang_position" : "0",
+ "base_position" : "0",
+ ];
+ bullet = false;
+ type["para"] = State.on;
+ line_occur["para"] = State.off;
+ an_object_key="blurb_nugget";
+ if (matchFirst(line, rgx.heading_blurb)) {
+ the_blurb_section ~=
+ set_abstract_object.contents_heading(
+ "Blurb", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ "B", // lev
+ 1, // lev_markup_number
+ 1, // lev_collapsed_number
+ );
+ the_blurb_section ~=
+ set_abstract_object.contents_heading(
+ "Blurb", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ ["blurb"], // anchor tag
+ "1", // lev
+ 4, // lev_markup_number
+ 2, // lev_collapsed_number
+ );
+ } else if (matchFirst(line, rgx.heading)) {
+ _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa);
+ the_blurb_section ~=
+ set_abstract_object.contents_heading(
+ to!string(line), // an_object["substantive"],
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ to!string(an_object["lev"]),
+ to!int(an_object["lev_markup_number"]),
+ to!int(an_object["lev_collapsed_number"]),
+ );
+ } else {
+ _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur);
+ the_blurb_section ~=
+ set_abstract_object.contents_para(
+ "para", // an_object["is"],
+ to!string(line), // an_object["substantive"],
+ "", // attrib
+ obj_cite_number,
+ indent,
+ bullet
+ );
+ }
+ type["obj_cite_number_status"] = TriState.off;
+ 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);
@@ -270,14 +418,15 @@ template SiSUdocAbstraction() {
_book_index_(line, book_idx_tmp, an_object, type);
} else {
/+ not book_index +/
+ an_object_key="body_nugget";
if (auto m = matchFirst(line, rgx.comment)) {
/+ matched comment +/
debug(comment) {
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n";
+ an_object[an_object_key] ~= line ~= "\n";
the_document_body_section ~=
- set_abstract_object.contents_comment(strip(an_object["body_nugget"]));
+ set_abstract_object.contents_comment(strip(an_object[an_object_key]));
_common_reset_(line_occur, an_object, type);
processing.remove("verse");
++counter;
@@ -308,24 +457,25 @@ template SiSUdocAbstraction() {
+/
if (matchFirst(line, rgx.heading)) {
/+ heading match +/
- _heading_matched_(line, line_occur, an_object, lv, collapsed_lev, type, dochead_meta_aa);
+ _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa);
} else if (line_occur["para"] == State.off) {
/+ para match +/
- _para_match_(line, an_object, indent, bullet, type, line_occur);
+ an_object_key="body_nugget";
+ _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur);
}
} else if (line_occur["heading"] > State.off) {
/+ heading +/
debug(heading) { // heading
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n";
+ an_object[an_object_key] ~= line ~= "\n";
++line_occur["heading"];
} else if (line_occur["para"] > State.off) {
/+ paragraph +/
debug(para) {
writeln(line);
}
- an_object["body_nugget"] ~= line;
+ an_object[an_object_key] ~= line;
++line_occur["para"];
}
}
@@ -363,8 +513,9 @@ template SiSUdocAbstraction() {
bookindex_unordered_hashes =
bkidx_hash(an_object["bookindex_nugget"], obj_cite_number);
an_object["is"] = "heading";
+ an_object_key="body_nugget";
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa); // tuple this with anchor tags?
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); // tuple this with anchor tags?
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) {
@@ -390,7 +541,7 @@ template SiSUdocAbstraction() {
an_object["is"]
); // heading
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
++heading_pointer;
debug(segments) {
writeln(an_object["lev_markup_number"]);
@@ -433,11 +584,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); // ...
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_para(
an_object["is"],
@@ -470,6 +621,12 @@ template SiSUdocAbstraction() {
if (((the_document_body_section[$-1].is_a == "para")
|| (the_document_body_section[$-1].is_a == "heading"))
&& (counter-1 > previous_count)) {
+ if ((the_document_body_section[$-1].is_a == "heading")
+ && (the_document_body_section[$-1].heading_attrib.lev_markup_number < 5)) {
+ type["biblio_section"] = State.off;
+ type["glossary_section"] = State.off;
+ type["blurb_section"] = State.off;
+ }
if (match(the_document_body_section[$-1].object,
rgx.inline_notes_delimiter_al_regular_number_note)) {
previous_count=the_document_body_section.length -1;
@@ -494,7 +651,7 @@ template SiSUdocAbstraction() {
* book index
+/
// TODO FIGURE OUT, you need this possibility
- // obj_im.obj_inline_markup_and_anchor_tags("doc_end_reset", "", dochead_make_aa);
+ // obj_im.obj_inline_markup_and_anchor_tags("doc_end_reset", an_object_key, "", dochead_make_aa);
debug(toc) {
writefln(
"%s %s",
@@ -520,6 +677,46 @@ template SiSUdocAbstraction() {
writeln(o);
}
}
+ if (an_object["glossary_nugget"].length == 0) {
+ writeln("no gloss");
+ the_glossary_section ~=
+ set_abstract_object.contents_heading(
+ "(skip) there is no Glossary section", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ "B", // lev
+ 1, // lev_markup_number
+ 1, // lev_collapsed_number
+ );
+ } else {
+ writeln("gloss");
+ }
+ debug(glossary) {
+ foreach (gloss; the_glossary_section) {
+ writeln(gloss.object);
+ }
+ }
+ if (an_object["blurb_nugget"].length == 0) {
+ writeln("no blurb");
+ the_blurb_section ~=
+ set_abstract_object.contents_heading(
+ "(skip) there is no Blurb section", // nugget/object
+ "", // attrib
+ 0, // obj_cite_number
+ [""], // anchor tag
+ "B", // lev
+ 1, // lev_markup_number
+ 1, // lev_collapsed_number
+ );
+ } else {
+ writeln("blurb");
+ }
+ debug(blurb) {
+ foreach (blurb; the_blurb_section) {
+ writeln(blurb.object);
+ }
+ }
auto biblio_unsorted_incomplete = biblio_arr_json.dup;
// destroy(biblio_arr_json);
auto biblio = Bibliography();
@@ -613,10 +810,11 @@ template SiSUdocAbstraction() {
"body": the_document_body_section,
"endnotes_seg": the_endnotes_section["seg"],
"endnotes_scroll": the_endnotes_section["scroll"],
- // "glossary": the_glossary_section, // TODO
+ "glossary": the_glossary_section,
"bibliography": the_bibliography_section,
"bookindex_scroll": the_bookindex_section["scroll"],
"bookindex_seg": the_bookindex_section["seg"],
+ "blurb": the_blurb_section,
];
auto t = tuple(
document_the,
@@ -850,7 +1048,7 @@ template SiSUdocAbstraction() {
debug(code) { // code (curly) line
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // code (curly) line
+ an_object[an_object_key] ~= line ~= "\n"; // code (curly) line
}
} else if (type["tic_code"] == TriState.on) {
if (matchFirst(line, rgx.block_tic_close)) {
@@ -864,7 +1062,7 @@ template SiSUdocAbstraction() {
debug(code) { // code (tic) line
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // code (tic) line
+ an_object[an_object_key] ~= line ~= "\n"; // code (tic) line
}
}
}
@@ -896,6 +1094,8 @@ template SiSUdocAbstraction() {
) {
if (matchFirst(line, rgx.heading_biblio)) {
type["biblio_section"] = TriState.on;
+ type["blurb_section"] = State.off;
+ type["glossary_section"] = State.off;
}
if (line.empty) {
debug {
@@ -1014,7 +1214,7 @@ template SiSUdocAbstraction() {
) {
if (type["curly_poem"] == TriState.on) {
if (matchFirst(line, rgx.block_curly_poem_close)) {
- an_object["body_nugget"]="verse"; // check that this is as you please
+ an_object[an_object_key]="verse"; // check that this is as you please
debug(poem) { // poem (curly) close
writefln(
"* [poem curly] %s",
@@ -1022,7 +1222,7 @@ template SiSUdocAbstraction() {
);
}
if (processing.length > 0) {
- an_object["body_nugget"] = processing["verse"];
+ an_object[an_object_key] = processing["verse"];
}
debug(poem) { // poem (curly) close
writeln(__LINE__);
@@ -1036,16 +1236,16 @@ template SiSUdocAbstraction() {
debug(poem) { // poem (curly) close
writeln(
obj_cite_number,
- an_object["body_nugget"]
+ an_object[an_object_key]
);
}
an_object["is"] = "verse";
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1074,12 +1274,12 @@ template SiSUdocAbstraction() {
}
if (type["verse_new"] == State.on) {
verse_line=1;
- an_object["body_nugget"] = processing["verse"];
+ an_object[an_object_key] = processing["verse"];
debug(poem) { // poem verse
writefln(
"* %s curly\n%s",
obj_cite_number,
- an_object["body_nugget"]
+ an_object[an_object_key]
);
}
processing.remove("verse");
@@ -1093,11 +1293,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1112,7 +1312,7 @@ template SiSUdocAbstraction() {
}
} else if (type["tic_poem"] == TriState.on) {
if (auto m = matchFirst(line, rgx.block_tic_close)) { // tic_poem_close
- an_object["body_nugget"]="verse"; // check that this is as you please
+ an_object[an_object_key]="verse"; // check that this is as you please
debug(poem) { // poem (curly) close
writefln(
"* [poem tic] %s",
@@ -1120,7 +1320,7 @@ template SiSUdocAbstraction() {
);
}
if (processing.length > 0) { // needs looking at
- an_object["body_nugget"] = processing["verse"];
+ an_object[an_object_key] = processing["verse"];
}
if (an_object.length > 0) {
debug(poem) { // poem (tic) close
@@ -1130,11 +1330,11 @@ template SiSUdocAbstraction() {
processing.remove("verse");
an_object["is"] = "verse";
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1162,12 +1362,12 @@ template SiSUdocAbstraction() {
}
if (type["verse_new"] == State.on) {
verse_line=1;
- an_object["body_nugget"] = processing["verse"];
+ an_object[an_object_key] = processing["verse"];
debug(poem) { // poem (tic) close
writefln(
"* %s tic\n%s",
obj_cite_number,
- an_object["body_nugget"]
+ an_object[an_object_key]
);
}
processing.remove("verse");
@@ -1182,11 +1382,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1218,7 +1418,7 @@ template SiSUdocAbstraction() {
debug(group) { // group
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build group array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build group array (or string)
}
} else if (type["tic_group"] == TriState.on) {
if (matchFirst(line, rgx.block_tic_close)) {
@@ -1232,7 +1432,7 @@ template SiSUdocAbstraction() {
debug(group) { // group
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build group array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build group array (or string)
}
}
}
@@ -1253,7 +1453,7 @@ template SiSUdocAbstraction() {
debug(block) { // block
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build block array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build block array (or string)
}
} else if (type["tic_block"] == TriState.on) {
if (matchFirst(line, rgx.block_tic_close)) {
@@ -1267,7 +1467,7 @@ template SiSUdocAbstraction() {
debug(block) { // block
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build block array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build block array (or string)
}
}
}
@@ -1288,7 +1488,7 @@ template SiSUdocAbstraction() {
debug(quote) { // quote
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build quote array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build quote array (or string)
}
} else if (type["tic_quote"] == TriState.on) {
if (matchFirst(line, rgx.block_tic_close)) {
@@ -1302,7 +1502,7 @@ template SiSUdocAbstraction() {
debug(quote) { // quote
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build quote array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build quote array (or string)
}
}
}
@@ -1323,7 +1523,7 @@ template SiSUdocAbstraction() {
debug(table) { // table
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build table array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build table array (or string)
}
} else if (type["tic_table"] == TriState.on) {
if (matchFirst(line, rgx.block_tic_close)) {
@@ -1337,7 +1537,7 @@ template SiSUdocAbstraction() {
debug(table) { // table
writeln(line);
}
- an_object["body_nugget"] ~= line ~= "\n"; // build table array (or string)
+ an_object[an_object_key] ~= line ~= "\n"; // build table array (or string)
}
}
}
@@ -1381,11 +1581,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block_code(
an_object["is"],
@@ -1442,11 +1642,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1477,11 +1677,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1511,11 +1711,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1546,11 +1746,11 @@ template SiSUdocAbstraction() {
an_object["is"]
);
auto substantive_object_and_anchor_tags_tuple =
- obj_im.obj_inline_markup_and_anchor_tags(an_object, dochead_make_aa);
+ obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa);
an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0];
anchor_tags = substantive_object_and_anchor_tags_tuple[1];
an_object["attrib"] =
- obj_att.obj_attributes(an_object["is"], an_object["body_nugget"], _node);
+ obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node);
the_document_body_section ~=
set_abstract_object.contents_block(
an_object["is"],
@@ -1751,6 +1951,7 @@ template SiSUdocAbstraction() {
char[] line,
ref int[string] line_occur,
ref string[string] an_object,
+ ref string an_object_key,
ref int[string] lv,
ref int[string] collapsed_lev,
ref int[string] type,
@@ -1759,17 +1960,21 @@ template SiSUdocAbstraction() {
if (auto m = match(line, rgx.heading)) {
/+ heading match +/
type["heading"] = State.on;
- type["biblio_section"] = State.off;
+ if (match(line, rgx.heading_seg_and_above)) {
+ type["biblio_section"] = State.off;
+ type["glossary_section"] = State.off;
+ type["blurb_section"] = State.off;
+ }
type["para"] = State.off;
++line_occur["heading"];
- an_object["body_nugget"] ~= line ~= "\n";
+ 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":
- an_object["body_nugget"]=replaceFirst(an_object["body_nugget"],
+ an_object[an_object_key]=replaceFirst(an_object[an_object_key],
rgx.variable_doc_title, (dochead_meta_aa["title"]["full"] ~ ","));
- an_object["body_nugget"]=replaceFirst(an_object["body_nugget"],
+ an_object[an_object_key]=replaceFirst(an_object[an_object_key],
rgx.variable_doc_author, dochead_meta_aa["creator"]["author"]);
collapsed_lev["h0"] = 1;
an_object["lev_collapsed_number"] =
@@ -1888,6 +2093,7 @@ template SiSUdocAbstraction() {
auto _para_match_(
char[] line,
ref string[string] an_object,
+ ref string an_object_key,
ref string[string] indent,
ref bool bullet,
ref int[string] type,
@@ -1896,7 +2102,7 @@ template SiSUdocAbstraction() {
if (line_occur["para"] == State.off) {
/+ para matches +/
type["para"] = State.on;
- an_object["body_nugget"] ~= line;
+ an_object[an_object_key] ~= line; // body_nugget
indent=[
"hang_position" : "0",
"base_position" : "0",
@@ -2120,11 +2326,12 @@ template SiSUdocAbstraction() {
string[string] obj_txt;
auto obj_inline_markup_and_anchor_tags(
string[string] obj_,
+ string obj_key_,
string[string][string] dochead_make_aa
)
in { }
body {
- obj_txt["munge"]=obj_["body_nugget"].dup;
+ obj_txt["munge"]=obj_[obj_key_].dup;
obj_txt["munge"]=(match(obj_["is"], ctRegex!(`verse|code`)))
? obj_txt["munge"]
: strip(obj_txt["munge"]);
diff --git a/src/sdp/ao_conf_make_meta_native.d b/src/sdp/ao_conf_make_meta_native.d
index afcd14e..d95a8dd 100644
--- a/src/sdp/ao_conf_make_meta_native.d
+++ b/src/sdp/ao_conf_make_meta_native.d
@@ -215,7 +215,7 @@ template SiSUheaderExtractNative() {
type["header_make"] = State.on;
type["header_meta"] = State.off;
++line_occur["header_make"];
- an_object["nugget"] ~= line ~= "\n";
+ an_object["body_nugget"] ~= line ~= "\n";
} else if (matchFirst(line, rgx.native_header)) { /+ matched header_metadata +/
/+ (generic header match and not previously caught by header_make) +/
debug(header1) { /+ writeln(line); +/ }
@@ -223,20 +223,20 @@ template SiSUheaderExtractNative() {
type["header_make"] = State.off;
type["header_meta"] = State.on;
++line_occur["header_meta"];
- an_object["nugget"] ~= line ~= "\n";
+ an_object["body_nugget"] ~= line ~= "\n";
} else if (type["header_make"] == State.on
&& (line_occur["header_make"] > State.off)) { /+ header_make flag set +/
if (matchFirst(line, rgx.native_header_sub)) { /+ sub-header +/
debug(header1) { /+ writeln(line); +/ }
++line_occur["header_make"];
- an_object["nugget"] ~= line ~= "\n";
+ an_object["body_nugget"] ~= line ~= "\n";
}
} else if (type["header_meta"] == State.on
&& (line_occur["header_meta"] > State.off)) { /+ header_metadata flag set +/
if (matchFirst(line, rgx.native_header_sub)) { /+ sub-header +/
debug(header1) { /+ writeln(line); +/ }
++line_occur["header_meta"];
- an_object["nugget"] ~= line ~= "\n";
+ an_object["body_nugget"] ~= line ~= "\n";
}
}
return an_object;
@@ -249,7 +249,7 @@ template SiSUheaderExtractNative() {
line_occur["header_make"] = State.off;
line_occur["header_meta"] = State.off;
type["header"] = State.off;
- an_object.remove("nugget");
+ an_object.remove("body_nugget");
an_object.remove("is");
an_object.remove("attrib");
}
@@ -281,7 +281,7 @@ template SiSUheaderExtractNative() {
if (header_line.length == 0) {
/+ header_make instructions (current line empty) +/
auto dochead_metadata_and_make =
- set_header.header_metadata_and_make_aa(strip(an_object["nugget"]), dochead_meta, dochead_make);
+ set_header.header_metadata_and_make_aa(strip(an_object["body_nugget"]), dochead_meta, dochead_make);
static assert(!isTypeTuple!(dochead_metadata_and_make));
dochead_meta = dochead_metadata_and_make[0];
dochead_make = dochead_metadata_and_make[1];
diff --git a/src/sdp/ao_defaults.d b/src/sdp/ao_defaults.d
index a53b827..3255c99 100644
--- a/src/sdp/ao_defaults.d
+++ b/src/sdp/ao_defaults.d
@@ -320,7 +320,8 @@ template SiSUrgxInitFlags() {
"header_meta" : 0,
"heading" : 0,
"biblio_section" : 0,
- // "glossary_section" : 0, // TODO
+ "glossary_section" : 0,
+ "blurb_section" : 0,
"para" : 0,
"blocks" : 0, // 0..2 generic
"code" : 0, // 0..2
@@ -383,7 +384,7 @@ template SiSUbiblio() {
}
template InternalMarkup() {
struct InlineMarkup {
- auto en_a_o = "【"; auto en_a_c = "】"; // endnote en_a_o: '~{'; en_a_c: '}~'
- auto en_b_o = "〖"; auto en_b_c = "〗"; // endnote en_b_o: '~['; en_b_c: ']~'
+ auto en_a_o = "【"; auto en_a_c = "】";
+ auto en_b_o = "〖"; auto en_b_c = "〗";
}
}
diff --git a/src/sdp/ao_output_debugs.d b/src/sdp/ao_output_debugs.d
index eefec9d..3bb8ae2 100644
--- a/src/sdp/ao_output_debugs.d
+++ b/src/sdp/ao_output_debugs.d
@@ -5,8 +5,9 @@ template SiSUoutputDebugs() {
struct SDPoutputDebugs {
auto abstract_doc_source_debugs(S)(
auto ref const S contents,
- string[][string][string] bookindex_unordered_hashes,
- JSONValue[] biblio,
+ string[][string] document_section_keys_sequenced,
+ string[][string][string] bookindex_unordered_hashes, // redundant, consider
+ JSONValue[] biblio, // redundant, consider
string[string][string] dochead_make,
string[string][string] dochead_meta,
string fn_src,
@@ -44,17 +45,18 @@ template SiSUoutputDebugs() {
__FILE__,
__LINE__,
);
- foreach (obj; contents) {
- if (obj.use == "content") {
- if (obj.is_a == "heading") {
- writefln(
- "%s node: %s heading: %s %s",
- obj.obj_cite_number,
- obj.node,
- obj.lev_markup_number,
- obj.object,
- );
- } else {
+ foreach (key; document_section_keys_sequenced["seg"]) {
+ foreach (obj; contents[key]) {
+ if (obj.use == "content") {
+ if (obj.is_a == "heading") {
+ writefln(
+ "%s node: %s heading: %s %s",
+ obj.obj_cite_number,
+ obj.node,
+ obj.lev_markup_number,
+ obj.object,
+ );
+ }
}
}
}
@@ -271,53 +273,65 @@ template SiSUoutputDebugs() {
__FILE__,
__LINE__,
);
- foreach (obj; contents) {
- if (obj.is_a == "heading") {
- writefln(
- "%s~ [%s] %s %s",
- obj.heading_attrib.lev,
- obj.obj_cite_number,
- obj.anchor_tags,
- obj.object
- );
+ foreach (key; document_section_keys_sequenced["seg"]) {
+ foreach (obj; contents[key]) {
+ if (obj.is_a == "heading") {
+ writefln(
+ "%s~ [%s] %s %s",
+ obj.heading_attrib.lev,
+ obj.obj_cite_number,
+ obj.anchor_tags,
+ // "[", obj["is"], "] ",
+ obj.object
+ );
+ }
}
}
}
debug(heading) { // heading
string spc;
- foreach (o; contents) {
- if (o.is_a == "heading") {
- switch (o.heading_attrib.lev_markup_number) {
- case 0:
- spc="";
- break;
- case 1:
- spc=" ";
- break;
- case 2:
- spc=" ";
- break;
- case 3:
- spc=" ";
- break;
- case 4:
- spc=" ";
- break;
- case 5:
- spc=" ";
- break;
- case 6:
- spc=" ";
- break;
- case 7:
- spc=" ";
- break;
- case 8:
- spc=" ";
- break;
- default:
- spc="";
- break;
+ foreach (key; document_section_keys_sequenced["seg"]) {
+ foreach (o; contents[key]) {
+ if (o.is_a == "heading") {
+ switch (o.heading_attrib.lev_markup_number) {
+ case 0:
+ spc="";
+ break;
+ case 1:
+ spc=" ";
+ break;
+ case 2:
+ spc=" ";
+ break;
+ case 3:
+ spc=" ";
+ break;
+ case 4:
+ spc=" ";
+ break;
+ case 5:
+ spc=" ";
+ break;
+ case 6:
+ spc=" ";
+ break;
+ case 7:
+ spc=" ";
+ break;
+ case 8:
+ spc=" ";
+ break;
+ default:
+ spc="";
+ break;
+ }
+ writefln(
+ "%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
+ );
}
writefln(
"%s* %s\n (markup level: %s; collapsed level: %s)",
@@ -340,41 +354,50 @@ template SiSUoutputDebugs() {
__FILE__,
__LINE__,
);
- foreach (obj; contents) {
- if (obj.is_a == "heading") {
- writefln(
- "%s~ [%s] %s",
- obj.heading_attrib.lev,
- obj.obj_cite_number,
- obj.object
- );
+ foreach (key; document_section_keys_sequenced["seg"]) {
+ foreach (obj; contents[key]) {
+ if (obj.is_a == "heading") {
+ writefln(
+ "%s~ [%s] %s",
+ obj.heading_attrib.lev,
+ obj.obj_cite_number,
+ // "[", obj["is"], "] ",
+ obj.object
+ );
+ }
}
}
}
debug(checkdoc) {
- foreach (obj; contents) {
- if (obj.use == "content") {
- if (!empty(obj.obj_cite_number)) {
- check["last_obj_cite_number"] = obj.obj_cite_number;
+ foreach (key; document_section_keys_sequenced["seg"]) {
+ foreach (obj; contents[key]) {
+ if (obj.use == "content") {
+ if (!empty(obj.obj_cite_number)) {
+ check["last_obj_cite_number"] = obj.obj_cite_number;
+ }
}
}
}
}
writefln(
- "%s\n\"%s\", %s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s:%s",
+ "%s\n\"%s\", %s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s:%s\n",
"-------------------------------",
dochead_meta["title"]["full"],
dochead_meta["creator"]["author"],
"-------------------------------",
fn_src,
"length contents array: ",
- contents.length,
+ contents["body"].length,
"last obj_cite_number: ",
check["last_obj_cite_number"],
- "length bookindex: ",
- bookindex_unordered_hashes.length,
+ "length glossary: ",
+ contents["glossary"].length,
"length biblio: ",
- biblio.length,
+ contents["bibliography"].length,
+ "length bookindex: ",
+ contents["bookindex_seg"].length,
+ "length blurb: ",
+ contents["blurb"].length,
__FILE__,
__LINE__,
);
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d
index 7d44b85..c58aeca 100644
--- a/src/sdp/ao_rgx.d
+++ b/src/sdp/ao_rgx.d
@@ -60,6 +60,7 @@ template RgxInit() {
/+ heading & paragraph operators +/
static heading_a = ctRegex!(`^:?[A][~] `, "m");
static heading = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?)\s+`,"i");
+ static heading_seg_and_above = ctRegex!(`^:?([A-D1])[~]([a-z0-9_.-]*[?]?)\s+`,"i");
static heading_marker = ctRegex!(`^:?([A-D1-4])[~]`);
static heading_anchor_tag = ctRegex!(`^:?[A-D1-4][~]([a-z0-9_.-]+) `,"i");
static heading_identify_anchor_tag = ctRegex!(`^:?[A-D1-4][~]\s+(?:(?:(?:chapter|article|section|clause)\s+[0-9.]+)|(?:[0-9]+))`,"i"); // unless dob.obj =~/^:?[A-D1-4]~\s+(?:|(?:chapter|article|section|clause)\s+)([0-9.]+)/i
@@ -68,8 +69,10 @@ template RgxInit() {
static heading_marker_missing_tag = ctRegex!(`^:?([A-D1-4])[~] `);
static heading_title = ctRegex!(`^:?[A-D1-4][~][a-z0-9_.-]*[?]?\s+(.+?)$`);
static heading_all = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?)\s+(.+?)$`); // test, particularly [2] name/hashtag which may or may not be, does this affect title [3]
+ static heading_backmatter = ctRegex!(`^:?1[~][!](glossary|bibliography|biblio|blurb)\s+`,"i");
static heading_biblio = ctRegex!(`^:?(1)[~][!](biblio(?:graphy)?|references?)`);
static heading_glossary = ctRegex!(`^:?(1)[~][!](glossary)`);
+ static heading_blurb = ctRegex!(`^:?(1)[~][!](blurb)`);
static para_bullet = ctRegex!(`^_[*] `);
static para_bullet_indent = ctRegex!(`^_([1-9])[*] `);
static para_indent = ctRegex!(`^_([1-9]) `);
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index d6a3b8c..ce5684f 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -42,7 +42,7 @@ template SiSUoutputHTML() {
);
return o;
}
- auto scroll_head() {
+ auto scroll_head_html() {
string o;
o = format(q"◎
<!DOCTYPE html>
@@ -75,7 +75,7 @@ template SiSUoutputHTML() {
◎");
return o;
}
- auto scroll_tail() {
+ auto scroll_tail_html() {
string o;
o = format(q"◎
<a name="bottom" id="bottom"></a>
@@ -88,54 +88,51 @@ template SiSUoutputHTML() {
}
void scroll(C)(
auto ref const C contents,
- string[] document_parts,
- string[][string][string] bookindex_unordered_hashes,
- JSONValue[] biblio,
+ string[][string] document_section_keys_sequenced,
string[string][string] dochead_make,
string[string][string] dochead_meta,
string fn_src,
bool[string] opt_action_bool
) {
auto rgx = Rgx();
- string[] toc;
- string[] body_;
+ string[] body_html;
string[] doc;
- foreach (part; document_parts) {
+ foreach (part; document_section_keys_sequenced["scroll"]) {
foreach (obj; contents[part]) {
if (obj.use == "content") {
switch (obj.is_a) {
case "heading":
- body_ ~= html_heading(obj);
+ body_html ~= html_heading(obj);
break;
case "para":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "verse":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "group":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "block":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "quote":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "table":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
case "code":
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
default:
- body_ ~= html_para(obj);
+ body_html ~= html_para(obj);
break;
}
}
}
}
- doc = scroll_head ~ body_ ~ scroll_tail;
+ doc = scroll_head_html ~ body_html ~ scroll_tail_html;
auto m = matchFirst(fn_src, rgx.src_fn);
auto fn = m["fn_base"] ~ ".html";
auto pth_html = "en/html";
diff --git a/src/sdp/output_hub.d b/src/sdp/output_hub.d
index db508ff..bdb8480 100644
--- a/src/sdp/output_hub.d
+++ b/src/sdp/output_hub.d
@@ -6,15 +6,13 @@ template SiSUoutputHub() {
struct SDPoutput {
void hub(S)(
auto ref const S contents,
- string[][string][string] bookindex_unordered_hashes,
- JSONValue[] biblio,
+ string[][string] document_section_keys_sequenced,
string[string][string] dochead_make,
string[string][string] dochead_meta,
string fn_src,
bool[string] opt_action_bool
) {
auto rgx = Rgx();
- string[] document_parts;
if (opt_action_bool["source"]) {
writeln("sisupod source");
}
@@ -27,20 +25,10 @@ template SiSUoutputHub() {
if (opt_action_bool["html"]) {
mixin SiSUoutputHTML;
auto html=SDPoutputHTML();
- document_parts = [
- "head",
- "toc_scroll",
- "body",
- "endnotes_scroll",
- "bibliography",
- "bookindex_scroll"
- ];
html.css_write;
html.scroll(
contents,
- document_parts,
- bookindex_unordered_hashes,
- biblio,
+ document_section_keys_sequenced,
dochead_make,
dochead_meta,
fn_src,