aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2016-04-24 22:50:48 -0400
committerRalph Amissah <ralph@amissah.com>2016-04-25 22:59:38 -0400
commitd90d65ba5b5c2c0854a328a0560b207453389477 (patch)
treead14a2553e5ea0c4ecd6fbe4133fa63fa47ae4f3 /lib
parentstep2 (diff)
step3
Diffstat (limited to 'lib')
-rw-r--r--lib/sdp/ao_abstract_doc_source.d75
-rw-r--r--lib/sdp/ao_object_setter.d138
-rw-r--r--lib/sdp/ao_output_debugs.d60
3 files changed, 145 insertions, 128 deletions
diff --git a/lib/sdp/ao_abstract_doc_source.d b/lib/sdp/ao_abstract_doc_source.d
index 74d1baa..00cff5c 100644
--- a/lib/sdp/ao_abstract_doc_source.d
+++ b/lib/sdp/ao_abstract_doc_source.d
@@ -25,7 +25,8 @@ template SiSUdocAbstraction() {
/+ initialize +/
auto rgx = Rgx();
- string[string][] contents_the_objects;
+ ObjComposite[] contents_the_objects;
+
string[string] an_object, processing;
auto set_abstract_object = ObjectAbstractSet();
auto set_header = HeaderDocMetadataMakeJson();
@@ -212,7 +213,8 @@ template SiSUdocAbstraction() {
}
scope(failure) {
stderr.writefln(
- "%s:%s failed here:\n line: %s",
+ "%s\n%s\n%s:%s failed here:\n line: %s",
+ __MODULE__, __FUNCTION__,
__FILE__, __LINE__,
line,
);
@@ -458,12 +460,11 @@ template SiSUdocAbstraction() {
++heading_pointer;
contents_the_objects ~=
set_abstract_object.contents_heading(
- type["obj_cite_number_status"],
an_object["substantive"],
an_object["attrib"],
- obj_cite_number, an_object["lev"],
- an_object["lev_markup_number"],
- an_object["lev_collapsed_number"]
+ obj_cite_number,
+ to!int(an_object["lev_markup_number"]),
+ to!int(an_object["lev_collapsed_number"])
);
// track previous heading and make assertions
debug(objectrelated1) { // check
@@ -534,10 +535,10 @@ template SiSUdocAbstraction() {
} // close else for line empty
} // close else for not the above
} // close after non code, other blocks or regular text
- if (((contents_the_objects[$-1]["is"] == "para")
- || (contents_the_objects[$-1]["is"] == "heading"))
+ if (((contents_the_objects[$-1].is_a == "para")
+ || (contents_the_objects[$-1].is_a == "heading"))
&& (counter-1 > previous_count)) {
- if (match(contents_the_objects[$-1]["obj"],
+ if (match(contents_the_objects[$-1].object,
rgx.inline_notes_delimiter_al_regular_number_note)) {
// endnotes/ footnotes for
// doc objects other than paragraphs & headings
@@ -1408,7 +1409,7 @@ template SiSUdocAbstraction() {
auto block_flag_line_empty(
char[] line,
ref string[string] an_object,
- ref string[string][] contents_the_objects,
+ ref ObjComposite[] contents_the_objects,
ref string[][string][string] bookindex_unordered_hashes,
ref int obj_cite_number,
ref string node,
@@ -2948,7 +2949,6 @@ template SiSUdocAbstraction() {
}
}
struct BookIndexReportSection {
- mixin ObjectSetter;
int mkn, skn;
auto rgx = Rgx();
auto bookindex_write_section(
@@ -2982,7 +2982,6 @@ template SiSUdocAbstraction() {
int obj_cite_number
) {
string type;
- int type_heading;
string lev, lev_markup_number, lev_collapsed_number;
string attrib;
string[string] indent;
@@ -2990,43 +2989,35 @@ template SiSUdocAbstraction() {
auto mainkeys =
bookindex_unordered_hashes.byKey.array.sort().release;
string bi_tmp;
- string[string][] bookindex_section;
+ ObjComposite[] bookindex_section;
// writeln(mainkeys.length);
// B~ Book Index
- type_heading=1;
- bi_tmp = "Book Index";
attrib="";
lev="B";
lev_markup_number="1";
lev_collapsed_number="1";
bookindex_section ~=
set_abstract_object.contents_heading(
- type_heading,
- bi_tmp,
+ "Book Index",
attrib,
obj_cite_number,
- lev,
- lev_markup_number,
- lev_collapsed_number
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
);
++obj_cite_number;
++mkn;
// 1~ Index
- type_heading=1;
- bi_tmp = "Index";
attrib="";
lev="1";
lev_markup_number="4";
lev_collapsed_number="2";
bookindex_section ~=
set_abstract_object.contents_heading(
- type_heading,
- bi_tmp,
+ "Index",
attrib,
obj_cite_number,
- lev,
- lev_markup_number,
- lev_collapsed_number
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
);
++obj_cite_number;
++mkn;
@@ -3115,31 +3106,30 @@ template SiSUdocAbstraction() {
}
}
struct NotesSection {
- mixin ObjectSetter;
string object_notes;
long previous_count;
int mkn;
auto rgx = Rgx();
private auto gather_notes_for_endnote_section(
- string[string][] contents_am,
- long counter
+ ObjComposite[] contents_am,
+ ulong counter
)
in {
// endnotes/ footnotes for
// doc objects other than paragraphs & headings
// various forms of grouped text
- assert((contents_am[counter]["is"] == "para")
- || (contents_am[counter]["is"] == "heading"));
+ assert((contents_am[counter].is_a == "para")
+ || (contents_am[counter].is_a == "heading"));
assert(counter > previous_count);
previous_count=counter;
assert(
- match(contents_am[counter]["obj"],
+ match(contents_am[counter].object,
rgx.inline_notes_delimiter_al_regular_number_note)
);
}
body {
foreach(m;
- matchAll(contents_am[counter]["obj"],
+ matchAll(contents_am[counter].object,
rgx.inline_notes_delimiter_al_regular_number_note)) {
debug(endnotes_build) {
writeln(
@@ -3168,47 +3158,40 @@ template SiSUdocAbstraction() {
}
body {
auto set_abstract_object = ObjectAbstractSet();
- string[string][] endnotes_section;
+ ObjComposite[] endnotes_section;
auto endnotes_ = gathered_notes();
// auto endnotes_ = (split(object_notes, rgx.break_string))[0..$-1];
string type;
- int type_heading;
string lev, lev_markup_number, lev_collapsed_number;
string attrib;
string[string] indent;
// B~ Endnotes
- type_heading=1;
attrib="";
lev="B";
lev_markup_number="1";
lev_collapsed_number="1";
endnotes_section ~=
set_abstract_object.contents_heading(
- type_heading,
"Endnotes",
attrib,
obj_cite_number,
- lev,
- lev_markup_number,
- lev_collapsed_number
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
);
++obj_cite_number;
++mkn;
// 1~ Endnotes
- type_heading=1;
attrib="";
lev="1";
lev_markup_number="4";
lev_collapsed_number="2";
endnotes_section ~=
set_abstract_object.contents_heading(
- type_heading,
"Endnotes",
attrib,
obj_cite_number,
- lev,
- lev_markup_number,
- lev_collapsed_number
+ to!int(lev_markup_number),
+ to!int(lev_collapsed_number)
);
++obj_cite_number;
++mkn;
diff --git a/lib/sdp/ao_object_setter.d b/lib/sdp/ao_object_setter.d
index a44aeb0..4492e8a 100644
--- a/lib/sdp/ao_object_setter.d
+++ b/lib/sdp/ao_object_setter.d
@@ -3,42 +3,74 @@
ao_object_setter.d
+/
template ObjectSetter() {
+ /+ structs +/
+ struct HeadingAttrib {
+ int lev = 9; // use of enum should make this redundant, remove
+ int lev_markup_number = 9;
+ int lev_collapsed_number = 9;
+ }
+ struct ParaAttrib {
+ int indent_first = 0;
+ int indent_second = 0;
+ bool bullet = false;
+ }
+ struct BlockAttrib {
+ }
+ struct Comment {
+ // no .attrib and no .obj_cite_number
+ }
+ struct Node {
+ int ocn = 0;
+ int parent_lev = 0;
+ int parent_ocn = 0;
+ string node = "";
+ }
+ struct ObjComposite {
+ // size_t id;
+ string use = "";
+ string of = "";
+ string is_a = "";
+ string object = "";
+ string obj_cite_number = ""; // not used for calculations? output only? else int
+ HeadingAttrib heading_attrib;
+ ParaAttrib para_attrib;
+ BlockAttrib block_attrib;
+ Node node_structure;
+ }
+ struct ObjCompositeArr {
+ ObjComposite[] oca;
+ }
+
+ /+ structs setter +/
struct ObjectAbstractSet {
import std.conv : to;
- string[string] contents_comment(in string object) {
- string[string] object_set;
- object_set["use"] = "comment";
- object_set["of"] = "comment";
- object_set["is"] = "comment";
- object_set["obj"] = object;
- // object_set["attrib"] = attrib;
+ auto contents_comment(in string object) {
+ ObjComposite object_set;
+ object_set.use = "comment";
+ object_set.of = "comment";
+ object_set.is_a = "comment";
+ object_set.object = object;
return object_set;
}
- string[string] contents_heading(
- in int type,
+ auto contents_heading(
in string object,
in string attrib,
in int obj_cite_number,
- in string lev,
- in string lev_markup_number,
- in string lev_collapsed_number,
+ in int lev_markup_number,
+ in int lev_collapsed_number,
) {
- string[string] object_set;
- object_set["use"] = "content";
- object_set["of"] = "para";
- object_set["is"] = "heading";
- object_set["type"] = to!string(type);
- // object_set["is"] = type; // "heading" "heading_dummy"
- object_set["obj"] = object;
- object_set["obj_cite_number"] = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
- object_set["lev"] = to!string(lev);
- object_set["lev_markup_number"] = to!string(lev_markup_number);
- object_set["lev_collapsed_number"] = to!string(lev_collapsed_number);
- object_set["attrib"] = attrib;
- // object_set["children"] = children;
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "heading";
+ object_set.object = object;
+ object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
+ object_set.heading_attrib.lev_markup_number = lev_markup_number;
+ object_set.heading_attrib.lev_collapsed_number = lev_collapsed_number;
+ // object_set.node_structure.node = node;
return object_set;
}
- string[string] contents_para(
+ auto contents_para(
in string is_a,
in string object,
in string attrib,
@@ -46,48 +78,46 @@ template ObjectSetter() {
in string[string] indent,
in bool bullet
) {
- string[string] object_set;
- object_set["use"] = "content";
- object_set["of"] = "para";
- object_set["is"] = is_a;
- // object_set["status"] = status;
- object_set["obj"] = object;
- object_set["obj_cite_number"] = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
- object_set["indent_first"] = indent["first"];
- object_set["indent_second"] = indent["second"];
- object_set["bullet"] = to!string(bullet);
- object_set["attrib"] = attrib;
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "para";
+ object_set.is_a = "para";
+ object_set.object = object;
+ object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
+ object_set.para_attrib.indent_first = 0; // indent["first"];
+ object_set.para_attrib.indent_second = 0; // indent["second"];
+ object_set.para_attrib.bullet = false;
+ // object_set.node_structure.node = node;
return object_set;
}
- string[string] contents_block(
+ auto contents_block(
in string type,
in string object,
in string attrib,
in int obj_cite_number
) {
- string[string] object_set;
- object_set["use"] = "content";
- object_set["of"] = "block";
- object_set["is"] = type;
- object_set["obj"] = object;
- object_set["obj_cite_number"] = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
- object_set["attrib"] = attrib;
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "block";
+ object_set.is_a = type;
+ object_set.object = object;
+ object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
+ // object_set.node_structure.node = node;
return object_set;
}
- string[string] contents_block_obj_cite_number_string(
+ auto contents_block_obj_cite_number_string(
in string type,
in string object,
in string obj_cite_number,
in string node
) {
- string[string] object_set;
- object_set["use"] = "content";
- object_set["of"] = "block";
- object_set["is"] = type;
- object_set["obj"] = object;
- object_set["obj_cite_number"] = obj_cite_number;
- object_set["node"] = node;
- // object_set["attrib"] = "";
+ ObjComposite object_set;
+ object_set.use = "content";
+ object_set.of = "block";
+ object_set.is_a = type;
+ object_set.object = object;
+ object_set.obj_cite_number = obj_cite_number;
+ object_set.node_structure.node = node;
return object_set;
}
}
diff --git a/lib/sdp/ao_output_debugs.d b/lib/sdp/ao_output_debugs.d
index 020474e..9c66312 100644
--- a/lib/sdp/ao_output_debugs.d
+++ b/lib/sdp/ao_output_debugs.d
@@ -4,14 +4,18 @@
+/
template SiSUoutputDebugs() {
struct SDPoutputDebugs {
- auto abstract_doc_source_debugs(
- string[string][] contents,
- JSONValue[string] docmake,
- JSONValue[string] dochead,
+ auto tst_debugs(S)(auto ref const S s) {
+ mixin RgxInit;
+ mixin ScreenTxtColors;
+ auto rgx = Rgx();
+ }
+ auto abstract_doc_source_debugs(S)(auto ref const S contents,
+ JSONValue[string] docmake,
+ JSONValue[string] dochead,
string[][string][string] bookindex_unordered_hashes,
- JSONValue[] biblio,
- string fn_src,
- bool[string] opt_action_bool
+ JSONValue[] biblio,
+ string fn_src,
+ bool[string] opt_action_bool
) {
mixin RgxInit;
mixin ScreenTxtColors;
@@ -23,15 +27,15 @@ template SiSUoutputDebugs() {
__LINE__,
);
foreach (obj; contents) {
- if (obj["use"] == "content") {
- if (obj["is"] == "heading") {
+ if (obj.use == "content") {
+ if (obj.is_a == "heading") {
writefln(
"%s%s node: %s heading: %s %s",
scr_txt_marker["cyan"],
- obj["obj_cite_number"],
- obj["node"],
- obj["lev_markup_number"],
- obj["obj"],
+ obj.obj_cite_number,
+ obj.node,
+ obj.lev_markup_number,
+ obj.object,
);
} else {
}
@@ -46,12 +50,12 @@ template SiSUoutputDebugs() {
__LINE__,
);
foreach (obj; contents) {
- if (obj["use"] == "content") {
+ if (obj.use == "content") {
writefln(
"[%s][%s]\n%s",
- obj["obj_cite_number"],
- obj["is"],
- obj["obj"]
+ obj.obj_cite_number,
+ obj.is_a,
+ obj.object
);
}
}
@@ -64,14 +68,14 @@ template SiSUoutputDebugs() {
__LINE__,
);
foreach (obj; contents) {
- if (obj["use"] == "content") {
+ if (obj.use == "content") {
writefln(
"%s* [%s][%s] %s%s",
scr_txt_color["green"],
- obj["obj_cite_number"],
- obj["is"],
+ obj.obj_cite_number,
+ obj.is_a,
scr_txt_color["off"],
- obj["obj"]
+ obj.object
);
}
}
@@ -240,9 +244,9 @@ template SiSUoutputDebugs() {
];
debug(checkdoc) {
foreach (obj; contents) {
- if (obj["use"] == "content") {
- if (!empty(obj["obj_cite_number"])) {
- check["last_obj_cite_number"] = obj["obj_cite_number"];
+ if (obj.use == "content") {
+ if (!empty(obj.obj_cite_number)) {
+ check["last_obj_cite_number"] = obj.obj_cite_number;
}
}
}
@@ -255,14 +259,14 @@ template SiSUoutputDebugs() {
__LINE__,
);
foreach (obj; contents) {
- if (obj["is"] == "heading") {
+ if (obj.is_a == "heading") {
writefln(
"%s%s~ [%s] %s",
scr_txt_marker["yellow"],
- obj["lev"],
- obj["obj_cite_number"],
+ obj.heading_attrib.lev,
+ obj.obj_cite_number,
// "[", obj["is"], "] ",
- obj["obj"]
+ obj.object
);
}
}