aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sdp
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-04-24 22:08:24 -0400
committerRalph Amissah <ralph@amissah.com>2016-04-24 22:08:24 -0400
commited302d1be74d2b4e69ee4b6e3834637ed531eaea (patch)
tree0f605c3756788d2fda6fe0782a7a472172a285b9 /lib/sdp
parentbase ... tag (diff)
Diffstat (limited to 'lib/sdp')
-rw-r--r--lib/sdp/ao_abstract_doc_source.d367
-rw-r--r--lib/sdp/ao_assertions.d6
-rw-r--r--lib/sdp/ao_defaults.d76
-rw-r--r--lib/sdp/ao_emitter.d274
-rw-r--r--lib/sdp/ao_interface.d144
-rw-r--r--lib/sdp/ao_object_setter.d96
-rw-r--r--lib/sdp/ao_output_debugs.d173
-rw-r--r--lib/sdp/ao_read_markup_source.d8
-rw-r--r--lib/sdp/ao_rgx.d42
-rw-r--r--lib/sdp/ao_scan_inserts.d124
-rw-r--r--lib/sdp/ao_structs.d43
-rw-r--r--lib/sdp/ao_utils.d4
-rw-r--r--lib/sdp/compile_time_info.d38
-rw-r--r--lib/sdp/version.txt8
14 files changed, 860 insertions, 543 deletions
diff --git a/lib/sdp/ao_abstract_doc_source.d b/lib/sdp/ao_abstract_doc_source.d
index 941c3f0..34e4072 100644
--- a/lib/sdp/ao_abstract_doc_source.d
+++ b/lib/sdp/ao_abstract_doc_source.d
@@ -1,29 +1,31 @@
-/*
+/+
document abstraction
ao_abstract_doc_source.d
-*/
++/
mixin template SiSUdocAbstraction() {
- class Abstraction {
- /* abstract marked up document */
+ private:
+ struct Abstraction {
+ /+ ↓ abstract marked up document +/
auto abstract_doc_source(char[][] markup_sourcefile_content) {
/+ initialize +/
mixin ObjectSetters;
mixin AssertionsOnMarkupDocumentStructure;
mixin AssertionsOnBlocks;
mixin ScreenTxtColors;
- auto rgx = new Rgx();
- auto set_oa = new ObjectAbstractSet();
- auto set_header = new HeaderDocMetadataMakeJson();
- auto notesection = new NotesSection();
- string[string][131072] contents_arbitrary_max_length_set; // 2000 pg * 50 lines == 100000
- string[1024] notes;
+ auto rgx = Rgx();
+ auto set_oa = ObjectAbstractSet();
+ auto set_header = HeaderDocMetadataMakeJson();
+ auto notesection = NotesSection();
+ string[string][] contents;
+ mixin Structs;
string notes_str;
string[string] object, processing, head;
string biblio_tag_name, biblio_tag_entry, book_idx_tmp, st;
- string[1024] biblio_arr_json = biblio_entry_tags_jsonstr;
- JSONValue[1024] bib_arr_json;
+ string[] biblio_arr_json;
+ JSONValue[] bib_arr_json;
uint[string] line_occur;
- uint counter, previous_count, count_biblio_entry, ocn, ocn_, verse_line, bib_entry, heading_pointer, notepoint;
+ uint counter, ocn, ocn_, verse_line, bib_entry, heading_pointer, notepoint, count_biblio_entry;
+ ulong previous_count;
string indent_first, indent_second;
string[][string][string] bookindex_unordered_hashes;
bool bullet = true;
@@ -67,18 +69,18 @@ mixin template SiSUdocAbstraction() {
auto str_h_4 = "^(none)";
string content_non_header = "8";
string node;
- auto obj_im = new ObjInlineMarkup();
- auto obj_att = new ObjAttrib();
- auto object_citation_number = new OCNemitter();
+ auto obj_im = ObjInlineMarkup();
+ auto obj_att = ObjAttrib();
+ auto object_citation_number = OCNemitter();
auto ft = flag_type.dup;
int ocn_emit(int ocn_status_flag) {
return object_citation_number.ocn_emitter(ocn_status_flag);
}
- auto bookindex_extract_hash = new BookIndexNuggetHash();
+ auto bookindex_extract_hash = BookIndexNuggetHash();
string[][string][string] bkidx_hash(string bookindex, int ocn) {
return bookindex_extract_hash.bookindex_nugget_hash(bookindex, ocn);
}
- auto node_construct = new NodeStructureMetadata();
+ auto node_construct = NodeStructureMetadata();
string node_jstr(
string lvn,
int ocn_,
@@ -116,11 +118,20 @@ mixin template SiSUdocAbstraction() {
"end" : ""
];
int tell_lo(string color, int ocn, in char[] line) {
- writeln(scr_txt_marker[color], to!string(ocn), " ", to!string(line));
+ writefln(
+ "%s%s %s",
+ scr_txt_marker[color],
+ to!string(ocn),
+ to!string(line)
+ );
return 0;
}
int tell_l(string color, in char[] line) {
- writeln(scr_txt_marker[color], line);
+ writefln(
+ "%s%s",
+ scr_txt_marker[color],
+ line
+ );
return 0;
}
scope(success) {
@@ -128,23 +139,26 @@ mixin template SiSUdocAbstraction() {
scope(failure) {
}
scope(exit) {
- destroy(contents_arbitrary_max_length_set);
+ destroy(contents);
destroy(object);
destroy(processing);
destroy(biblio_arr_json);
}
auto dochead_make = parseJSON(header_make_jsonstr).object;
auto dochead_metadata = parseJSON(header_metadata_jsonstr).object;
+ /+ ↓ loop markup document/text line by line +/
foreach (line; markup_sourcefile_content) {
- /* loop markup document/text line by line */
- /* scope */
+ /+ ↓ markup document/text line by line +/
+ /+ scope +/
scope(exit) {
}
scope(failure) {
- writeln(__FILE__, ":", __LINE__, " failed here:");
- writeln(" line: ", line);
- writeln(" is : ", object["is"]);
- writeln(" node: ", node);
+ writefln(
+ "%s:%s failed here: \n line: %s",
+ __FILE__,
+ __LINE__,
+ line,
+ );
}
line = replaceAll(line, rgx.true_dollar, "$$$$");
// dollar represented as $$ needed to stop submatching on $
@@ -155,13 +169,17 @@ mixin template SiSUdocAbstraction() {
}
debug(srclines) {
if (!line.empty) { // source lines, not empty
- writeln(scr_txt_marker["green"], line);
+ writefln(
+ "%s%s",
+ scr_txt_marker["green"],
+ line
+ );
}
}
if ((!line.empty) && (ft["ocn_status_multi_obj"] == 0)) {
- /* not multi-line object, check whether ocn is on or turned off */
+ /+ not multi-line object, check whether ocn is on or turned off +/
if (match(line, rgx.ocn_block_marks)) {
- /* switch off ocn */
+ /+ switch off ocn +/
if (match(line, rgx.ocn_off_block)) {
ft["ocn_status_multi_obj"] = 1;
debug(ocnoff) {
@@ -198,7 +216,7 @@ mixin template SiSUdocAbstraction() {
}
}
if (ft["code"] == 1) {
- /* block object: code */
+ /+ block object: code +/
if (ft["curly_code"] == 1) {
if (auto m = match(line, rgx.block_curly_code_close)) {
debug(code) { // code (curly) close
@@ -229,26 +247,25 @@ mixin template SiSUdocAbstraction() {
}
}
} else if (!match(line, rgx.regular_parse_skip)) {
- /* object other than code block object (includes regular text paragraph) */
+ /+ object other than code block object (includes regular text paragraph) +/
if (((match(line, rgx.heading_biblio)
|| (ft["heading_biblio"] == 1)))
&& (!match(line, rgx.heading))
&& (!match(line, rgx.comment))) {
- /* within block object: biblio */
+ /+ within block object: biblio +/
if (match(line, rgx.heading_biblio)) {
ft["heading_biblio"] = 1;
}
if (empty(line) && (bib_entry == 0)) {
- count_biblio_entry++;
+ ++count_biblio_entry;
+ biblio_arr_json ~= biblio_entry_tags_jsonstr;
bib_entry = 1;
}
debug(biblio) {
- writeln(
+ writefln(
+ "%s * %s %s",
scr_txt_color["yellow"],
- "* ",
scr_txt_color["off"],
- to!string(count_biblio_entry),
- " ",
line
);
}
@@ -257,7 +274,7 @@ mixin template SiSUdocAbstraction() {
bib_entry = 0;
st=to!string(bt.captures[1]);
biblio_tag_entry=to!string(bt.captures[2]);
- JSONValue j = parseJSON(biblio_arr_json[count_biblio_entry]);
+ JSONValue j = parseJSON(biblio_arr_json[count_biblio_entry-1]); // core.exception.RangeError@lib/sdp/ao_abstract_doc_source.d(288): Range violation (LDC) [: same for 343], fix to subtract 1 done!
if (match(st, rgx.biblio_abbreviations)) {
biblio_tag_name=biblio_tag_map[st];
} else {
@@ -300,29 +317,28 @@ mixin template SiSUdocAbstraction() {
auto s = to!string(j);
s = j.toString();
debug(biblio) {
- writeln(
+ writefln(
+ "%s* %s%s: %s\n%s",
scr_txt_color["red"],
- "* ",
scr_txt_color["off"],
biblio_tag_name,
- ": ",
- biblio_tag_entry
+ biblio_tag_entry,
+ j[biblio_tag_name]
);
- writeln(biblio_arr_json[count_biblio_entry]);
writeln(j[biblio_tag_name], ":", j[biblio_tag_name]);
}
- biblio_arr_json[count_biblio_entry] = s;
+ biblio_arr_json[count_biblio_entry-1] = s;
biblio_tag_entry="";
}
} else if (ft["poem"] == 1) {
- /* within block object: poem */
+ /+ within block object: poem +/
if (ft["curly_poem"] == 1) {
if (auto m = match(line, rgx.block_curly_poem_close)) {
object["obj"]="verse"; // check that this is as you please
debug(poem) { // poem (curly) close
- writeln(
+ writefln(
+ "%s* [poem curly] %s%s",
scr_txt_color["red"],
- "* [poem curly] ",
scr_txt_color["off"],
line
);
@@ -332,10 +348,10 @@ mixin template SiSUdocAbstraction() {
}
debug(poem) { // poem (curly) close
writeln(__LINE__);
- writeln(
+ writefln(
+ "%s%s %s",
scr_txt_marker["fuchsia"],
ocn,
- " ",
line
);
}
@@ -354,7 +370,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -386,10 +402,12 @@ mixin template SiSUdocAbstraction() {
verse_line=1;
object["obj"] = processing["verse"];
debug(poem) { // poem verse
- writeln(scr_txt_marker["green"],
- ocn,
- " curly\n",
- object["obj"]);
+ writefln(
+ "%s%s curly\n%s",
+ scr_txt_marker["green"],
+ ocn,
+ object["obj"]
+ );
}
processing.remove("verse");
object["is"] = "verse";
@@ -402,7 +420,7 @@ mixin template SiSUdocAbstraction() {
);
object["markup"] = obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] = obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -422,9 +440,9 @@ mixin template SiSUdocAbstraction() {
if (auto m = match(line, rgx.block_tic_close)) { // tic_poem_close
object["obj"]="verse"; // check that this is as you please
debug(poem) { // poem (curly) close
- writeln(
+ writefln(
+ "%s* [poem tic] %s%s",
scr_txt_color["red"],
- "* [poem tic] ",
scr_txt_color["off"],
line
);
@@ -443,7 +461,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -475,10 +493,12 @@ mixin template SiSUdocAbstraction() {
verse_line=1;
object["obj"] = processing["verse"];
debug(poem) { // poem (tic) close
- writeln(scr_txt_marker["green"],
- ocn,
- " tic\n",
- object["obj"]);
+ writefln(
+ "%s%s tic\n%s",
+ scr_txt_marker["green"],
+ ocn,
+ object["obj"]
+ );
}
processing.remove("verse");
object["is"] = "verse";
@@ -494,7 +514,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -511,7 +531,7 @@ mixin template SiSUdocAbstraction() {
}
}
}
- /* within block object: group */
+ /+ within block object: group +/
} else if (ft["group"] == 1) {
if (ft["curly_group"] == 1) {
if (auto m = match(line, rgx.block_curly_group_close)) {
@@ -543,7 +563,7 @@ mixin template SiSUdocAbstraction() {
}
}
} else if (ft["block"] == 1) {
- /* within block object: block */
+ /+ within block object: block +/
if (ft["curly_block"] == 1) {
if (auto m = match(line, rgx.block_curly_block_close)) {
debug(block) { // block (curly) close
@@ -574,7 +594,7 @@ mixin template SiSUdocAbstraction() {
}
}
} else if (ft["quote"] == 1) {
- /* within block object: quote */
+ /+ within block object: quote +/
if (ft["curly_quote"] == 1) {
if (auto m = match(line, rgx.block_curly_quote_close)) {
debug(quote) { // quote (curly) close
@@ -605,7 +625,7 @@ mixin template SiSUdocAbstraction() {
}
}
} else if (ft["table"] == 1) {
- /* within block object: table */
+ /+ within block object: table +/
if (ft["curly_table"] == 1) {
if (auto m = match(line, rgx.block_curly_table_close)) {
debug(table) { // table (curly) close
@@ -636,7 +656,7 @@ mixin template SiSUdocAbstraction() {
}
}
} else {
- /* not within a block group */
+ /+ not within a block group +/
assert(
(ft["blocks"] == 0)
|| (ft["blocks"] == 2),
@@ -644,11 +664,11 @@ mixin template SiSUdocAbstraction() {
);
assertions_flag_types_block_status_none_or_closed(ft);
if (auto m = match(line, rgx.block_curly_code_open)) {
- /* curly code open */
+ /+ curly code open +/
debug(code) { // code (curly) open
- writeln(
+ writefln(
+ "%s* [code curly] %s%s",
scr_txt_color["blue"],
- "* [code curly] ",
scr_txt_color["off"],
line
);
@@ -657,7 +677,7 @@ mixin template SiSUdocAbstraction() {
ft["code"] = 1;
ft["curly_code"] = 1;
} else if (auto m = match(line, rgx.block_curly_poem_open)) {
- /* curly poem open */
+ /+ curly poem open +/
object.remove("obj");
object.remove("markup");
object.remove("is");
@@ -665,9 +685,9 @@ mixin template SiSUdocAbstraction() {
object.remove("bookindex");
processing.remove("verse");
debug(poem) { // poem (curly) open
- writeln(
+ writefln(
+ "%s* [poem curly] %s%s",
scr_txt_color["red"],
- "* [poem curly] ",
scr_txt_color["off"],
line
);
@@ -678,11 +698,11 @@ mixin template SiSUdocAbstraction() {
ft["poem"] = 1;
ft["curly_poem"] = 1;
} else if (auto m = match(line, rgx.block_curly_group_open)) {
- /* curly group open */
+ /+ curly group open +/
debug(group) { // group (curly) open
- writeln(
+ writefln(
+ "%s* [group curly] %s%s",
scr_txt_color["blue"],
- "* [group curly] ",
scr_txt_color["off"],
line
);
@@ -691,11 +711,11 @@ mixin template SiSUdocAbstraction() {
ft["group"] = 1;
ft["curly_group"] = 1;
} else if (auto m = match(line, rgx.block_curly_block_open)) {
- /* curly block open */
+ /+ curly block open +/
debug(block) { // block (curly) open
- writeln(
+ writefln(
+ "%s* [block curly] %s%s",
scr_txt_color["blue"],
- "* [block curly] ",
scr_txt_color["off"],
line
);
@@ -704,11 +724,11 @@ mixin template SiSUdocAbstraction() {
ft["block"] = 1;
ft["curly_block"] = 1;
} else if (auto m = match(line, rgx.block_curly_quote_open)) {
- /* curly quote open */
+ /+ curly quote open +/
debug(quote) { // quote (curly) open
- writeln(
+ writefln(
+ "%s* [quote curly] %s%s",
scr_txt_color["blue"],
- "* [quote curly] ",
scr_txt_color["off"],
line
);
@@ -717,11 +737,11 @@ mixin template SiSUdocAbstraction() {
ft["quote"] = 1;
ft["curly_quote"] = 1;
} else if (auto m = match(line, rgx.block_curly_table_open)) {
- /* curly table open */
+ /+ curly table open +/
debug(table) { // table (curly) open
- writeln(
+ writefln(
+ "%s* [table curly] %s%s",
scr_txt_color["blue"],
- "* [table curly] ",
scr_txt_color["off"],
line
);
@@ -730,11 +750,11 @@ mixin template SiSUdocAbstraction() {
ft["table"] = 1;
ft["curly_table"] = 1;
} else if (auto m = match(line, rgx.block_tic_code_open)) {
- /* tic code open */
+ /+ tic code open +/
debug(code) { // code (tic) open
- writeln(
+ writefln(
+ "%s* [code tic] %s%s",
scr_txt_color["blue"],
- "* [code tic] ",
scr_txt_color["off"],
line
);
@@ -743,7 +763,7 @@ mixin template SiSUdocAbstraction() {
ft["code"] = 1;
ft["tic_code"] = 1;
} else if (auto m = match(line, rgx.block_tic_poem_open)) {
- /* tic poem open */
+ /+ tic poem open +/
object.remove("obj");
object.remove("markup");
object.remove("is");
@@ -751,9 +771,9 @@ mixin template SiSUdocAbstraction() {
object.remove("bookindex");
processing.remove("verse");
debug(poem) { // poem (tic) open
- writeln(
+ writefln(
+ "%s* [poem tic] %s%s",
scr_txt_color["red"],
- "* [poem tic] ",
scr_txt_color["off"],
line
);
@@ -764,11 +784,11 @@ mixin template SiSUdocAbstraction() {
ft["poem"] = 1;
ft["tic_poem"] = 1;
} else if (auto m = match(line, rgx.block_tic_group_open)) {
- /* tic group open */
+ /+ tic group open +/
debug(group) { // group (tic) open
- writeln(
+ writefln(
+ "%s* [group tic] %s%s",
scr_txt_color["blue"],
- "* [group tic] ",
scr_txt_color["off"],
line
);
@@ -777,11 +797,11 @@ mixin template SiSUdocAbstraction() {
ft["group"] = 1;
ft["tic_group"] = 1;
} else if (auto m = match(line, rgx.block_tic_block_open)) {
- /* tic block open */
+ /+ tic block open +/
debug(block) { // block (tic) open
- writeln(
+ writefln(
+ "%s* [block tic] %s%s",
scr_txt_color["blue"],
- "* [block tic] ",
scr_txt_color["off"],
line
);
@@ -790,11 +810,11 @@ mixin template SiSUdocAbstraction() {
ft["block"] = 1;
ft["tic_block"] = 1;
} else if (auto m = match(line, rgx.block_tic_quote_open)) {
- /* tic quote open */
+ /+ tic quote open +/
debug(quote) { // quote (tic) open
- writeln(
+ writefln(
+ "%s* [quote tic] %s%s",
scr_txt_color["blue"],
- "* [quote tic] ",
scr_txt_color["off"],
line
);
@@ -803,11 +823,11 @@ mixin template SiSUdocAbstraction() {
ft["quote"] = 1;
ft["tic_quote"] = 1;
} else if (auto m = match(line, rgx.block_tic_table_open)) {
- /* tic table open */
+ /+ tic table open +/
debug(table) { // table (tic) open
- writeln(
+ writefln(
+ "%s* [table tic] %s%s",
scr_txt_color["blue"],
- "* [table tic] ",
scr_txt_color["off"],
line
);
@@ -816,8 +836,8 @@ mixin template SiSUdocAbstraction() {
ft["table"] = 1;
ft["tic_table"] = 1;
} else if (!line.empty) {
- /* line not empty */
- /* non blocks (headers, paragraphs) & closed blocks */
+ /+ line not empty +/
+ /+ non blocks (headers, paragraphs) & closed blocks +/
assert(
!line.empty,
"line tested, line not empty surely"
@@ -840,11 +860,13 @@ mixin template SiSUdocAbstraction() {
);
}
if (auto m = match(line, rgx.book_index)) {
- /* match book_index */
+ /+ match book_index +/
debug(bookindexmatch) { // book index
- writeln(
- scr_txt_color["blue"], "* [bookindex] ", scr_txt_color["off"],
- to!string(m.captures[1]), "\n"
+ writefln(
+ "%s* [bookindex] %s%s\n",
+ scr_txt_color["blue"],
+ scr_txt_color["off"],
+ to!string(m.captures[1]),
);
// writeln(scr_txt_marker["blue"], to!string(m.captures[1]), "\n");
}
@@ -854,24 +876,24 @@ mixin template SiSUdocAbstraction() {
ft["book_index"] = 1;
book_idx_tmp = to!string(m.captures[1]);
debug(bookindexmatch) { // book index
- writeln(
+ writefln(
+ "%s* [bookindex] %s%s\n",
scr_txt_color["blue"],
- "* [bookindex] ",
scr_txt_color["off"],
- book_idx_tmp, "\n"
+ book_idx_tmp,
);
}
} else if (ft["book_index"] == 1 ) {
- /* book_index flag set */
+ /+ book_index flag set +/
if (auto m = match(line, rgx.book_index_close)) {
ft["book_index"] = 0;
object["bookindex"] = book_idx_tmp ~ to!string(m.captures[1]);
debug(bookindexmatch) { // book index
- writeln(
+ writefln(
+ "%s* [bookindex] %s%s\n",
scr_txt_color["blue"],
- "* [bookindex] ",
scr_txt_color["off"],
- book_idx_tmp, "\n"
+ book_idx_tmp,
);
}
book_idx_tmp = "";
@@ -879,14 +901,14 @@ mixin template SiSUdocAbstraction() {
book_idx_tmp ~= line;
}
} else {
- /* not book_index */
+ /+ not book_index +/
if (auto m = match(line, rgx.comment)) {
- /* matched comment */
+ /+ matched comment +/
debug(comment) {
tell_l("blue", line);
}
object["obj"] ~= line ~= "\n";
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_comment(strip(object["obj"]));
object.remove("obj");
object.remove("markup");
@@ -905,7 +927,7 @@ mixin template SiSUdocAbstraction() {
ft["para"] = 0;
counter++;
} else if (auto m = match(line, rgx.header_make)) {
- /* matched header_make */
+ /+ matched header_make +/
debug(header1) { // header
tell_l("yellow", line);
}
@@ -917,7 +939,7 @@ mixin template SiSUdocAbstraction() {
line_occur["header_make"]++;
object["obj"] ~= line ~= "\n";
} else if (auto m = match(line, rgx.header_metadata)) {
- /* matched header_metadata */
+ /+ matched header_metadata +/
debug(header1) { // header
tell_l("yellow", line);
}
@@ -930,9 +952,9 @@ mixin template SiSUdocAbstraction() {
object["obj"] ~= line ~= "\n";
} else if (ft["header_make"] == 1
&& (line_occur["header_make"] > 0)) {
- /* header_make flag set */
+ /+ header_make flag set +/
if (auto m = match(line, rgx.header_sub)) {
- /* sub-header */
+ /+ sub-header +/
debug(header1) {
tell_l("yellow", line);
}
@@ -941,9 +963,9 @@ mixin template SiSUdocAbstraction() {
}
} else if (ft["header_metadata"] == 1
&& (line_occur["header_metadata"] > 0)) {
- /* header_metadata flag set */
+ /+ header_metadata flag set +/
if (auto m = match(line, rgx.header_sub)) {
- /* sub-header */
+ /+ sub-header +/
debug(header1) {
tell_l("yellow", line);
}
@@ -954,10 +976,10 @@ mixin template SiSUdocAbstraction() {
&& (line_occur["heading"] == 0))
&& ((ft["para"] == 0)
&& (ft["heading"] == 0))) {
- /* heading or para but neither flag nor line exists */
+ /+ heading or para but neither flag nor line exists +/
if ((to!string(dochead_make["make"]["headings"]).length > 2)
&& (ft["make_headings"] == 0)) {
- /* headings found */
+ /+ headings found +/
debug(headingsfound) {
writeln(dochead_make["make"]["headings"]);
}
@@ -1026,7 +1048,7 @@ mixin template SiSUdocAbstraction() {
&& (line_occur["heading"] == 0))
&& ((ft["para"] == 0)
&& (ft["heading"] == 0))) {
- /* heading make set */
+ /+ heading make set +/
if (match(line, rgx_h_B)) {
line = "B~ " ~ line;
debug(headingsfound) {
@@ -1071,7 +1093,7 @@ mixin template SiSUdocAbstraction() {
}
}
if (auto m = match(line, rgx.heading)) {
- /* heading match */
+ /+ heading match +/
ft["heading"] = 1;
ft["header"] = 0;
ft["header_make"] = 0;
@@ -1194,7 +1216,7 @@ mixin template SiSUdocAbstraction() {
tell_l("yellow", strip(line));
}
} else if (line_occur["para"] == 0) {
- /* para matches */
+ /+ para matches +/
if (auto m = match(line, rgx.para_indent)) {
debug(paraindent) { // para indent
tell_l("blue", line);
@@ -1241,7 +1263,7 @@ mixin template SiSUdocAbstraction() {
line_occur["para"]++;
}
} else if (line_occur["header_make"] > 0) {
- /* header_make */
+ /+ header_make +/
// should be caught by sub-header
debug(header) {
tell_l("red", line);
@@ -1249,7 +1271,7 @@ mixin template SiSUdocAbstraction() {
object["obj"] ~= line ~= "\n";
line_occur["header_make"]++;
} else if (line_occur["header_metadata"] > 0) {
- /* header_metadata */
+ /+ header_metadata +/
// should be caught by sub-header
debug(header) { // para
tell_l("red", line);
@@ -1257,14 +1279,14 @@ mixin template SiSUdocAbstraction() {
object["obj"] ~= line ~= "\n";
line_occur["header_metadata"]++;
} else if (line_occur["heading"] > 0) {
- /* heading */
+ /+ heading +/
debug(heading) { // heading
tell_l("blue", line);
}
object["obj"] ~= line ~= "\n";
line_occur["heading"]++;
} else if (line_occur["para"] > 0) {
- /* paragraph */
+ /+ paragraph +/
debug(para) {
tell_l("blue", line);
}
@@ -1273,7 +1295,7 @@ mixin template SiSUdocAbstraction() {
}
}
} else if (ft["blocks"] == 2) {
- /* line empty, with blocks flag */
+ /+ line empty, with blocks flag +/
assert(
line.empty,
"line should be empty"
@@ -1302,7 +1324,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -1332,7 +1354,7 @@ mixin template SiSUdocAbstraction() {
heading_pointer-1,
object["is"]
);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block_ocn_string(
"poem",
"",
@@ -1366,7 +1388,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -1399,7 +1421,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -1432,7 +1454,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -1466,7 +1488,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_block(
object["is"],
object["markup"],
@@ -1484,8 +1506,8 @@ mixin template SiSUdocAbstraction() {
ft["quote"] = 0;
}
} else {
- /* line empty */
- /* line.empty, post contents, empty variables: */
+ /+ line empty +/
+ /+ line.empty, post contents, empty variables: +/
assert(
line.empty,
"line should be empty"
@@ -1496,7 +1518,7 @@ mixin template SiSUdocAbstraction() {
);
if ((ft["header_make"] == 1)
&& (line_occur["header_make"] > 0)) {
- /* header_make instructions (current line empty) */
+ /+ header_make instructions (current line empty) +/
auto dochead_metadata_and_make =
set_header.header_metadata_and_make_jsonstr(strip(object["obj"]), dochead_metadata, dochead_make);
static assert(!isTypeTuple!(dochead_metadata_and_make));
@@ -1517,7 +1539,7 @@ mixin template SiSUdocAbstraction() {
processing.remove("verse");
} else if ((ft["header_metadata"] == 1)
&& (line_occur["header_metadata"] > 0)) {
- /* header_metadata (current line empty) */
+ /+ header_metadata (current line empty) +/
auto dochead_metadata_and_make =
set_header.header_metadata_and_make_jsonstr(strip(object["obj"]), dochead_metadata, dochead_make);
static assert(!isTypeTuple!(dochead_metadata_and_make));
@@ -1540,7 +1562,7 @@ mixin template SiSUdocAbstraction() {
processing.remove("verse");
} else if ((ft["heading"] == 1)
&& (line_occur["heading"] > 0)) {
- /* heading object (current line empty) */
+ /+ heading object (current line empty) +/
ocn = ocn_emit(ft["ocn_status"]);
object["bookindex"] =
("bookindex" in object) ? object["bookindex"] : "";
@@ -1561,7 +1583,7 @@ mixin template SiSUdocAbstraction() {
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
heading_pointer++;
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_heading(
ft["ocn_status"],
object["markup"],
@@ -1593,7 +1615,7 @@ mixin template SiSUdocAbstraction() {
processing.remove("verse");
counter++;
} else if ((ft["para"] == 1) && (line_occur["para"] > 0)) {
- /* paragraph object (current line empty) */
+ /+ paragraph object (current line empty) +/
ocn = ocn_emit(ft["ocn_status"]);
object["bookindex"] =
("bookindex" in object) ? object["bookindex"] : "";
@@ -1612,7 +1634,7 @@ mixin template SiSUdocAbstraction() {
obj_im.obj_inline_markup(object["is"], object["obj"]);
object["attrib"] =
obj_att.obj_attributes(object["is"], object["obj"], node);
- contents_arbitrary_max_length_set[counter] =
+ contents ~=
set_oa.contents_para(
object["is"],
object["markup"],
@@ -1651,47 +1673,52 @@ mixin template SiSUdocAbstraction() {
} // close else for line empty
} // close else for not the above
} // close after non code, other blocks or regular text
- if (((contents_arbitrary_max_length_set[counter-1]["is"] == "para")
- || (contents_arbitrary_max_length_set[counter-1]["is"] == "heading"))
+ if (((contents[$-1]["is"] == "para")
+ || (contents[$-1]["is"] == "heading"))
&& (counter-1 > previous_count)) {
- if (match(contents_arbitrary_max_length_set[counter-1]["obj"],
+ if (match(contents[$-1]["obj"],
rgx.inline_notes_delimiter_al_regular_number_note)) {
// endnotes/ footnotes for
// doc objects other than paragraphs & headings
// various forms of grouped text
- previous_count=counter-1;
- notesection.gather_notes_for_endnote_section(contents_arbitrary_max_length_set, counter-1);
+ previous_count=contents.length -1;
+ notesection.gather_notes_for_endnote_section(
+ contents,
+ contents.length -1
+ );
}
}
- } // closed: loop markup document/text line by line
- /* post loop markup document/text */
+ } /+ ← closed: loop markup document/text line by line +/
+ /+ ↓ post loop markup document/text +/
debug(objectrelated2) { // check
tell_l("blue", line);
}
- /*
+ /+
Backmatter:
* endnotes
* glossary
* references / bibliography
* book index
- */
+ +/
obj_im.obj_inline_markup("doc_end_reset", "");
auto en_tuple = notesection.endnote_objects(ocn);
static assert(!isTypeTuple!(en_tuple));
auto endnotes = en_tuple[0];
ocn = en_tuple[1];
debug(endnotes) {
- writeln(__LINE__, " ", endnotes.length);
+ writefln(
+ "%s %s",
+ __LINE__,
+ endnotes.length
+ );
foreach (n; endnotes) {
writeln(n);
}
}
- auto contents = contents_arbitrary_max_length_set[0..counter].dup;
- auto biblio_unsorted_incomplete = biblio_arr_json[0..count_biblio_entry].dup;
- // destroy(biblio_arr_json);
- auto biblio = new Bibliography();
- auto biblio_ordered = biblio.bibliography(biblio_unsorted_incomplete);
- auto bi = new BookIndexReportSection();
+ auto biblio_unsorted_incomplete = biblio_arr_json.dup;
+ auto biblio = Bibliography();
+ auto biblio_ordered = biblio.bibliography(biblio_unsorted_incomplete, bib_arr_json);
+ auto bi = BookIndexReportSection();
auto bi_tuple =
bi.bookindex_build_section(bookindex_unordered_hashes, ocn);
static assert(!isTypeTuple!(bi_tuple));
@@ -1739,10 +1766,10 @@ mixin template SiSUdocAbstraction() {
spc="";
break;
}
- writeln(
- spc, "* ", " ",
+ writefln(
+ "%s* $s\n %s",
+ spc,
strip(o["obj"]),
- "\n ",
o["attrib"]
);
// tell_l("yellow", spc, strip(o["obj"]));
diff --git a/lib/sdp/ao_assertions.d b/lib/sdp/ao_assertions.d
index 8cdbc87..2aa2c1d 100644
--- a/lib/sdp/ao_assertions.d
+++ b/lib/sdp/ao_assertions.d
@@ -1,7 +1,7 @@
-/*
+/+
assertions
ao_assertions.d
-*/
++/
mixin template AssertionsOnMarkupDocumentStructure() {
auto assertions_doc_structure(string[string] object, uint[string] lv) {
if (lv["h3"] > 0) {
@@ -107,7 +107,7 @@ mixin template AssertionsOnMarkupDocumentStructure() {
assert(lv["h5"] == 0);
assert(lv["h6"] == 0);
assert(lv["h7"] == 0);
- } else {
+ } else { // (lv["h0"] >0)
assert(lv["h0"] == 0,"error should not enter level A a second time");
}
break;
diff --git a/lib/sdp/ao_defaults.d b/lib/sdp/ao_defaults.d
index 50c1b09..166871b 100644
--- a/lib/sdp/ao_defaults.d
+++ b/lib/sdp/ao_defaults.d
@@ -1,7 +1,7 @@
-/*
+/+
defaults
ao_defaults.d
-*/
++/
template SiSUheader() {
auto header_make_jsonstr = `{
"make": {
@@ -165,7 +165,7 @@ template SiSUheader() {
auto config_jsonstr = `{
}`;
}
-/* regex flags */
+/+ regex flags +/
template SiSUrgxInitFlags() {
int[string] flag_type = [
"make_headings" : 0,
@@ -247,8 +247,76 @@ template SiSUbiblio() {
]; // is: book, article, magazine, newspaper, blog, other
}
template InternalMarkup() {
- class InternalMarkup {
+ struct InternalMarkup {
auto en_a_o = "【"; auto en_a_c = "】";
auto en_b_o = "〖"; auto en_b_c = "〗";
+ // auto segname_prefix_auto_num_extract = "c";
+ // auto segname_prefix_auto_num_provide = "s";
+ // auto segname_prefix_auto_num_other = "x";
+ // auto ocn_id_char = ""; //'o'; now as before; remove for html5
+ // auto note = "note_";
+ // auto note_ref = "noteref_";
+ // auto note_astx = "note_astx_";
+ // auto note_ref_astx = "noteref_astx_";
+ // auto note_plus = "note_plus_";
+ // auto note_ref_plus = "noteref_plus_";
+ // auto meta_o = "〔@"; auto meta_c = "〕";
+ // auto lv_o_0 = 0;
+ // auto lv_o_1 = 1;
+ // auto lv_o_2 = 2;
+ // auto lv_o_3 = 3;
+ // auto lv_o_4 = 4;
+ // auto lv_o_5 = 5;
+ // auto lv_o_6 = 6;
+ // auto lv_o_7 = 7;
+ // auto lv_o_8 = 8;
+ // auto lv_o_9 = 9;
+ // auto lv_o = "〔"; auto lv_c = "〕";
+ // auto bl_o = "〔"; auto bl_c = "〕"; // block text mark
+ // auto gr_o = "〔"; auto gr_c = "〕"; // group text mark #REPLACE & RETIRE
+ // auto id_o = "〔"; auto id_c = "〕"; // object id mark
+ // auto tc_o = "『"; auto tc_c = "』"; // table row mark #Mx[:tc_c]="』\n"
+ // auto tc_p = "┆'"
+ // auto pa_o = "〔"; auto pa_c = "〕"; // affects paragraph mark
+ // auto mk_o = "〔"; auto mk_c = "〕"; // generic mark
+ // auto gl_o = "〔"; auto gl_c = "〕"; // glyph
+ // auto fa_o = "〔"; auto fa_o_c = "¤"; auto fa_c_o = "¤"; auto fa_c = "〕";
+ // auto idx_o = "▩"; auto idx_c = "▩";
+ // auto nbsp = "░"; // '▭ '
+ // auto br_line = "╱"; // lB ▌ 9612 ┘ ¶
+ // auto br_nl = "╲"; // lB ▌ 』 ┘
+ // auto br_paragraph = "█"; // FB █ 9608 # PP ∥ 8741 #▐ #'┘' #'¶' #FB █ 9608 lB ▌ 9612 RB ▐ 9616
+ // auto br_obj = "break_obj";
+ // auto br_page_line = "▭";
+ // auto br_page = "┼";
+ // auto br_page_new = "╋";
+ // auto lnk_o = "⌠"; lnk_c = "⌡"; // '⌈' '⌋' '⌠' '⌡' #Mx[:lnk_o= '◁'; Mx[:lnk_c= '▷' #‹ ›
+ // auto url_o = "◘"; auto url_c = "◙";
+ // auto rel_o = "⌈"; auto rel_c = "⌋";
+ // auto tag_o = "⌊"; auto tag_c = "⌉";
+ // auto sm_set_o = "◢"; auto sm_set_c = "◣";
+ // auto sm_subset_o = "◢"; auto sm_subset_c = "◣";
+ // auto vline = "┆"; // ¦ |
+ // auto src_bold_o = "!{"; auto src_bold_c = "}!";
+ // auto src_italics_o = "/{"; auto src_italics_c = "}/";
+ // auto src_underscore_o = "_{"; auto src_underscore_c = "}_";
+ // auto src_cite_o = ""{"; auto src_cite_c = "}"";
+ // auto src_insert_o = "+{"; auto src_insert_c = "}+";
+ // auto src_strike_o = "-{"; auto src_strike_c = "}-";
+ // auto src_superscript_o = "^{"; auto src_superscript_c = "}^";
+ // auto src_subscript_o = ";{"; auto src_subscript_c = "}'"
+ // auto src_hilite_o = "*{"; auto src_hilite_c = "}*";
+ // auto src_monospace_o = "#{"; auto src_monospace_c = "}#";
+ // auto srcrgx_bold_o = "\\!\\{"; auto srcrgx_bold_c = "\\}\\!";
+ // auto srcrgx_italics_o = "\\/\\{"; auto srcrgx_italics_c = "\\}\\/";
+ // auto srcrgx_underscore_o = "_\\{"; auto srcrgx_underscore_c = "\\}_";
+ // auto srcrgx_cite_o = "\"\\{"; auto srcrgx_cite_c = "\\}\"";
+ // auto srcrgx_insert_o = "\\+\\{"; auto srcrgx_insert_c = "\\}\\+";
+ // auto srcrgx_strike_o = "\\-\\{"; auto srcrgx_strike_c = "\\}\\-";
+ // auto srcrgx_superscript_o = "\\^\\{"; auto srcrgx_superscript_c = "\\}\\^";
+ // auto srcrgx_subscript_o = ",\\{"; auto srcrgx_subscript_c = "\\},";
+ // auto srcrgx_hilite_o = "\\*\\{"; auto srcrgx_hilite_c = "\\}\\*";
+ // auto srcrgx_monospace_o = "\\#\\{"; auto srcrgx_monospace_c = "\\}\\#";
+ // ⊹
}
}
diff --git a/lib/sdp/ao_emitter.d b/lib/sdp/ao_emitter.d
index c9b1a7e..7ed9fa8 100644
--- a/lib/sdp/ao_emitter.d
+++ b/lib/sdp/ao_emitter.d
@@ -1,10 +1,10 @@
-/*
+/+
emitters
ao_emitters.d
-*/
++/
mixin template Emitters() {
mixin InternalMarkup;
- class CLI {
+ struct CLI {
string[string] extract_actions(string cmdlnins, string[string] actions)
in { }
body {
@@ -18,7 +18,8 @@ mixin template Emitters() {
return actions;
}
}
- class OCNemitter : AssertOCN {
+ struct OCNemitter {
+ // class OCNemitter : AssertOCN {
int ocn, ocn_;
int ocn_emitter(int ocn_status_flag)
in { assert(ocn_status_flag <= 2); }
@@ -28,17 +29,19 @@ mixin template Emitters() {
} else {
ocn=0;
}
+ assert(ocn >= 0);
return ocn;
}
invariant() {
}
}
- class ObjAttributes {
+ struct ObjAttributes {
+ // class ObjAttributes : AssertObjAttributes {
string[string] obj_txt;
string para_and_blocks(string obj_txt_in)
in { }
body {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
obj_txt["munge"]=obj_txt_in;
if (match(obj_txt_in, rgx.para_bullet)) {
obj_txt["attrib"] =" \"bullet\": \"true\","
@@ -81,6 +84,7 @@ mixin template Emitters() {
obj_txt["attrib"] = " \"use\": \"content\","
~ " \"of\": \"para\","
~ " \"is\": \"heading\"";
+ // obj_txt["struct"]=;
return obj_txt["attrib"];
}
invariant() {
@@ -185,7 +189,8 @@ mixin template Emitters() {
invariant() {
}
}
- class ObjInlineMarkupMunge {
+ struct ObjInlineMarkupMunge {
+ // struct ObjInlineMarkupMunge : AssertObjInlineMarkup {
string[string] obj_txt;
int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus;
string obj_txt_out, tail, note;
@@ -198,8 +203,8 @@ mixin template Emitters() {
private auto object_notes_(string obj_txt_in)
in { }
body {
- auto rgx = new Rgx();
- auto mkup = new InternalMarkup();
+ auto rgx = Rgx();
+ auto mkup = InternalMarkup();
obj_txt_out = "";
tail = "";
obj_txt_in = replaceAll(
@@ -237,6 +242,11 @@ mixin template Emitters() {
(mkup.en_a_o ~ to!string(n_foot))
);
tail = m.post;
+ // if (!empty(m.post)) {
+ // tail = m.post;
+ // } else {
+ // tail = "";
+ // }
}
} else {
obj_txt_out = obj_txt_in;
@@ -257,7 +267,7 @@ mixin template Emitters() {
string para(string obj_txt_in)
in { }
body {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
obj_txt["munge"]=obj_txt_in;
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.para_attribs, "");
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.ocn_off_all, "");
@@ -273,7 +283,7 @@ mixin template Emitters() {
string heading(string obj_txt_in)
in { }
body {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
obj_txt["munge"]=obj_txt_in;
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading, "");
obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.ocn_off_all, "");
@@ -364,8 +374,9 @@ mixin template Emitters() {
invariant() {
}
}
- class ObjInlineMarkup : AssertObjInlineMarkup {
- auto munge = new ObjInlineMarkupMunge();
+ struct ObjInlineMarkup {
+ // struct ObjInlineMarkup : AssertObjInlineMarkup {
+ auto munge = ObjInlineMarkupMunge();
string[string] obj_txt;
string obj_inline_markup(string obj_is_, string obj_raw)
in { }
@@ -419,13 +430,17 @@ mixin template Emitters() {
invariant() {
}
}
- class ObjAttrib : AssertObjAttrib {
- auto attrib = new ObjAttributes();
+ struct ObjAttrib {
+ // struct ObjAttrib : AssertObjAttrib {
+ // auto sink = appender!(char[])();
+ auto attrib = ObjAttributes();
string[string] obj_attrib;
string obj_attributes(string obj_is_, string obj_raw, string node)
in { }
body {
+ // string s = "{ \"language\": \"D\", \"rating\": 3.14, \"code\": \"42\" }";
scope(exit) {
+ // destroy(obj_is_);
destroy(obj_raw);
destroy(node);
}
@@ -493,20 +508,24 @@ mixin template Emitters() {
obj_attrib["json"] = oa_j.toString();
debug(structattrib) {
if (oa_j["is"].str() == "heading") {
+ // writeln(__LINE__);
writeln(obj_attrib["json"]);
+ // writeln(node);
writeln(
"is: ", oa_j["is"].str(),
"; ocn: ", oa_j["ocn"].integer()
);
}
}
+ // obj_attrib["json"]="{}";
return obj_attrib["json"];
}
invariant() {
}
}
- class HeaderDocMetadataMakeJson {
- auto rgx = new Rgx();
+ struct HeaderDocMetadataMakeJson {
+ // class HeaderMetadataMakeHash : AssertHeaderMetadataMakeJson {
+ auto rgx = Rgx();
string hm, hs;
auto header_metadata_and_make_jsonstr(
string header,
@@ -678,6 +697,15 @@ mixin template Emitters() {
case "links":
destroy(hm);
destroy(hs);
+ // if (match(hs, rgx.subhead_links)) {
+ // if (dochead_metadata[hm][hs].type() == JSON_TYPE.STRING) {
+ // dochead_metadata[hm][hs].str = to!string(s.captures[2]);
+ // }
+ // } else {
+ // writeln("not a valid header type:", hm, ":", hs);
+ // destroy(hm);
+ // destroy(hs);
+ // }
break;
default:
break;
@@ -694,9 +722,12 @@ mixin template Emitters() {
static assert(!isTypeTuple!(t));
return t;
}
+ // invariant() {
+ // }
}
class HeaderMetadataMakeHash {
- auto rgx = new Rgx();
+ // class HeaderMetadataMakeHash : AssertHeaderMetadataMakeHash {
+ auto rgx = Rgx();
string header_main;
string[string] head;
string[string] header_topic_hash(string header)
@@ -743,7 +774,8 @@ mixin template Emitters() {
invariant() {
}
}
- class BookIndexNuggetHash : AssertBookIndexNuggetHash {
+ struct BookIndexNuggetHash {
+ // class BookIndexNuggetHash : AssertBookIndexNuggetHash {
string main_term, sub_term, sub_term_bits;
uint ocn_offset, ocn_endpoint;
string[] ocns;
@@ -751,9 +783,19 @@ mixin template Emitters() {
string[][string][string] hash_nugget;
string[] bi_main_terms_split_arr;
string[][string][string] bookindex_nugget_hash(string bookindex, int ocn)
- in { }
+ in {
+ debug(bookindexraw) {
+ mixin ScreenTxtColors;
+ if (!bookindex.empty) {
+ writeln(
+ scr_txt_color["blue"], "* [bookindex] ", scr_txt_color["off"],
+ "[", to!string(ocn), "] ", bookindex
+ );
+ }
+ }
+ }
body {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
if (!bookindex.empty) {
auto bi_main_terms_split_arr =
split(bookindex, rgx.bi_main_terms_split);
@@ -796,15 +838,18 @@ mixin template Emitters() {
ocns=null;
}
}
+ // ocns=null;
}
}
hash_nugget = bi;
+ // bi=null; // bi.init; // use to empty for each next object; else, harvest hashes at the end of the document
return hash_nugget;
}
invariant() {
}
}
- class BookIndexReport {
+ struct BookIndexReport {
+ // class BookIndexReport : AssertBookIndexReport {
int mkn, skn;
auto bookindex_report_sorted(
string[][string][string] bookindex_unordered_hashes
@@ -822,13 +867,15 @@ mixin template Emitters() {
to!string(bookindex_unordered_hashes[mainkey][subkey])
);
}
+ // bookindex_the[mkn][mainkey][skn][subkey] ~= (bookindex_unordered_hashes[mainkey][subkey]);
skn++;
}
mkn++;
}
+ // return bookindex_the;
}
}
- class BookIndexReportIndent {
+ struct BookIndexReportIndent {
int mkn, skn;
auto bookindex_report_indented(
string[][string][string] bookindex_unordered_hashes
@@ -848,16 +895,17 @@ mixin template Emitters() {
bookindex_unordered_hashes[mainkey][subkey]
));
}
+ // bookindex_the[mkn][mainkey][skn][subkey] ~= (bookindex_unordered_hashes[mainkey][subkey]);
skn++;
}
mkn++;
}
}
}
- class BookIndexReportSection {
+ struct BookIndexReportSection {
mixin ObjectSetters;
int mkn, skn;
- auto rgx = new Rgx();
+ auto rgx = Rgx();
auto bookindex_write_section(
string[][string][string] bookindex_unordered_hashes
) {
@@ -894,19 +942,20 @@ mixin template Emitters() {
string attrib;
string indent_first;
string indent_second;
- auto set_oa = new ObjectAbstractSet();
+ auto set_oa = ObjectAbstractSet();
auto mainkeys =
bookindex_unordered_hashes.byKey.array.sort().release;
string bi_tmp;
- string[string][1024] bookindex_arbitrary_max_length_set;
+ string[string][] bookindex;
writeln(mainkeys.length);
+ // B~ Book Index
type_heading=1;
bi_tmp = "Book Index";
attrib="";
lev="B";
lvn="1";
lcn="1";
- bookindex_arbitrary_max_length_set[mkn] =
+ bookindex ~=
set_oa.contents_heading(
type_heading,
bi_tmp,
@@ -918,13 +967,14 @@ mixin template Emitters() {
);
ocn++;
mkn++;
+ // 1~ Index
type_heading=1;
bi_tmp = "Index";
attrib="";
lev="1";
lvn="4";
lcn="2";
- bookindex_arbitrary_max_length_set[mkn] =
+ bookindex ~=
set_oa.contents_heading(
type_heading,
bi_tmp,
@@ -938,6 +988,7 @@ mixin template Emitters() {
mkn++;
foreach (mainkey; mainkeys) {
bi_tmp = "!{" ~ mainkey ~ "}! ";
+ // bi_tmp = "_0_1 !{" ~ mainkey ~ "}! ";
foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
bi_tmp ~= " {" ~ ref_ ~ "}#" ~ go ~ ", ";
@@ -961,7 +1012,7 @@ mixin template Emitters() {
indent_first = "0";
indent_second = "1";
attrib="";
- bookindex_arbitrary_max_length_set[mkn] =
+ bookindex ~=
set_oa.contents_para(
type,
bi_tmp,
@@ -974,8 +1025,6 @@ mixin template Emitters() {
ocn++;
mkn++;
}
- auto bookindex =
- bookindex_arbitrary_max_length_set[0..mkn].dup;
auto t = tuple(bookindex, ocn);
return t;
}
@@ -985,7 +1034,8 @@ mixin template Emitters() {
auto mainkeys =
bookindex_unordered_hashes.byKey.array.sort().release;
string bi_tmp;
- string[1024] bookindex_arbitrary_max_length_set;
+ string[] bookindex;
+ // int bi_num;
writeln(mainkeys.length);
foreach (mainkey; mainkeys) {
bi_tmp = "_0_1 !{" ~ mainkey ~ "}! ";
@@ -999,6 +1049,7 @@ mixin template Emitters() {
bookindex_unordered_hashes[mainkey].byKey.array.sort().release;
foreach (subkey; subkeys) {
bi_tmp ~= subkey ~ ", ";
+ // bi_tmp ~= " " ~ subkey ~ ", ";
foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) {
auto go = replaceAll(ref_, rgx.book_index_go, "$1");
bi_tmp ~= " {" ~ ref_ ~ "}#" ~ go ~ ", ";
@@ -1007,23 +1058,21 @@ mixin template Emitters() {
skn++;
}
bi_tmp = replaceFirst(bi_tmp, rgx.trailing_linebreak, "");
- bookindex_arbitrary_max_length_set[mkn] = bi_tmp;
+ bookindex ~= bi_tmp;
mkn++;
}
- auto bookindex =
- bookindex_arbitrary_max_length_set[0..mkn].dup;
return bookindex;
}
}
- class NotesSection {
+ struct NotesSection {
mixin ObjectSetters;
string object_notes;
- int previous_count;
+ ulong previous_count;
int mkn;
- auto rgx = new Rgx();
+ auto rgx = Rgx();
private auto gather_notes_for_endnote_section(
- string[string][131072] contents_arbitrary_max_length_set,
- int counter
+ string[string][] contents_arbitrary_max_length_set,
+ ulong counter
)
in {
// endnotes/ footnotes for
@@ -1046,6 +1095,7 @@ mixin template Emitters() {
writeln(
"{^{", m.captures[1], ".}^}#noteref_", m.captures[1], " ",
m.captures[2]); // sometimes need segment name (segmented html & epub)
+ // writeln("{^{", m.captures[1], ".}^}#", contents_arbitrary_max_length_set[counter]["ocn"], " ", m.captures[2]);
}
object_notes ~=
"{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~
@@ -1067,21 +1117,23 @@ mixin template Emitters() {
in {
}
body {
- auto set_oa = new ObjectAbstractSet();
- string[string][1024] endnotes_arbitrary_max_length_set;
+ auto set_oa = ObjectAbstractSet();
+ string[string][] endnotes;
auto endnotes_ = gathered_notes();
+ // auto endnotes_ = (split(object_notes, rgx.break_string))[0..$-1];
string type;
int type_heading;
string lev, lvn, lcn;
string attrib;
string indent_first;
string indent_second;
+ // B~ Endnotes
type_heading=1;
attrib="";
lev="B";
lvn="1";
lcn="1";
- endnotes_arbitrary_max_length_set[mkn] =
+ endnotes ~=
set_oa.contents_heading(
type_heading,
"Endnotes",
@@ -1093,12 +1145,13 @@ mixin template Emitters() {
);
ocn++;
mkn++;
+ // 1~ Endnotes
type_heading=1;
attrib="";
lev="1";
lvn="4";
lcn="2";
- endnotes_arbitrary_max_length_set[mkn] =
+ endnotes ~=
set_oa.contents_heading(
type_heading,
"Endnotes",
@@ -1116,7 +1169,7 @@ mixin template Emitters() {
indent_first = "0";
indent_second = "0";
attrib="";
- endnotes_arbitrary_max_length_set[mkn] =
+ endnotes ~=
set_oa.contents_para(
type,
endnote,
@@ -1129,28 +1182,27 @@ mixin template Emitters() {
ocn++;
mkn++;
}
- auto endnotes =
- endnotes_arbitrary_max_length_set[0..mkn].dup;
auto t = tuple(endnotes, ocn);
return t;
}
}
- class Bibliography {
- public JSONValue[] bibliography(string[] biblio_unsorted_incomplete)
+ struct Bibliography {
+ public JSONValue[] bibliography(ref string[] biblio_unsorted_incomplete, ref JSONValue[] bib_arr_json)
in { }
body {
JSONValue[] biblio_unsorted =
- biblio_unsorted_complete(biblio_unsorted_incomplete);
+ biblio_unsorted_complete(biblio_unsorted_incomplete, bib_arr_json);
JSONValue[] biblio_sorted = biblio_sort(biblio_unsorted);
biblio_debug(biblio_sorted);
return biblio_sorted;
}
final private JSONValue[] biblio_unsorted_complete(
- string[] biblio_unordered
+ string[] biblio_unordered,
+ ref JSONValue[] bib_arr_json
) {
- JSONValue[1024] bib_arr_json;
- int count_biblio_entry;
- count_biblio_entry=0;
+ // JSONValue[] bib_arr_json;
+ // int count_biblio_entry;
+ // count_biblio_entry=0; // watch
foreach (bibent; biblio_unordered) {
// update bib to include deemed_author, needed for:
// sort_bibliography_array_by_deemed_author_year_title
@@ -1169,12 +1221,15 @@ mixin template Emitters() {
"; " ~
j["fulltitle"].str
);
+ // bib[count_biblio_entry] = j.toString();
}
- bib_arr_json[count_biblio_entry] = j;
- count_biblio_entry++;
+ bib_arr_json ~= j;
+ // count_biblio_entry++;
+ // bib_arr_json[count_biblio_entry] = j;
+ // count_biblio_entry++;
}
JSONValue[] biblio_unsorted_array_of_json_objects =
- bib_arr_json[0..(count_biblio_entry)].dup;
+ bib_arr_json.dup;
return biblio_unsorted_array_of_json_objects;
}
final private JSONValue[] biblio_sort(JSONValue[] biblio_unordered) {
@@ -1187,6 +1242,7 @@ mixin template Emitters() {
foreach (j; biblio_sorted) {
if (!empty(j["fulltitle"].str)) {
writeln(j["sortby_deemed_author_year_title"]);
+ // writeln(j["deemed_author"], " (", j["author"], ") ", j["fulltitle"]);
}
}
}
@@ -1202,7 +1258,8 @@ mixin template Emitters() {
}
}
}
- class NodeStructureMetadata : AssertNodeJSON {
+ struct NodeStructureMetadata {
+ // class NodeStructureMetadata : AssertNodeJSON {
int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7;
uint ocn;
uint[string] p_; // p_ parent_
@@ -1215,9 +1272,16 @@ mixin template Emitters() {
string is_
)
in {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
+ assert(is_ != "heading");
+ assert(to!int(ocn_) >= 0);
}
body {
+ // scope(failure) {
+ // writeln(__FILE__, ":", __LINE__, " failed here:");
+ // writeln(" is : ", is_);
+ // writeln(" node: ", node);
+ // }
assert(is_ != "heading"); // should not be necessary
assert(to!int(ocn_) >= 0); // should not be necessary
uint ocn=to!uint(ocn_);
@@ -1239,6 +1303,18 @@ mixin template Emitters() {
", \"parent_lvn\": " ~ to!string(p_["lvn"]) ~
" }"
);
+ debug(node) {
+ mixin ScreenTxtColors;
+ if (match(lvn, rgx.levels_numbered_headings)) {
+ writeln(scr_txt_marker["yellow"], to!string(node));
+ } else {
+ writeln(scr_txt_marker["white"], to!string(node));
+ }
+ }
+ JSONValue j = parseJSON(node);
+ assert(j["parent_lvn"].integer >= 4);
+ assert(j["parent_lvn"].integer <= 7);
+ assert(j["parent_ocn"].integer >= 0);
return node;
}
invariant() {
@@ -1252,9 +1328,28 @@ mixin template Emitters() {
string is_
)
in {
- auto rgx = new Rgx();
+ auto rgx = Rgx();
+ assert(is_ == "heading");
+ assert(to!uint(ocn_) >= 0);
+ assert(
+ match(lvn, rgx.levels_numbered),
+ ("not a valid heading level: " ~ lvn ~ " at " ~ to!string(ocn_))
+ );
+ // assert(to!uint(ocn_) >= 0);
+ if (match(lvn, rgx.levels_numbered)) {
+ if (to!uint(lvn) == 0) {
+ assert(to!uint(ocn_) == 1);
+ // writeln(lvn);
+ }
+ }
}
body {
+ // scope(failure) {
+ // writeln(__FILE__, ":", __LINE__, " failed here:");
+ // writeln(" is : ", is_);
+ // writeln(" node: ", node);
+ // }
+ auto rgx = Rgx();
uint ocn=to!uint(ocn_);
switch (lvn) { // switch (to!string(lv)) {
case "0":
@@ -1306,6 +1401,15 @@ mixin template Emitters() {
p_["lvn"] = 6; p_["ocn"] = lv6;
break;
default:
+ // if (lv7 > 0) {
+ // p_["lvn"] = 7; p_["ocn"] = lv7;
+ // } else if (lv6 > 0) {
+ // p_["lvn"] = 6; p_["ocn"] = lv6;
+ // } else if (lv5 > 0) {
+ // p_["lvn"] = 5; p_["ocn"] = lv5;
+ // } else {
+ // p_["lvn"] = 4; p_["ocn"] = lv4;
+ // }
break;
}
node=("{ " ~
@@ -1319,6 +1423,54 @@ mixin template Emitters() {
", \"parent_lvn\": " ~ to!string(p_["lvn"]) ~
" }"
);
+ debug(heading) {
+ mixin ScreenTxtColors;
+ if (match(lvn, rgx.levels_numbered_headings)) {
+ writeln(scr_txt_marker["yellow"], to!string(node));
+ }
+ }
+ debug(node) {
+ mixin ScreenTxtColors;
+ if (match(lvn, rgx.levels_numbered_headings)) {
+ writeln(scr_txt_marker["yellow"], to!string(node));
+ } else {
+ writeln(scr_txt_marker["white"], to!string(node));
+ }
+ }
+ JSONValue j = parseJSON(node);
+ assert(j["parent_lvn"].integer <= 7);
+ assert(j["parent_ocn"].integer >= 0);
+ if (match(lvn, rgx.levels_numbered_headings)) {
+ assert(j["lvn"].integer <= 7);
+ assert(j["ocn"].integer >= 0);
+ if (j["parent_lvn"].integer > 0) {
+ assert(j["parent_lvn"].integer < j["lvn"].integer);
+ if (j["ocn"].integer != 0) {
+ assert(j["parent_ocn"].integer < j["ocn"].integer);
+ }
+ }
+ if (j["lvn"].integer == 0) {
+ assert(j["parent_lvn"].integer == 0);
+ } else if (j["lvn"].integer == 1) {
+ assert(j["parent_lvn"].integer == 0);
+ } else if (j["lvn"].integer == 2) {
+ assert(j["parent_lvn"].integer == 1);
+ } else if (j["lvn"].integer == 3) {
+ assert(j["parent_lvn"].integer == 2);
+ } else if (j["lvn"].integer == 4) {
+ assert(j["parent_lvn"].integer <= 3);
+ } else if (j["lvn"].integer == 5) {
+ assert(j["parent_lvn"].integer == 4);
+ } else if (j["lvn"].integer == 6) {
+ assert(j["parent_lvn"].integer == 5);
+ } else if (j["lvn"].integer == 7) {
+ assert(j["parent_lvn"].integer == 6);
+ } else if (j["lvn"].integer == 8) {
+ // writeln(j["parent_lvn"].integer);
+ // assert(j["parent_lvn"].integer >= 4);
+ // assert(j["parent_lvn"].integer <= 7);
+ }
+ }
return node;
}
invariant() {
diff --git a/lib/sdp/ao_interface.d b/lib/sdp/ao_interface.d
deleted file mode 100644
index b50bee7..0000000
--- a/lib/sdp/ao_interface.d
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- interface
- ao_interface.d
-*/
-mixin template Interfaces() {
- interface AssertOCN {
- int ocn_emitter(int ocn_status_flag)
- in { assert(ocn_status_flag <= 2); }
- out(ocn) { assert(ocn >= 0); }
- }
- interface AssertObjInlineMarkup {
- string obj_inline_markup(string obj_raw, string obj_type_)
- in {
- }
- out(inline_markup) {
- }
- }
- interface AssertObjAttrib {
- string obj_attributes(string obj_raw, string node, string obj_type_)
- in {
- }
- out(obj_attrib_json) {
- }
- }
- interface AssertBookIndexNuggetHash {
- string[][string][string] bookindex_nugget_hash(string bookindex, int ocn)
- in {
- debug(bookindexraw) {
- mixin ScreenTxtColors;
- if (!bookindex.empty) {
- writeln(
- scr_txt_color["blue"], "* [bookindex] ", scr_txt_color["off"],
- "[", to!string(ocn), "] ", bookindex
- );
- }
- }
- }
- out(hash_nugget) {
- }
- }
- interface AssertBookIndexReport {
- string[][string][][string][] bookindex_nugget_hash(string[][string][string] bookindex_unordered_hashes)
- in {
- }
- }
- interface AssertNodeJSON {
- string node_emitter(
- string lvn,
- int ocn_,
- int counter_,
- int pointer_,
- string is_
- )
- in {
- auto rgx = new Rgx();
- assert(is_ != "heading");
- assert(to!int(ocn_) >= 0);
- }
- out(node) {
- debug(node) {
- mixin ScreenTxtColors;
- if (match(lvn, rgx.levels_numbered_headings)) {
- writeln(scr_txt_marker["yellow"], to!string(node));
- } else {
- writeln(scr_txt_marker["white"], to!string(node));
- }
- }
- JSONValue j = parseJSON(node);
- assert(j["parent_lvn"].integer >= 4);
- assert(j["parent_lvn"].integer <= 7);
- assert(j["parent_ocn"].integer >= 0);
- }
- string node_emitter_heading(
- string lvn,
- string lcn,
- int ocn_,
- int counter_,
- int pointer_,
- string is_
- )
- in {
- auto rgx = new Rgx();
- assert(is_ == "heading");
- assert(to!uint(ocn_) >= 0);
- assert(
- match(lvn, rgx.levels_numbered),
- ("not a valid heading level: " ~ lvn ~ " at " ~ to!string(ocn_))
- );
- if (match(lvn, rgx.levels_numbered)) {
- if (to!uint(lvn) == 0) {
- assert(to!uint(ocn_) == 1);
- }
- }
- }
- out(node) {
- auto rgx = new Rgx();
- debug(heading) {
- mixin ScreenTxtColors;
- if (match(lvn, rgx.levels_numbered_headings)) {
- writeln(scr_txt_marker["yellow"], to!string(node));
- }
- }
- debug(node) {
- mixin ScreenTxtColors;
- if (match(lvn, rgx.levels_numbered_headings)) {
- writeln(scr_txt_marker["yellow"], to!string(node));
- } else {
- writeln(scr_txt_marker["white"], to!string(node));
- }
- }
- JSONValue j = parseJSON(node);
- assert(j["parent_lvn"].integer <= 7);
- assert(j["parent_ocn"].integer >= 0);
- if (match(lvn, rgx.levels_numbered_headings)) {
- assert(j["lvn"].integer <= 7);
- assert(j["ocn"].integer >= 0);
- if (j["parent_lvn"].integer > 0) {
- assert(j["parent_lvn"].integer < j["lvn"].integer);
- if (j["ocn"].integer != 0) {
- assert(j["parent_ocn"].integer < j["ocn"].integer);
- }
- }
- if (j["lvn"].integer == 0) {
- assert(j["parent_lvn"].integer == 0);
- } else if (j["lvn"].integer == 1) {
- assert(j["parent_lvn"].integer == 0);
- } else if (j["lvn"].integer == 2) {
- assert(j["parent_lvn"].integer == 1);
- } else if (j["lvn"].integer == 3) {
- assert(j["parent_lvn"].integer == 2);
- } else if (j["lvn"].integer == 4) {
- assert(j["parent_lvn"].integer <= 3);
- } else if (j["lvn"].integer == 5) {
- assert(j["parent_lvn"].integer == 4);
- } else if (j["lvn"].integer == 6) {
- assert(j["parent_lvn"].integer == 5);
- } else if (j["lvn"].integer == 7) {
- assert(j["parent_lvn"].integer == 6);
- } else if (j["lvn"].integer == 8) {
- }
- }
- }
- }
-}
diff --git a/lib/sdp/ao_object_setter.d b/lib/sdp/ao_object_setter.d
index ff76143..ce4611d 100644
--- a/lib/sdp/ao_object_setter.d
+++ b/lib/sdp/ao_object_setter.d
@@ -1,10 +1,21 @@
-/*
+/+
object setter
ao_object_setter.d
-*/
++/
mixin template ObjectSetters() {
- class ObjectAbstractSet {
+ struct ObjectAbstractSet {
import std.conv : to;
+ mixin Structs;
+ ObjComposite contents_comment_new(in string object) {
+ ObjComposite object_set;
+ object_set.use = "comment";
+ object_set.of = "comment";
+ object_set.is_a = "comment";
+ object_set.object = object;
+ // does not have .attrib;
+ // does not have .ocn
+ return object_set;
+ }
string[string] contents_comment(in string object) {
string[string] object_set;
object_set["use"] = "comment";
@@ -13,6 +24,28 @@ mixin template ObjectSetters() {
object_set["obj"] = object;
return object_set;
}
+ ObjComposite contents_heading_new(
+ in int type,
+ in string object,
+ in string attrib,
+ in int ocn,
+ in string lev,
+ in string lvn,
+ in string lcn,
+ ) {
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "heading";
+ object_set.object = object;
+ object_set.ocn = (ocn==0) ? "" : to!string(ocn);
+ object_set.attrib = attrib;
+ object_set.heading.type = to!string(type);
+ object_set.heading.lev = to!string(lev);
+ object_set.heading.lvn = to!string(lvn);
+ object_set.heading.lcn = to!string(lcn);
+ return object_set;
+ }
string[string] contents_heading(
in int type,
in string object,
@@ -35,8 +68,29 @@ mixin template ObjectSetters() {
object_set["attrib"] = attrib;
return object_set;
}
+ ObjComposite contents_para_new(
+ in string is_a,
+ in string object,
+ in string attrib,
+ in int ocn,
+ in string indent_first,
+ in string indent_second,
+ in bool bullet
+ ) {
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "heading";
+ object_set.object = object;
+ object_set.ocn = (ocn==0) ? "" : to!string(ocn);
+ object_set.attrib = attrib;
+ object_set.para.indent_first = indent_first;
+ object_set.para.indent_second = indent_second;
+ object_set.para.bullet = to!string(bullet);
+ return object_set;
+ }
string[string] contents_para(
- in string type,
+ in string is_a,
in string object,
in string attrib,
in int ocn,
@@ -47,7 +101,7 @@ mixin template ObjectSetters() {
string[string] object_set;
object_set["use"] = "content";
object_set["of"] = "para";
- object_set["is"] = type;
+ object_set["is"] = is_a;
object_set["obj"] = object;
object_set["ocn"] = (ocn==0) ? "" : to!string(ocn);
object_set["indent_first"] = indent_first;
@@ -56,6 +110,22 @@ mixin template ObjectSetters() {
object_set["attrib"] = attrib;
return object_set;
}
+ ObjComposite contents_block_new(
+ in string type,
+ in string object,
+ in string attrib,
+ in int ocn
+ ) {
+ ObjComposite object_set;
+ // does not have .attrib;
+ object_set.use = "content";
+ object_set.of = "block";
+ object_set.is_a = type;
+ object_set.object = object;
+ object_set.ocn = (ocn==0) ? "" : to!string(ocn);
+ object_set.attrib = attrib;
+ return object_set;
+ }
string[string] contents_block(
in string type,
in string object,
@@ -71,6 +141,22 @@ mixin template ObjectSetters() {
object_set["attrib"] = attrib;
return object_set;
}
+ ObjComposite contents_block_ocn_string_new(
+ in string type,
+ in string object,
+ in string ocn,
+ in string node
+ ) {
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "block";
+ object_set.is_a = type;
+ object_set.object = object;
+ object_set.ocn = ocn;
+ object_set.block_ocn_string.node = node;
+ // object_set.attrib = attrib;
+ return object_set;
+ }
string[string] contents_block_ocn_string(
in string type,
in string object,
diff --git a/lib/sdp/ao_output_debugs.d b/lib/sdp/ao_output_debugs.d
index c6bdfe1..d2c2c73 100644
--- a/lib/sdp/ao_output_debugs.d
+++ b/lib/sdp/ao_output_debugs.d
@@ -1,9 +1,9 @@
-/*
+/+
output debugs
ao_output_debugs.d
-*/
++/
template SiSUoutputDebugs() {
- class SDPoutputDebugs {
+ struct SDPoutputDebugs {
auto abstract_doc_source_debugs(
string[string][] contents,
JSONValue[string] docmake,
@@ -15,13 +15,19 @@ template SiSUoutputDebugs() {
) {
mixin RgxInit;
mixin ScreenTxtColors;
- auto rgx = new Rgx();
+ auto rgx = Rgx();
debug(parent) {
- writeln(__FILE__, ":", __LINE__);
+ writefln(
+ "%s:%s",
+ __FILE__,
+ __LINE__,
+ );
foreach (obj; contents) {
if (obj["use"] == "content") {
if (obj["is"] == "heading") {
- writeln(scr_txt_marker["cyan"],
+ writefln(
+ "%s%s node: %s heading: %s %s",
+ scr_txt_marker["cyan"],
obj["ocn"],
" node: ", obj["node"],
" heading: ", obj["lvn"],
@@ -32,15 +38,38 @@ template SiSUoutputDebugs() {
}
}
}
+ debug(dumpdoc) {
+ writefln(
+ "%s\n%s:%s",
+ "-------------------------------",
+ __FILE__,
+ __LINE__,
+ );
+ foreach (obj; contents) {
+ if (obj["use"] == "content") {
+ writefln(
+ "[%s][%s]\n%s",
+ obj["ocn"],
+ obj["is"],
+ obj["obj"]
+ );
+ }
+ }
+ }
debug(objects) {
- writeln("-------------------------------");
- writeln(__FILE__, ":", __LINE__);
+ writefln(
+ "%s\n%s:%s",
+ "-------------------------------",
+ __FILE__,
+ __LINE__,
+ );
foreach (obj; contents) {
if (obj["use"] == "content") {
- writeln(
+ writefln(
+ "%s* [%s][%s] %s%s",
scr_txt_color["green"],
- "* [", obj["ocn"], "]",
- "[", obj["is"], "] ",
+ obj["ocn"],
+ obj["is"],
scr_txt_color["off"],
obj["obj"]
);
@@ -48,17 +77,21 @@ template SiSUoutputDebugs() {
}
}
debug(headermakejson) {
- writeln("document header, metadata & make instructions:");
- writeln(dochead);
- writeln(pointer_head_main);
+ writefln(
+ "%s\n%s\n%s",
+ "document header, metadata & make instructions:",
+ dochead,
+ pointer_head_main,
+ );
foreach (main_header; pointer_head_main) {
switch (main_header) {
case "make":
foreach (sub_header; pointer_head_sub_make) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(
- main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -70,16 +103,21 @@ template SiSUoutputDebugs() {
}
}
debug(headermetadatajson) {
- writeln("document header, metadata & make instructions:");
- writeln(dochead);
- writeln(pointer_head_main);
+ writefln(
+ "%s\n%s\n%s",
+ "document header, metadata & make instructions:",
+ dochead,
+ pointer_head_main,
+ );
foreach (main_header; pointer_head_main) {
switch (main_header) {
case "creator":
foreach (sub_header; pointer_head_sub_creator) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -88,8 +126,10 @@ template SiSUoutputDebugs() {
case "title":
foreach (sub_header; pointer_head_sub_title) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -98,8 +138,10 @@ template SiSUoutputDebugs() {
case "rights":
foreach (sub_header; pointer_head_sub_rights) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -108,8 +150,10 @@ template SiSUoutputDebugs() {
case "date":
foreach (sub_header; pointer_head_sub_date) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -118,8 +162,10 @@ template SiSUoutputDebugs() {
case "original":
foreach (sub_header; pointer_head_sub_original) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -128,8 +174,10 @@ template SiSUoutputDebugs() {
case "classify":
foreach (sub_header; pointer_head_sub_classify) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -138,8 +186,10 @@ template SiSUoutputDebugs() {
case "identifier":
foreach (sub_header; pointer_head_sub_identifier) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -148,8 +198,10 @@ template SiSUoutputDebugs() {
case "notes":
foreach (sub_header; pointer_head_sub_notes) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -158,8 +210,10 @@ template SiSUoutputDebugs() {
case "publisher":
foreach (sub_header; pointer_head_sub_publisher) {
if (to!string(dochead[main_header][sub_header]).length > 2) {
- writeln(main_header, ":",
- sub_header, ": ",
+ writefln(
+ "%s:%s: %s",
+ main_header,
+ sub_header,
dochead[main_header][sub_header]
);
}
@@ -171,9 +225,13 @@ template SiSUoutputDebugs() {
}
}
debug(bookindex) {
- writeln("-------------------------------");
- writeln(__FILE__, ":", __LINE__);
- auto bookindex = new BookIndexReport();
+ writefln(
+ "%s\n%s:%s",
+ "-------------------------------",
+ __FILE__,
+ __LINE__,
+ );
+ auto bookindex = BookIndexReport();
bookindex.bookindex_report_sorted(bookindex_unordered_hashes);
}
debug(summary) {
@@ -190,28 +248,39 @@ template SiSUoutputDebugs() {
}
}
debug(headings) {
- writeln("-------------------------------");
- writeln(__FILE__, ":", __LINE__);
+ writefln(
+ "%s\n%s:%s",
+ "-------------------------------",
+ __FILE__,
+ __LINE__,
+ );
foreach (obj; contents) {
if (obj["is"] == "heading") {
- writeln(
+ writefln(
+ "%s%s~ [%s] %s",
scr_txt_marker["yellow"],
- obj["lev"], "~ ",
- "[", obj["ocn"], "] ",
+ obj["lev"],
+ obj["ocn"],
+ // "[", obj["is"], "] ",
obj["obj"]
);
}
}
}
- writeln(
+ writefln(
+ "%s%s%s\n%s\n%s%s\n%s%s\n%s%s\n%s:%s",
scr_txt_color["green"],
"-------------------------------",
scr_txt_color["off"],
- "\n", fn_src,
- "\nlength contents array: ", contents.length,
- "\nlast ocn: ", check["last_ocn"],
- "\nlength bookindex: ", bookindex_unordered_hashes.length,
- "\n", __FILE__, ":", __LINE__,
+ fn_src,
+ "length contents array: ",
+ contents.length,
+ "last ocn: ",
+ check["last_ocn"],
+ "length bookindex: ",
+ bookindex_unordered_hashes.length,
+ __FILE__,
+ __LINE__,
);
debug(checkdoc) {
if (auto mfn=match(fn_src, rgx.src_fn)) {
diff --git a/lib/sdp/ao_read_markup_source.d b/lib/sdp/ao_read_markup_source.d
index 1c574ea..6eaecbe 100644
--- a/lib/sdp/ao_read_markup_source.d
+++ b/lib/sdp/ao_read_markup_source.d
@@ -1,10 +1,10 @@
-/*
+/+
read markup source
ao_read_markup_source.d
-*/
++/
mixin template SiSUmarkupRaw() {
- class MarkupRaw {
- auto rgx = new Rgx();
+ struct MarkupRaw {
+ auto rgx = Rgx();
final private string markupSourceString(in char[] fn_src) {
enforce(
exists(fn_src)!=0,
diff --git a/lib/sdp/ao_rgx.d b/lib/sdp/ao_rgx.d
index 7050d25..4c36ff9 100644
--- a/lib/sdp/ao_rgx.d
+++ b/lib/sdp/ao_rgx.d
@@ -1,10 +1,10 @@
-/*
+/+
regex
ao_rgx.d
-*/
++/
mixin template RgxInit() {
- class Rgx {
- /* misc */
+ struct Rgx {
+ /+ misc +/
static flag_action = ctRegex!(`^(--[a-z][a-z0-9-]+)$`);
static flag_action_str = ctRegex!(` (--[a-z][a-z0-9-]+)`);
static src_pth = ctRegex!(`^([a-zA-Z0-9._-]+/)*([a-zA-Z0-9._-]+[.]ss[tm])$`);
@@ -25,19 +25,19 @@ mixin template RgxInit() {
static levels_markup = ctRegex!(`^[A-D1-4]$`);
static levels_numbered = ctRegex!(`^[0-9]$`);
static levels_numbered_headings = ctRegex!(`^[0-7]$`);
- /* insert markup file */
+ /+ insert markup file +/
static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);
// static insert_ssi_or_sst_fn = ctRegex!(`^<<\s*[a-zA-Z0-9._-]+[.]ss[ti]`);
- /* comments */
+ /+ comments +/
static comment = ctRegex!(`^%+ `);
- /* header */
+ /+ header +/
static header = ctRegex!(`^@([a-z_]+):(?:\s|$)`);
static header_make = ctRegex!(`^@(make):(?:\s|$)`);
static header_metadata = ctRegex!(`^@([a-z_]+):(?:\s|$)`);
static header_sub = ctRegex!(`^[ ]+:([a-z_]+):\s`);
static head_main = ctRegex!(`^@([a-z_]+):\s*(.*)`, "m");
static head_sub = ctRegex!(`^[ ]*:([a-z_]+):\s+(.+)`, "m");
- /* heading & paragraph operators */
+ /+ heading & paragraph operators +/
static heading = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?) `);
static heading_marker = ctRegex!(`^:?([A-D1-4])[~]`);
static heading_title = ctRegex!(`^:?[A-D1-4][~][a-z0-9_.-]*[?]?\s+(.+?)$`);
@@ -49,7 +49,7 @@ mixin template RgxInit() {
static para_indent = ctRegex!(`^_([1-9]) `);
static para_indent_hang = ctRegex!(`^_([0-9])_([0-9]) `);
static para_attribs = ctRegex!(`^_(([0-9])(_([0-9]))?|_([1-9])?[*]) `);
- /* blocked markup tics */
+ /+ blocked markup tics +/
static block_tic_code_open = ctRegex!("^`{3} (code)");
static block_tic_poem_open = ctRegex!("^`{3} (poem)");
static block_tic_group_open = ctRegex!("^`{3} (group)");
@@ -57,7 +57,7 @@ mixin template RgxInit() {
static block_tic_quote_open = ctRegex!("^`{3} (quote)");
static block_tic_table_open = ctRegex!("^`{3} (table)");
static block_tic_close = ctRegex!("^(`{3})$","m");
- /* blocked markup curly */
+ /+ blocked markup curly +/
static block_curly_code_open = ctRegex!(`^(code[{].*?$)`);
static block_curly_code_close = ctRegex!(`^([}]code)`);
static block_curly_poem_open = ctRegex!(`^(poem[{].*?$)`);
@@ -70,7 +70,7 @@ mixin template RgxInit() {
static block_curly_quote_close = ctRegex!(`^([}]quote)`);
static block_curly_table_open = ctRegex!(`^(table[{].*?$)`);
static block_curly_table_close = ctRegex!(`^([}]table)`);
- /* inline markup font face mod */
+ /+ inline markup font face mod +/
static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`);
static inline_bold = ctRegex!(`!\{(?P<text>.+?)\}!`);
static inline_italics = ctRegex!(`/\{(?P<text>.+?)\}/`);
@@ -79,7 +79,7 @@ mixin template RgxInit() {
static inline_strike = ctRegex!(`-\{(?P<text>.+?)\}-`);
static inline_insert = ctRegex!(`\+\{(?P<text>.+?)\}\+`);
static inline_mono = ctRegex!(`#\{(?P<text>.+?)\}#`);
- /* inline markup footnotes */
+ /+ inline markup footnotes +/
static true_dollar = ctRegex!(`\$`, "gm");
static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");
static inline_notes_al_gen = ctRegex!(`【.+?】`, "m");
@@ -106,23 +106,23 @@ mixin template RgxInit() {
static inline_text_and_note_square_sp = ctRegex!(`(.+?)~\[[*+]+\s+(.+?)\]~`, "mg");
static inline_text_and_note_square = ctRegex!(`(.+?)~\[\s*(.+?)\]~`, "mg");
static inline_note_square_delimiters = ctRegex!(`(~\[\s*)(.+?)(\]~)`, "mg");
- /* inline markup book index */
+ /+ inline markup book index +/
static book_index = ctRegex!(`^=\{\s*(.+?)\}$`, "m");
static book_index_open = ctRegex!(`^=\{\s*([^}]+?)$`);
static book_index_close = ctRegex!(`^(.*?)\}$`, "m"); // strip
- /* no ocn object */
+ /+ no ocn object +/
static ocn_off = ctRegex!(`~#$`, "m");
static ocn_off_dh = ctRegex!(`-#$`, "m");
static ocn_off_all = ctRegex!(`[~-]#$`, "m");
- /* no ocn block */
+ /+ no ocn block +/
static ocn_off_block = ctRegex!(`^--~#$`);
static ocn_off_block_dh = ctRegex!(`^---#$`);
static ocn_off_block_close = ctRegex!(`^--\+#$`);
// static auto_ocn_ignore = ctRegex!(`^[+~*$-]{3,}$`); // reminder
static ocn_block_marks = ctRegex!(`^--[+~-]#$`);
- /* ignore outside code blocks */
+ /+ ignore outside code blocks +/
static regular_parse_skip = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`); // not structural info
- /* line & page breaks */
+ /+ line & page breaks +/
static break_line_within_object = ctRegex!(`[\\]{2}( |$)`);
// static break_line_break_within_object = ctRegex!(`( |^)[\\]{2}( |$)`);
static break_page = ctRegex!(`^-[\\]{2}-$`);
@@ -131,9 +131,9 @@ mixin template RgxInit() {
static break_string = ctRegex!(`』`);
// ancestry, parent
static parent = ctRegex!(`([0-7]):([0-9]+)`);
- /* json */
+ /+ json +/
static tailing_comma = ctRegex!(`,$`, "m");
- /* head */
+ /+ head +/
static main_headers = ctRegex!(`^(?:creator|title|rights|date|original|classify|identifier|notes|publisher|make|links)$`, "m");
static subhead_creator = ctRegex!(`^(?:author|translator|illustrator)$`, "m");
static subhead_title = ctRegex!(`^(?:main|sub(?:title)?|full|language|edition|note)$`, "m");
@@ -145,10 +145,10 @@ mixin template RgxInit() {
static subhead_notes = ctRegex!(`^(?:abstract|description)$`, "m");
static subhead_publisher = ctRegex!(`^(?:name)$`, "m");
static subhead_make = ctRegex!(`^(?:cover_image|home_button_image|home_button_text|footer|headings|num_top|breaks|substitute|bold|italics|emphasis|texpdf_font|css)$`, "m");
- /* biblio tags */
+ /+ biblio tags +/
static biblio_tags = ctRegex!(`^(is|au|author_raw|author|author_arr|editor_raw|ed|editor_arr|ti|title|subtitle|fulltitle|lng|language|trans|src|jo|journal|in|vol|volume|edn|edition|yr|year|pl|place|pb|pub|publisher|url|pg|pages|note|short_name|id):\s+(.+)`);
static biblio_abbreviations = ctRegex!(`^(au|ed|ti|lng|jo|vol|edn|yr|pl|pb|pub|pg|pgs|sn)$`);
- /* bookindex split */
+ /+ bookindex split +/
static bi_main_terms_split = ctRegex!(`\s*;\s*`);
static bi_main_term_plus_rest_split = ctRegex!(`\s*:\s*`);
static bi_sub_terms_plus_ocn_offset_split = ctRegex!(`\s*\|\s*`);
diff --git a/lib/sdp/ao_scan_inserts.d b/lib/sdp/ao_scan_inserts.d
index 54abb8f..f70b2e7 100644
--- a/lib/sdp/ao_scan_inserts.d
+++ b/lib/sdp/ao_scan_inserts.d
@@ -3,20 +3,16 @@
ao_inserts.d
+/
mixin template SiSUdocInserts() {
- class Inserts {
+ private:
+ struct Inserts {
auto scan_subdoc_source(
- char[][] markup_sourcefile_insert_content, string fn_src, int add
+ char[][] markup_sourcefile_insert_content,
+ string fn_src
) {
- char[][100000] cont_arbitrary_max_length_set_;
- auto ft0 = flag_type.dup;
+ char[][] contents_insert;
auto ft1 = flag_type.dup;
- string[string] processing;
- uint[string] line_occur;
- auto obj_im = new ObjInlineMarkup();
- auto obj_att = new ObjAttrib();
- int[string] counter; counter["add"]=0;
mixin ScreenTxtColors;
- auto rgx = new Rgx();
+ auto rgx = Rgx();
int tell_l(string color, in char[] line) {
writeln(scr_txt_marker[color], line);
return 0;
@@ -30,44 +26,36 @@ mixin template SiSUdocInserts() {
if (auto m = match(line, rgx.block_curly_code_close)) {
ft1["curly_code"] = 0;
}
- cont_arbitrary_max_length_set_[counter["add"]] = line;
- ++counter["add"]; ++add;
+ contents_insert ~= line;
} else if (auto m = match(line, rgx.block_curly_code_open)) {
ft1["curly_code"] = 1;
ft1["header_make"] = 0;
ft1["header_metadata"] = 0;
- cont_arbitrary_max_length_set_[counter["add"]] = line;
- ++counter["add"]; ++add;
+ contents_insert ~= line;
} else if (ft1["tic_code"] == 1) {
ft1["header_make"] = 0;
ft1["header_metadata"] = 0;
if (auto m = match(line, rgx.block_tic_close)) {
ft1["tic_code"] = 0;
}
- cont_arbitrary_max_length_set_[counter["add"]] = line;
- ++counter["add"]; ++add;
+ contents_insert ~= line;
} else if (auto m = match(line, rgx.block_tic_code_open)) {
ft1["tic_code"] = 1;
ft1["header_make"] = 0;
ft1["header_metadata"] = 0;
- cont_arbitrary_max_length_set_[counter["add"]] = line;
- ++counter["add"]; ++add;
+ contents_insert ~= line;
} else if (
- (ft1["header_make"] == 1) && (line_occur["header_make"] > 0)
+ (ft1["header_make"] == 1)
&& match(line, rgx.header_sub)
) {
ft1["header_make"] = 1;
ft1["header_metadata"] = 0;
- ++line_occur["header_make"];
- ++counter["add"];
} else if (
- (ft1["header_metadata"] == 1) && (line_occur["header_metadata"] > 0)
+ (ft1["header_metadata"] == 1)
&& match(line, rgx.header_sub)
) {
ft1["header_metadata"] = 1;
ft1["header_make"] = 0;
- ++line_occur["header_metadata"];
- ++counter["add"];
} else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) {
ft1["header_make"] = 0;
ft1["header_metadata"] = 0;
@@ -75,7 +63,7 @@ mixin template SiSUdocInserts() {
auto insert_sub_pth = m.captures[1];
auto fn_src_insert =
(markup_src_file_path ~ insert_sub_pth ~ insert_fn);
- auto raw = new MarkupRaw();
+ auto raw = MarkupRaw();
auto markup_sourcesubfile_insert_content =
raw.markupInsertSourceContentRawLineArray(fn_src_insert);
debug(insert) { // insert file
@@ -87,7 +75,7 @@ mixin template SiSUdocInserts() {
markup_sourcesubfile_insert_content.length
);
}
- auto ins = new Inserts();
+ auto ins = Inserts();
/+
1. load file,
2. read lines;
@@ -100,24 +88,19 @@ mixin template SiSUdocInserts() {
} else {
ft1["header_make"] = 0;
ft1["header_metadata"] = 0;
- cont_arbitrary_max_length_set_[counter["add"]] = line;
- ++counter["add"]; ++add;
+ contents_insert ~= line;
}
} // end src subdoc (inserts) loop
- auto contents_ = cont_arbitrary_max_length_set_[0 .. counter["add"]].dup;
- auto t = tuple(contents_, add);
- return t;
+ return contents_insert;
}
- auto scan_doc_source(char[][] markup_sourcefile_content, string fn_src) {
- char[][100000] cont_arbitrary_max_length_set; // 2000 pg * 50 lines
- string[string] processing;
- uint[string] line_occur;
- auto obj_im = new ObjInlineMarkup();
- auto obj_att = new ObjAttrib();
+ auto scan_doc_source(
+ char[][] markup_sourcefile_content,
+ string fn_src
+ ) {
+ char[][] contents;
auto ft = flag_type.dup;
- int add;
mixin ScreenTxtColors;
- auto rgx = new Rgx();
+ auto rgx = Rgx();
int tell_l(string color, in char[] line) {
writeln(scr_txt_marker[color], line);
return 0;
@@ -131,49 +114,42 @@ mixin template SiSUdocInserts() {
if (auto m = match(line, rgx.block_curly_code_close)) {
ft["curly_code"] = 0;
}
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
} else if (auto m = match(line, rgx.block_curly_code_open)) {
ft["curly_code"] = 1;
ft["header_make"] = 0;
ft["header_metadata"] = 0;
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
} else if (ft["tic_code"] == 1) {
ft["header_make"] = 0;
ft["header_metadata"] = 0;
if (auto m = match(line, rgx.block_tic_close)) {
ft["tic_code"] = 0;
}
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
} else if (auto m = match(line, rgx.block_tic_code_open)) {
ft["tic_code"] = 1;
ft["header_make"] = 0;
ft["header_metadata"] = 0;
- cont_arbitrary_max_length_set[add] = line;
- } else if ((ft["header_make"] == 1)
- && (line_occur["header_make"] > 0)
- && match(line, rgx.header_sub)) {
- ++line_occur["header_make"];
- cont_arbitrary_max_length_set[add] = line;
- ++add;
- } else if ((ft["header_metadata"] == 1)
- && (line_occur["header_metadata"] > 0)
- && match(line, rgx.header_sub)) {
- ++line_occur["header_metadata"];
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
+ } else if (
+ (ft["header_make"] == 1)
+ && match(line, rgx.header_sub)
+ ) {
+ contents ~= line;
+ } else if (
+ (ft["header_metadata"] == 1)
+ && match(line, rgx.header_sub)
+ ) {
+ contents ~= line;
} else if (auto m = match(line, rgx.header_make)) {
ft["header_make"] = 1;
- ++line_occur["header_make"];
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ ft["header_metadata"] = 0;
+ contents ~= line;
} else if (auto m = match(line, rgx.header_metadata)) {
+ ft["header_make"] = 0;
ft["header_metadata"] = 1;
- ++line_occur["header_metadata"];
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
} else if (auto m = match(line, rgx.insert_src_fn_ssi_or_sst)) {
ft["header_make"] = 0;
ft["header_metadata"] = 0;
@@ -181,7 +157,7 @@ mixin template SiSUdocInserts() {
auto insert_sub_pth = m.captures[1];
auto fn_src_insert =
(markup_src_file_path ~ insert_sub_pth ~ insert_fn);
- auto raw = new MarkupRaw();
+ auto raw = MarkupRaw();
auto markup_sourcefile_insert_content =
raw.markupInsertSourceContentRawLineArray(fn_src_insert);
debug(insert) { // insert file
@@ -192,15 +168,12 @@ mixin template SiSUdocInserts() {
markup_sourcefile_insert_content.length
);
}
- auto ins = new Inserts();
- auto t = ins.scan_subdoc_source(
- markup_sourcefile_insert_content, to!string(fn_src_insert), add
+ auto ins = Inserts();
+ auto contents_insert = ins.scan_subdoc_source(
+ markup_sourcefile_insert_content,
+ to!string(fn_src_insert)
);
- static assert(!isTypeTuple!(t));
- auto tmparr = t[0];
- auto addsub = t[1];
- cont_arbitrary_max_length_set[add .. addsub-1] = tmparr[0 .. $-1];
- add=addsub;
+ contents ~= contents_insert;
/+
1. load file,
2. read lines;
@@ -213,15 +186,12 @@ mixin template SiSUdocInserts() {
} else {
ft["header_make"] = 0;
ft["header_metadata"] = 0;
- cont_arbitrary_max_length_set[add] = line;
- ++add;
+ contents ~= line;
}
} // end src doc loop
- auto contents = cont_arbitrary_max_length_set[0..add].dup;
debug(insert) { // insert file
writeln(__LINE__);
writeln(contents.length);
- writeln(add);
}
return contents;
}
diff --git a/lib/sdp/ao_structs.d b/lib/sdp/ao_structs.d
new file mode 100644
index 0000000..0aeb235
--- /dev/null
+++ b/lib/sdp/ao_structs.d
@@ -0,0 +1,43 @@
+/+
+ structs
+ ao_structs.d
++/
+/+ structs +/
+
+mixin template Structs() {
+ struct ObjHeading {
+ string type;
+ string lev;
+ string lvn;
+ string lcn;
+ }
+ struct ObjPara {
+ string indent_first;
+ string indent_second;
+ string bullet;
+ }
+ struct ObjComment {
+ // does not have .attrib;
+ // does not have .ocn
+ }
+ struct ObjBlock {
+ }
+ struct ObjBlockOcnString {
+ // does not have .attrib;
+ string node;
+ }
+ struct ObjComposite {
+ // size_t id;
+ string use;
+ string of;
+ string is_a;
+ string object;
+ string ocn;
+ string attrib;
+ // int ocn;
+ ObjHeading heading;
+ ObjPara para;
+ ObjBlock block;
+ ObjBlockOcnString block_ocn_string;
+ }
+}
diff --git a/lib/sdp/ao_utils.d b/lib/sdp/ao_utils.d
index 20e8988..e5245dd 100644
--- a/lib/sdp/ao_utils.d
+++ b/lib/sdp/ao_utils.d
@@ -1,7 +1,7 @@
-/*
+/+
utils
ao_util.d
-*/
++/
mixin template ScreenTxtColors() {
string[string] scr_txt_color = [
"off" : "\033[0m",
diff --git a/lib/sdp/compile_time_info.d b/lib/sdp/compile_time_info.d
new file mode 100644
index 0000000..e541113
--- /dev/null
+++ b/lib/sdp/compile_time_info.d
@@ -0,0 +1,38 @@
+/+
+ compile_time_info
+ compile_time_info.d
++/
+mixin template CompileTimeInfo() {
+ version(Windows) {
+ pragma(msg, "[ Windows compilation ]");
+ enum os = "Windows";
+ } else version(OSX) {
+ pragma(msg, "[ Mac OS X POSIX System compilation ]");
+ enum os = "OSX";
+ } else version(linux) {
+ pragma(msg, "[ Linux POSIX System compilation ]");
+ enum os = "Linux";
+ } else version(FreeBSD) {
+ pragma(msg, "[ FreeBSD POSIX System compilation ]");
+ enum os = "FreeBSD";
+ } else version(OpenBSD) {
+ pragma(msg, "[ OpenBSD POSIX System compilation ]");
+ enum os = "OpenBSD";
+ } else version(NetBSD) {
+ pragma(msg, "[ NetBSD POSIX System compilation ]");
+ enum os = "NetBSD";
+ } else version(DragonFlyBSD) {
+ pragma(msg, "[ DragonFlyBSD POSIX System compilation ]");
+ enum os = "DragonFlyBSD";
+ } else version(POSIX) {
+ pragma(msg, "[ POSIX System compilation ]");
+ enum os = "POSIX";
+ } else {
+ static assert(0, "OS not listed");
+ }
+ version(D_LP64) {
+ enum bits = "64 bit";
+ } else {
+ enum bits = "32 bit";
+ }
+}
diff --git a/lib/sdp/version.txt b/lib/sdp/version.txt
new file mode 100644
index 0000000..f4dde1a
--- /dev/null
+++ b/lib/sdp/version.txt
@@ -0,0 +1,8 @@
+/+ obt - org generated file +/
+// [used by rdmd]
+struct Version {
+ int major;
+ int minor;
+ int patch;
+}
+enum ver = Version(1, 0, 0);