diff options
Diffstat (limited to 'src/sdp/ao_abstract_doc_source.d')
-rw-r--r-- | src/sdp/ao_abstract_doc_source.d | 328 |
1 files changed, 233 insertions, 95 deletions
diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index 7dbc573..c2cf32b 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -70,11 +70,14 @@ template SiSUdocAbstraction() { string book_idx_tmp; string[][string][string] bookindex_unordered_hashes; auto bookindex_extract_hash = BookIndexNuggetHash(); - string[][string][string] bkidx_hash(string bookindex_section, int obj_cite_number) { + string[][string][string] bkidx_hash( + string bookindex_section, + int obj_cite_number + ) { return bookindex_extract_hash.bookindex_nugget_hash(bookindex_section, obj_cite_number); } /+ node +/ - string _node; + string[string][string] _node; auto node_construct = NodeStructureMetadata(); /+ ↓ abstract marked up document +/ auto abstract_doc_source( @@ -97,6 +100,7 @@ template SiSUdocAbstraction() { destroy(processing); destroy(biblio_arr_json); } + auto node_ = node_metadata; line_occur = [ "heading" : 0, "para" : 0, @@ -104,13 +108,6 @@ template SiSUdocAbstraction() { "blurb" : 0, ]; auto type = flags_type_init; - void tell_lo(int obj_cite_number, in char[] line) { - writefln( - "* %s %s", - to!string(obj_cite_number), - to!string(line) - ); - } string[string] obj_cite_number_poem = [ "start" : "", "end" : "" @@ -161,6 +158,11 @@ template SiSUdocAbstraction() { string toc_txt_; an_object["glossary_nugget"] = ""; an_object["blurb_nugget"] = ""; + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "toc"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; auto toc_head = set_abstract_object.contents_heading( "Table of Contents", // nugget/object @@ -170,6 +172,7 @@ template SiSUdocAbstraction() { "1", // lev 4, // lev_int_markup 2, // lev_int_collapsed + node_, ); the_table_of_contents_section = [ "seg": [toc_head], @@ -258,6 +261,11 @@ template SiSUdocAbstraction() { line_occur["para"] = State.off; an_object_key="glossary_nugget"; // if (matchFirst(line, rgx.heading_glossary)) { + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "glossary"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_glossary_section ~= set_abstract_object.contents_heading( "Glossary", // nugget/object @@ -267,7 +275,13 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "glossary"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_glossary_section ~= set_abstract_object.contents_heading( "Glossary", // nugget/object @@ -277,6 +291,7 @@ template SiSUdocAbstraction() { "1", // lev 4, // lev_int_markup 2, // lev_int_collapsed + node_, ); // } else if (matchFirst(line, rgx.heading)) { // _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? @@ -319,6 +334,11 @@ template SiSUdocAbstraction() { line_occur["para"] = State.off; an_object_key="blurb_nugget"; if (matchFirst(line, rgx.heading_blurb)) { + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "blurb"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_blurb_section ~= set_abstract_object.contents_heading( "Blurb", // nugget/object @@ -328,7 +348,13 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "blurb"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_blurb_section ~= set_abstract_object.contents_heading( "Blurb", // nugget/object @@ -338,10 +364,16 @@ template SiSUdocAbstraction() { "1", // lev 4, // lev_int_markup 2, // lev_int_collapsed + node_, ); } else if ((matchFirst(line, rgx.heading)) - && (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) { + && (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) { _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "blurb"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_blurb_section ~= set_abstract_object.contents_heading( to!string(line), // an_object["substantive"], @@ -351,6 +383,7 @@ template SiSUdocAbstraction() { to!string(an_object["lev"]), to!int(an_object["lev_markup_number"]), to!int(an_object["lev_collapsed_number"]), + node_, ); } else { _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); @@ -581,6 +614,7 @@ template SiSUdocAbstraction() { to!string(an_object["lev"]), to!int(an_object["lev_markup_number"]), to!int(an_object["lev_collapsed_number"]), + _node, ); // track previous heading and make assertions debug(objectrelated1) { // check @@ -700,6 +734,11 @@ template SiSUdocAbstraction() { } if (an_object["glossary_nugget"].length == 0) { writeln("no gloss"); + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "glossary"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_glossary_section ~= set_abstract_object.contents_heading( "(skip) there is no Glossary section", // nugget/object @@ -709,6 +748,7 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); } else { writeln("gloss"); @@ -724,6 +764,11 @@ template SiSUdocAbstraction() { auto biblio_ordered = biblio._bibliography_(biblio_unsorted_incomplete, bib_arr_json); if (biblio_ordered.length > 0) { + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bibliography"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_bibliography_section ~= set_abstract_object.contents_heading( "Bibliography", // nugget/object @@ -733,7 +778,13 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bibliography"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_bibliography_section ~= set_abstract_object.contents_heading( "Bibliography", // nugget/object @@ -743,8 +794,14 @@ template SiSUdocAbstraction() { "1", // lev 4, // lev_int_markup 2, // lev_int_collapsed + node_, ); } else { + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bibliography"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_bibliography_section ~= set_abstract_object.contents_heading( "(skip) there is no Bibliography", // nugget/object @@ -754,6 +811,7 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); } string out_; @@ -805,6 +863,11 @@ template SiSUdocAbstraction() { } if (an_object["blurb_nugget"].length == 0) { writeln("no blurb"); + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "blurb"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_blurb_section ~= set_abstract_object.contents_heading( "(skip) there is no Blurb section", // nugget/object @@ -814,6 +877,7 @@ template SiSUdocAbstraction() { "B", // lev 1, // lev_int_markup 1, // lev_int_collapsed + node_, ); } else { writeln("blurb"); @@ -1747,7 +1811,7 @@ template SiSUdocAbstraction() { ref ObjComposite[] the_document_body_section, ref string[][string][string] bookindex_unordered_hashes, ref int obj_cite_number, - ref string _node, + ref string[string][string] _node, ref long cntr, ref int[string] type, string[string] obj_cite_number_poem, @@ -2817,7 +2881,12 @@ template SiSUdocAbstraction() { invariant() { } private: - static string _configured_auto_heading_numbering_and_segment_anchor_tags(string munge_, string[string] obj_, string[string][string] dochead_make_aa) { + static string _configured_auto_heading_numbering_and_segment_anchor_tags( + string munge_, + string[string] obj_, + string[string][string] + dochead_make_aa + ) { if (dochead_make_aa["make"]["num_top"].length > 0) { if (!(match(munge_, rgx.heading_anchor_tag))) { static __gshared uint heading_num_top_level=9; @@ -2996,7 +3065,11 @@ template SiSUdocAbstraction() { } struct ObjAttributes { string[string] _obj_attrib; - string obj_attributes(string obj_is_, string obj_raw, string _node) + string obj_attributes( + string obj_is_, + string obj_raw, + string[string][string] _node + ) in { } body { scope(exit) { @@ -3175,24 +3248,26 @@ template SiSUdocAbstraction() { } invariant() { } - string _set_additional_values_parse_as_json(string _obj_attrib, string obj_is_, string _node) { + string _set_additional_values_parse_as_json( + string _obj_attrib, + string obj_is_, + string[string][string] _node + ) { // JSONValue oa_j = parseJSON(_obj_attrib); - JSONValue node_j = parseJSON(_node); assert( - (oa_j.type == JSON_TYPE.OBJECT) && - (node_j.type == JSON_TYPE.OBJECT) + (oa_j.type == JSON_TYPE.OBJECT) ); if (obj_is_ == "heading") { - oa_j.object["obj_cite_number"] = node_j["obj_cite_number"]; - oa_j.object["lev_markup_number"] = node_j["lev_markup_number"]; - oa_j.object["lev_collapsed_number"] = node_j["lev_collapsed_number"]; + oa_j.object["obj_cite_number"] = _node["object"]["obj_cite_number"]; + oa_j.object["lev_markup_number"] = _node["heading"]["lev_markup_number"]; + oa_j.object["lev_collapsed_number"] = _node["heading"]["lev_collapsed_number"]; oa_j.object["heading_ptr"] = - node_j["heading_ptr"]; // check + _node["object"]["heading_ptr"]; // check oa_j.object["doc_object_ptr"] = - node_j["doc_object_ptr"]; // check + _node["object"]["doc_object_ptr"]; // check } - oa_j.object["parent_obj_cite_number"] = node_j["parent_obj_cite_number"]; - oa_j.object["parent_lev_markup_number"] = node_j["parent_lev_markup_number"]; + oa_j.object["parent_obj_cite_number"] = _node["object"]["parent_obj_cite_number"]; + oa_j.object["parent_lev_markup_number"] = _node["object"]["parent_lev_markup_number"]; _obj_attrib = oa_j.toString(); return _obj_attrib; } @@ -3204,7 +3279,10 @@ template SiSUdocAbstraction() { string[][string][string] bi; string[][string][string] hash_nugget; string[] bi_main_terms_split_arr; - string[][string][string] bookindex_nugget_hash(string bookindex_section, int obj_cite_number) + string[][string][string] bookindex_nugget_hash( + string bookindex_section, + int obj_cite_number + ) in { debug(bookindexraw) { if (!bookindex_section.empty) { @@ -3329,6 +3407,7 @@ template SiSUdocAbstraction() { string segment_anchor_tag_that_object_belongs_to, bool[string] opt_action_bool, ) { + mixin SiSUnode; string type; string lev; int lev_int_markup, lev_int_collapsed; @@ -3338,6 +3417,7 @@ template SiSUdocAbstraction() { auto mainkeys = bookindex_unordered_hashes.byKey.array.sort().release; ObjComposite[][string] bookindex_section; + auto node_ = node_metadata; if ((mainkeys.length > 0) && (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"])) { string bi_tmp_seg, bi_tmp_scroll; @@ -3345,6 +3425,11 @@ template SiSUdocAbstraction() { lev="B"; lev_int_markup=1; lev_int_collapsed=1; + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bookindex"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; bookindex_section["scroll"] ~= set_abstract_object.contents_heading( "Book Index", @@ -3353,7 +3438,8 @@ template SiSUdocAbstraction() { [], to!string(lev), lev_int_markup, - lev_int_collapsed + lev_int_collapsed, + node_, ); bookindex_section["seg"] ~= set_abstract_object.contents_heading( @@ -3363,7 +3449,8 @@ template SiSUdocAbstraction() { [], to!string(lev), lev_int_markup, - lev_int_collapsed + lev_int_collapsed, + node_, ); ++obj_cite_number; ++mkn; @@ -3372,6 +3459,11 @@ template SiSUdocAbstraction() { lev="1"; lev_int_markup=4; lev_int_collapsed=2; + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bookindex"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; bookindex_section["scroll"] ~= set_abstract_object.contents_heading( "Index", @@ -3380,7 +3472,8 @@ template SiSUdocAbstraction() { ["book_index"], to!string(lev), lev_int_markup, - lev_int_collapsed + lev_int_collapsed, + node_, ); bookindex_section["seg"] ~= set_abstract_object.contents_heading( @@ -3390,7 +3483,8 @@ template SiSUdocAbstraction() { ["book_index"], to!string(lev), lev_int_markup, - lev_int_collapsed + lev_int_collapsed, + node_, ); ++obj_cite_number; ++mkn; @@ -3453,6 +3547,11 @@ template SiSUdocAbstraction() { ++mkn; } } else { // no book index, (figure out what to do here) + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "bookindex"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; bookindex_section["scroll"] ~= set_abstract_object.contents_heading( "(skip) there is no Book Index", @@ -3461,7 +3560,8 @@ template SiSUdocAbstraction() { [""], "B", 1, - 1 + 1, + node_, ); bookindex_section["seg"] ~= set_abstract_object.contents_heading( @@ -3471,7 +3571,8 @@ template SiSUdocAbstraction() { [""], "B", 1, - 1 + 1, + node_, ); } auto t = tuple(bookindex_section, obj_cite_number); @@ -3558,6 +3659,7 @@ template SiSUdocAbstraction() { in { } body { + mixin SiSUnode; auto set_abstract_object = ObjectAbstractSet(); ObjComposite[][string] the_endnotes_section; auto endnotes_ = gathered_notes(); @@ -3565,12 +3667,18 @@ template SiSUdocAbstraction() { string lev, lev_markup_number, lev_collapsed_number; string attrib; int[string] indent; + auto node_ = node_metadata; if ((endnotes_["seg"].length > 0) && (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"])) { attrib=""; lev="B"; lev_markup_number="1"; lev_collapsed_number="1"; + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "endnotes"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_endnotes_section["seg"] ~= set_abstract_object.contents_heading( "Endnotes", @@ -3579,7 +3687,8 @@ template SiSUdocAbstraction() { [], to!string(lev), to!int(lev_markup_number), - to!int(lev_collapsed_number) + to!int(lev_collapsed_number), + node_, ); the_endnotes_section["scroll"] ~= set_abstract_object.contents_heading( @@ -3589,7 +3698,8 @@ template SiSUdocAbstraction() { [], to!string(lev), to!int(lev_markup_number), - to!int(lev_collapsed_number) + to!int(lev_collapsed_number), + node_, ); ++obj_cite_number; ++mkn; @@ -3597,6 +3707,11 @@ template SiSUdocAbstraction() { lev="1"; lev_markup_number="4"; lev_collapsed_number="2"; + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "endnotes"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_endnotes_section["seg"] ~= set_abstract_object.contents_heading( "Endnotes", @@ -3605,7 +3720,8 @@ template SiSUdocAbstraction() { ["endnotes"], to!string(lev), to!int(lev_markup_number), - to!int(lev_collapsed_number) + to!int(lev_collapsed_number), + node_, ); the_endnotes_section["scroll"] ~= set_abstract_object.contents_heading( @@ -3615,11 +3731,17 @@ template SiSUdocAbstraction() { ["endnotes"], to!string(lev), to!int(lev_markup_number), - to!int(lev_collapsed_number) + to!int(lev_collapsed_number), + node_, ); ++obj_cite_number; ++mkn; } else { + node_["object"]["is"] = "heading"; + node_["object"]["obj_cite_number"] = "0"; + node_["object"]["segment_anchor_tag"] = "endnotes"; + node_["object"]["parent_obj_cite_number"] = "1"; + node_["object"]["parent_lev_markup_number"] = "0"; the_endnotes_section["seg"] ~= set_abstract_object.contents_heading( "(skip) there are no Endnotes", @@ -3628,7 +3750,8 @@ template SiSUdocAbstraction() { [""], "B", 1, - 1 + 1, + node_, ); the_endnotes_section["scroll"] ~= set_abstract_object.contents_heading( @@ -3638,7 +3761,8 @@ template SiSUdocAbstraction() { [""], "B", 1, - 1 + 1, + node_, ); } if (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"]) { @@ -3741,8 +3865,8 @@ template SiSUdocAbstraction() { int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7; int obj_cite_number; int[string] p_; // p_ parent_ - string _node; - string node_emitter( + string[string][string] _node; + string[string][string] node_emitter( string lev_markup_number, string segment_anchor_tag, int obj_cite_number_, @@ -3772,16 +3896,24 @@ template SiSUdocAbstraction() { p_["lev_markup_number"] = DocStructMarkupHeading.h_text_1; p_["obj_cite_number"] = lv4; } - _node=("{ " ~ - "\"is\": \"" ~ is_ ~ "\"" ~ - ", \"heading_ptr\": " ~ to!string(ptr_) ~ - ", \"doc_object_ptr\": " ~ to!string(cntr_) ~ - ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~ - ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~ - ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~ - ", \"parent_lev_markup_number\": " ~ to!string(p_["lev_markup_number"]) ~ - " }" - ); + auto _node = [ + "object" : [ + "is" : is_, + "heading_ptr" : to!string(ptr_), + "doc_object_ptr" : to!string(cntr_), + "obj_cite_number" : to!string(obj_cite_number_), + "segment_anchor_tag" : to!string(segment_anchor_tag), + "parent_obj_cite_number" : to!string(p_["obj_cite_number"]), + "parent_lev_markup_number" : to!string(p_["lev_markup_number"]), + ], + "heading" : [ + "html_segnames_ptr" : "", + "lev_markup_number" : "", + "lev_collapsed_number" : "", + // "ancestors" : "", + // "open_headings_to_close" : "", + ] + ]; debug(node) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { writeln("x ", to!string(_node)); @@ -3789,15 +3921,14 @@ template SiSUdocAbstraction() { writeln("- ", to!string(_node)); } } - JSONValue j = parseJSON(_node); - assert(j["parent_lev_markup_number"].integer >= 4); - assert(j["parent_lev_markup_number"].integer <= 7); - assert(j["parent_obj_cite_number"].integer >= 0); + assert(to!int(_node["object"]["parent_lev_markup_number"]) >= 4); + assert(to!int(_node["object"]["parent_lev_markup_number"]) <= 7); + assert(to!int(_node["object"]["parent_obj_cite_number"]) >= 0); // hmm, perhaps return _node; } invariant() { } - string node_emitter_heading( + string[string][string] node_emitter_heading( string lev_markup_number, string lev_collapsed_number, string segment_anchor_tag, @@ -3904,20 +4035,25 @@ template SiSUdocAbstraction() { default: break; } - _node=("{ " ~ - "\"is\": \"" ~ is_ ~ "\"" ~ - ", \"heading_ptr\": " ~ to!string(ptr_) ~ - ", \"doc_object_ptr\": " ~ to!string(cntr_) ~ - ", \"html_segnames_ptr\": \"" ~ ((lev_markup_number == "4") ? (to!string(html_segnames_ptr)) : "") ~ "\"" ~ - ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~ - ", \"lev_markup_number\": " ~ to!string(lev_markup_number) ~ - ", \"lev_collapsed_number\": " ~ to!string(lev_collapsed_number) ~ - ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~ - ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~ - ", \"parent_lev_markup_number\": " ~ to!string(p_["lev_markup_number"]) ~ - " }" - ); - debug(heading) { + auto _node = [ + "object" : [ + "is" : is_, + "heading_ptr" : to!string(ptr_), + "doc_object_ptr" : to!string(cntr_), + "obj_cite_number" : to!string(obj_cite_number_), + "segment_anchor_tag" : to!string(segment_anchor_tag), + "parent_obj_cite_number" : to!string(p_["obj_cite_number"]), + "parent_lev_markup_number" : to!string(p_["lev_markup_number"]), + ], + "heading" : [ + "html_segnames_ptr" : ((lev_markup_number == "4") ? (to!string(html_segnames_ptr)) : ""), + "lev_markup_number" : to!string(lev_markup_number), + "lev_collapsed_number" : to!string(lev_collapsed_number), + // "ancestors" : to!string(ancestors), + // "open_headings_to_close" : to!string(open_headings_to_close), + ] + ]; + debug(node) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { writeln("* ", to!string(_node)); } @@ -3927,35 +4063,34 @@ template SiSUdocAbstraction() { writeln("* ", to!string(_node)); } } - JSONValue j = parseJSON(_node); - assert(j["parent_lev_markup_number"].integer <= 7); - assert(j["parent_obj_cite_number"].integer >= 0); + assert(to!int(_node["object"]["parent_lev_markup_number"]) <= 7); + assert(to!int(_node["object"]["parent_obj_cite_number"]) >= 0); if (match(lev_markup_number, rgx.levels_numbered_headings)) { - assert(j["lev_markup_number"].integer <= 7); - assert(j["obj_cite_number"].integer >= 0); - if (j["parent_lev_markup_number"].integer > 0) { - assert(j["parent_lev_markup_number"].integer < j["lev_markup_number"].integer); - if (j["obj_cite_number"].integer != 0) { - assert(j["parent_obj_cite_number"].integer < j["obj_cite_number"].integer); + assert(to!int(_node["heading"]["lev_markup_number"]) <= 7); + assert(to!int(_node["object"]["obj_cite_number"]) >= 0); + if (to!int(_node["object"]["parent_lev_markup_number"]) > 0) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) < to!int(_node["heading"]["lev_markup_number"])); + if (to!int(_node["object"]["obj_cite_number"]) != 0) { + assert(to!int(_node["object"]["parent_obj_cite_number"]) < to!int(_node["object"]["obj_cite_number"])); } } - if (j["lev_markup_number"].integer == 0) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_sect_A); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_sect_B) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_sect_A); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_sect_C) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_sect_B); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_sect_D) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_sect_C); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_text_1) { - assert(j["parent_lev_markup_number"].integer <= DocStructMarkupHeading.h_sect_D); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_text_2) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_text_1); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_text_3) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_text_2); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_text_4) { - assert(j["parent_lev_markup_number"].integer == DocStructMarkupHeading.h_text_3); - } else if (j["lev_markup_number"].integer == DocStructMarkupHeading.h_text_5) { + if (to!int(_node["heading"]["lev_markup_number"]) == 0) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_sect_A); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_sect_B) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_sect_A); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_sect_C) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_sect_B); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_sect_D) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_sect_C); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_text_1) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) <= DocStructMarkupHeading.h_sect_D); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_text_2) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_text_1); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_text_3) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_text_2); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_text_4) { + assert(to!int(_node["object"]["parent_lev_markup_number"]) == DocStructMarkupHeading.h_text_3); + } else if (to!int(_node["heading"]["lev_markup_number"]) == DocStructMarkupHeading.h_text_5) { } } return _node; @@ -3965,7 +4100,10 @@ template SiSUdocAbstraction() { } /+ abstraction functions emitters ↑ +/ /+ ↓ abstraction functions assertions +/ - auto assertions_doc_structure(string[string] an_object, int[string] lv) { + auto assertions_doc_structure( + string[string] an_object, + int[string] lv + ) { if (lv["h3"] > State.off) { assert(lv["h0"] > State.off); assert(lv["h1"] > State.off); |