From d90d65ba5b5c2c0854a328a0560b207453389477 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 24 Apr 2016 22:50:48 -0400 Subject: step3 --- lib/sdp/ao_abstract_doc_source.d | 75 ++++++++------------- lib/sdp/ao_object_setter.d | 138 ++++++++++++++++++++++++--------------- lib/sdp/ao_output_debugs.d | 60 +++++++++-------- 3 files changed, 145 insertions(+), 128 deletions(-) (limited to 'lib') 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 ); } } -- cgit v1.2.3