From 313ddb0ac605838eaca89054ff80a0402a8c6313 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 2 Dec 2016 14:44:39 -0500 Subject: 0.9.3 start work on node pointers, a way to go --- org/ao_abstract_doc_source.org | 386 ++++++++++++++++++++++------------------- org/ao_output_debugs.org | 102 ++--------- org/output.org | 5 +- org/sdp.org | 11 +- 4 files changed, 232 insertions(+), 272 deletions(-) (limited to 'org') diff --git a/org/ao_abstract_doc_source.org b/org/ao_abstract_doc_source.org index c5535fd..cec9f08 100644 --- a/org/ao_abstract_doc_source.org +++ b/org/ao_abstract_doc_source.org @@ -49,7 +49,7 @@ ObjComposite[] the_document_head_section, the_document_body_section, the_bibliog string[string] an_object, processing; string an_object_key; string[] anchor_tags; -string segment_object_belongs_to; +string segment_anchor_tag_that_object_belongs_to; auto set_abstract_object = ObjectAbstractSet(); auto note_section = NotesSection(); /+ enum +/ @@ -75,9 +75,12 @@ string biblio_entry_str_json; JSONValue[] bib_arr_json; int bib_entry; /+ counters +/ -long counter, previous_count, previous_length; +long cntr, previous_count, previous_length; int[string] line_occur; -int verse_line, heading_pointer; +int verse_line, heading_ptr; +string[] html_segnames=[]; +uint html_segnames_ptr=0; +uint html_segnames_ptr_cntr=0; /+ paragraph attributes +/ int[string] indent; bool bullet = true; @@ -153,7 +156,7 @@ int[string] lv = [ "h5" : State.off, "h6" : State.off, "h7" : State.off, - "lev_collapsed_number" : 0, + "lev_int_collapsed" : 0, ]; int[string] collapsed_lev = [ "h0" : State.off, @@ -196,8 +199,8 @@ auto toc_head = 0, // obj_cite_number ["toc"], // anchor tag "1", // lev - 4, // lev_markup_number - 2, // lev_collapsed_number + 4, // lev_int_markup + 2, // lev_int_collapsed ); the_table_of_contents_section = [ "seg": [toc_head], @@ -326,8 +329,8 @@ if there is a glossary section you need to: 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); the_glossary_section ~= set_abstract_object.contents_heading( @@ -336,8 +339,8 @@ if there is a glossary section you need to: 0, // obj_cite_number ["glossary"], // anchor tag "1", // lev - 4, // lev_markup_number - 2, // lev_collapsed_number + 4, // lev_int_markup + 2, // lev_int_collapsed ); // } else if (matchFirst(line, rgx.heading)) { // _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? @@ -400,8 +403,8 @@ if there is a blurb section you need to: 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); the_blurb_section ~= set_abstract_object.contents_heading( @@ -410,8 +413,8 @@ if there is a blurb section you need to: 0, // obj_cite_number ["blurb"], // anchor tag "1", // lev - 4, // lev_markup_number - 2, // lev_collapsed_number + 4, // lev_int_markup + 2, // lev_int_collapsed ); } else if ((matchFirst(line, rgx.heading)) && (opt_action_bool["backmatter"] && opt_action_bool["section_blurb"])) { @@ -450,7 +453,7 @@ if there is a blurb section you need to: #+BEGIN_SRC d } else if (type["poem"] == TriState.on) { /+ within block object: poem +/ - _poem_block_(line, an_object, type, counter, obj_cite_number_poem, dochead_make_aa); + _poem_block_(line, an_object, type, cntr, obj_cite_number_poem, dochead_make_aa); continue; #+END_SRC @@ -585,7 +588,7 @@ if ((matchFirst(line, rgx.book_index)) set_abstract_object.contents_comment(strip(an_object[an_object_key])); _common_reset_(line_occur, an_object, type); processing.remove("verse"); - ++counter; + ++cntr; #+END_SRC ******** flag not set & line not exist: heading or para :heading:paragraph: @@ -666,7 +669,7 @@ _block_flag_line_empty_( bookindex_unordered_hashes, obj_cite_number, _node, - counter, + cntr, type, obj_cite_number_poem, dochead_make_aa @@ -708,34 +711,40 @@ if ((type["heading"] == State.on) an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; if (to!int(an_object["lev_markup_number"]) == 4) { - segment_object_belongs_to = anchor_tags[0]; + segment_anchor_tag_that_object_belongs_to = anchor_tags[0]; } else if (to!int(an_object["lev_markup_number"]) < 4) { - segment_object_belongs_to = ""; + segment_anchor_tag_that_object_belongs_to = ""; } _anchor_tag=to!string(obj_cite_number); the_table_of_contents_section = obj_im.table_of_contents_gather_headings( an_object, dochead_make_aa, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, _anchor_tag, the_table_of_contents_section, ); + if (an_object["lev_markup_number"] == "4") { + html_segnames ~= segment_anchor_tag_that_object_belongs_to; + html_segnames_ptr = html_segnames_ptr_cntr; + html_segnames_ptr_cntr++; + } _node = node_construct.node_emitter_heading( an_object["lev_markup_number"], an_object["lev_collapsed_number"], - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer, - an_object["is"] + cntr, + heading_ptr, + an_object["is"], + html_segnames_ptr, ); // heading an_object["attrib"] = obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node); - ++heading_pointer; + ++heading_ptr; debug(segments) { writeln(an_object["lev_markup_number"]); - writeln(segment_object_belongs_to); + writeln(segment_anchor_tag_that_object_belongs_to); } the_document_body_section ~= set_abstract_object.contents_heading( @@ -755,7 +764,7 @@ if ((type["heading"] == State.on) an_object.remove("lev"); an_object.remove("lev_markup_number"); processing.remove("verse"); - ++counter; + ++cntr; #+END_SRC ******* paragraph object :paragraph:object: @@ -773,11 +782,11 @@ if ((type["heading"] == State.on) _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, - an_object["is"] + cntr, + heading_ptr-1, + an_object["is"], ); auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); // ... @@ -801,7 +810,7 @@ if ((type["heading"] == State.on) ]; bullet = false; processing.remove("verse"); - ++counter; + ++cntr; } else { assert( line == null, @@ -825,7 +834,7 @@ if (the_document_body_section.length > 0) { && (the_document_body_section.length > previous_length) ) { if ((the_document_body_section[$-1].is_a == "heading") - && (the_document_body_section[$-1].heading_attrib.lev_markup_number < 5)) { + && (the_document_body_section[$-1].heading_attrib.lev_int_markup < 5)) { type["biblio_section"] = State.off; type["glossary_section"] = State.off; type["blurb_section"] = State.off; @@ -838,8 +847,8 @@ if (the_document_body_section.length > 0) { previous_count=the_document_body_section.length -1; note_section.gather_notes_for_endnote_section( the_document_body_section, - segment_object_belongs_to, - the_document_body_section.length-1 + segment_anchor_tag_that_object_belongs_to, + the_document_body_section.length-1, ); } } @@ -901,8 +910,8 @@ if (an_object["glossary_nugget"].length == 0) { 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); } else { writeln("gloss"); @@ -935,8 +944,8 @@ if (biblio_ordered.length > 0) { 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); the_bibliography_section ~= set_abstract_object.contents_heading( @@ -945,8 +954,8 @@ if (biblio_ordered.length > 0) { 0, // obj_cite_number ["bibliography"], // anchor tag "1", // lev - 4, // lev_markup_number - 2, // lev_collapsed_number + 4, // lev_int_markup + 2, // lev_int_collapsed ); } else { the_bibliography_section ~= @@ -956,8 +965,8 @@ if (biblio_ordered.length > 0) { 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); } #+END_SRC @@ -1044,7 +1053,7 @@ auto bi_tuple = bi.bookindex_build_section( bookindex_unordered_hashes, obj_cite_number, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, opt_action_bool, ); static assert(!isTypeTuple!(bi_tuple)); @@ -1070,8 +1079,8 @@ if (an_object["blurb_nugget"].length == 0) { 0, // obj_cite_number [""], // anchor tag "B", // lev - 1, // lev_markup_number - 1, // lev_collapsed_number + 1, // lev_int_markup + 1, // lev_int_collapsed ); } else { writeln("blurb"); @@ -1096,7 +1105,7 @@ if (the_endnotes_section["seg"].length > 1) { toc_txt_ = format( "{ %s }../%s.fn_suffix", "Endnotes", - "endnotes", // segment_object_belongs_to + "endnotes", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= @@ -1130,7 +1139,7 @@ if (the_glossary_section.length > 1) { toc_txt_ = format( "{ %s }../%s.fn_suffixs", "Glossary", - "glossary", // segment_object_belongs_to + "glossary", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= @@ -1162,7 +1171,7 @@ if (the_bibliography_section.length > 1){ toc_txt_ = format( "{ %s }../%s.fn_suffix", "Bibliography", - "bibliography", // segment_object_belongs_to + "bibliography", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= @@ -1194,7 +1203,7 @@ if (the_bookindex_section["seg"].length > 1) { toc_txt_ = format( "{ %s }../%s.fn_suffix", "Book Index", - "bookindex", // segment_object_belongs_to + "bookindex", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= @@ -1228,7 +1237,7 @@ if (the_blurb_section.length > 1) { toc_txt_ = format( "{ %s }../%s.fn_suffix", "Blurb", - "blurb", // segment_object_belongs_to + "blurb", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= @@ -1303,8 +1312,7 @@ destroy(the_bookindex_section); #+BEGIN_SRC d auto t = tuple( document_the, - bookindex_unordered_hashes, - biblio_ordered + html_segnames, ); return t; #+END_SRC @@ -1825,7 +1833,7 @@ void _poem_block_( char[] line, ref string[string] an_object, ref int[string] type, - ref long counter, + ref long cntr, string[string] obj_cite_number_poem, string[string][string] dochead_make_aa, ) { @@ -1872,7 +1880,7 @@ void _poem_block_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; } obj_cite_number_poem["end"] = to!string(obj_cite_number); @@ -1903,10 +1911,10 @@ void _poem_block_( an_object["is"] = "verse"; _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -1924,7 +1932,7 @@ void _poem_block_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; } } } else if (type["tic_poem"] == TriState.on) { @@ -1962,7 +1970,7 @@ void _poem_block_( obj_cite_number_poem["end"] = to!string(obj_cite_number); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; } type["blocks"] = TriState.closing; type["poem"] = TriState.closing; @@ -1992,10 +2000,10 @@ void _poem_block_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2013,7 +2021,7 @@ void _poem_block_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; } } } @@ -2195,7 +2203,7 @@ void _block_flag_line_empty_( ref string[][string][string] bookindex_unordered_hashes, ref int obj_cite_number, ref string _node, - ref long counter, + ref long cntr, ref int[string] type, string[string] obj_cite_number_poem, string[string][string] dochead_make_aa, @@ -2221,10 +2229,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2242,7 +2250,7 @@ void _block_flag_line_empty_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; type["blocks"] = TriState.off; type["code"] = TriState.off; } else if (type["poem"] == TriState.closing) { @@ -2254,10 +2262,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); the_document_body_section ~= @@ -2282,10 +2290,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2303,7 +2311,7 @@ void _block_flag_line_empty_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; type["blocks"] = TriState.off; type["table"] = TriState.off; } else if (type["group"] == TriState.closing) { @@ -2317,10 +2325,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2338,7 +2346,7 @@ void _block_flag_line_empty_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; type["blocks"] = TriState.off; type["group"] = TriState.off; } else if (type["block"] == TriState.closing) { @@ -2351,10 +2359,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2372,7 +2380,7 @@ void _block_flag_line_empty_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; type["blocks"] = TriState.off; type["block"] = TriState.off; } else if (type["quote"] == TriState.closing) { @@ -2386,10 +2394,10 @@ void _block_flag_line_empty_( _node = node_construct.node_emitter( content_non_header, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, obj_cite_number, - counter, - heading_pointer-1, + cntr, + heading_ptr-1, an_object["is"] ); auto substantive_object_and_anchor_tags_tuple = @@ -2407,7 +2415,7 @@ void _block_flag_line_empty_( ); object_reset(an_object); processing.remove("verse"); - ++counter; + ++cntr; type["blocks"] = TriState.off; type["quote"] = TriState.off; } @@ -3184,7 +3192,7 @@ struct ObjInlineMarkup { auto table_of_contents_gather_headings( string[string] obj_, string[string][string] dochead_make_aa, - string segment_object_belongs_to, + string segment_anchor_tag_that_object_belongs_to, string _anchor_tag, ObjComposite[][string] the_table_of_contents_section, ) @@ -3279,7 +3287,7 @@ struct ObjInlineMarkup { toc_txt_ = format( "{ %s }../%s.fn_suffix", heading_toc_, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, ); toc_txt_= munge.url_links(toc_txt_); indent=[ @@ -3300,7 +3308,7 @@ struct ObjInlineMarkup { toc_txt_ = format( "{ %s }../%s.fn_suffix#%s", heading_toc_, - segment_object_belongs_to, + segment_anchor_tag_that_object_belongs_to, _anchor_tag, ); toc_txt_= munge.url_links(toc_txt_); @@ -3816,10 +3824,10 @@ struct ObjAttributes { 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["heading_pointer"] = - node_j["heading_pointer"]; // check - oa_j.object["doc_object_pointer"] = - node_j["doc_object_pointer"]; // check + oa_j.object["heading_ptr"] = + node_j["heading_ptr"]; // check + oa_j.object["doc_object_ptr"] = + node_j["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"]; @@ -3994,12 +4002,12 @@ struct BookIndexReportSection { auto bookindex_build_section( string[][string][string] bookindex_unordered_hashes, int obj_cite_number, - string segment_object_belongs_to, + string segment_anchor_tag_that_object_belongs_to, bool[string] opt_action_bool, ) { string type; string lev; - int lev_markup_number, lev_collapsed_number; + int lev_int_markup, lev_int_collapsed; string attrib; int[string] indent; auto set_abstract_object = ObjectAbstractSet(); @@ -4011,8 +4019,8 @@ struct BookIndexReportSection { string bi_tmp_seg, bi_tmp_scroll; attrib=""; lev="B"; - lev_markup_number=1; - lev_collapsed_number=1; + lev_int_markup=1; + lev_int_collapsed=1; bookindex_section["scroll"] ~= set_abstract_object.contents_heading( "Book Index", @@ -4020,8 +4028,8 @@ struct BookIndexReportSection { obj_cite_number, [], to!string(lev), - lev_markup_number, - lev_collapsed_number + lev_int_markup, + lev_int_collapsed ); bookindex_section["seg"] ~= set_abstract_object.contents_heading( @@ -4030,16 +4038,16 @@ struct BookIndexReportSection { obj_cite_number, [], to!string(lev), - lev_markup_number, - lev_collapsed_number + lev_int_markup, + lev_int_collapsed ); ++obj_cite_number; ++mkn; // 1~ Index attrib=""; lev="1"; - lev_markup_number=4; - lev_collapsed_number=2; + lev_int_markup=4; + lev_int_collapsed=2; bookindex_section["scroll"] ~= set_abstract_object.contents_heading( "Index", @@ -4047,8 +4055,8 @@ struct BookIndexReportSection { obj_cite_number, ["book_index"], to!string(lev), - lev_markup_number, - lev_collapsed_number + lev_int_markup, + lev_int_collapsed ); bookindex_section["seg"] ~= set_abstract_object.contents_heading( @@ -4057,8 +4065,8 @@ struct BookIndexReportSection { obj_cite_number, ["book_index"], to!string(lev), - lev_markup_number, - lev_collapsed_number + lev_int_markup, + lev_int_collapsed ); ++obj_cite_number; ++mkn; @@ -4068,9 +4076,9 @@ struct BookIndexReportSection { foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) { auto go = replaceAll(ref_, rgx.book_index_go, "$1"); bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", "); - bi_tmp_seg ~= (segment_object_belongs_to.empty) + bi_tmp_seg ~= (segment_anchor_tag_that_object_belongs_to.empty) ? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ") - : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); + : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); } bi_tmp_scroll ~= " \\\\\n "; bi_tmp_seg ~= " \\\\\n "; @@ -4083,9 +4091,9 @@ struct BookIndexReportSection { foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) { auto go = replaceAll(ref_, rgx.book_index_go, "$1"); bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", "); - bi_tmp_seg ~= (segment_object_belongs_to.empty) + bi_tmp_seg ~= (segment_anchor_tag_that_object_belongs_to.empty) ? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ") - : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); + : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); } bi_tmp_scroll ~= " \\\\\n "; bi_tmp_seg ~= " \\\\\n "; @@ -4171,20 +4179,20 @@ struct NotesSection { #+BEGIN_SRC d private auto gather_notes_for_endnote_section( ObjComposite[] contents_am, - string segment_object_belongs_to, - ulong counter, + string segment_anchor_tag_that_object_belongs_to, + ulong cntr, ) in { // endnotes/ footnotes for // doc objects other than paragraphs & headings // various forms of grouped text - assert((contents_am[counter].is_a == "para") - || (contents_am[counter].is_a == "heading") - || (contents_am[counter].is_a == "group")); - assert(counter >= previous_count); - previous_count=counter; + assert((contents_am[cntr].is_a == "para") + || (contents_am[cntr].is_a == "heading") + || (contents_am[cntr].is_a == "group")); + assert(cntr >= previous_count); + previous_count=cntr; assert( - match(contents_am[counter].object, + match(contents_am[cntr].object, rgx.inline_notes_delimiter_al_regular_number_note) ); } @@ -4193,24 +4201,24 @@ struct NotesSection { foreach( m; matchAll( - contents_am[counter].object, + contents_am[cntr].object, rgx.inline_notes_delimiter_al_regular_number_note ) ) { debug(endnotes_build) { writeln( - "{^{", m.captures[1], ".}^}../", segment_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ", + "{^{", m.captures[1], ".}^}../", segment_anchor_tag_that_object_belongs_to, ".fn_suffix#noteref_\n ", m.captures[1], " ", m.captures[2]); // sometimes need segment name (segmented html & epub) } // TODO NEXT you need anchor for segments at this point -> object_notes["anchor"] ~= "#note_" ~ m.captures[1] ~ "』"; - object_notes["seg"] ~= (segment_object_belongs_to.empty) + object_notes["seg"] ~= (segment_anchor_tag_that_object_belongs_to.empty) ? (munge.url_links( "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ m.captures[1]) ~ " " ~ m.captures[2] ~ "』" ) : (munge.url_links( - "{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~ + "{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_anchor_tag_that_object_belongs_to ~ ".fn_suffix#noteref_" ~ m.captures[1]) ~ " " ~ m.captures[2] ~ "』" ); object_notes["scroll"] ~= @@ -4391,11 +4399,11 @@ struct Bibliography { writeln("json: ", bib_arr_json.length); writeln("unsorted: ", biblio_unsorted.length); writeln("sorted: ", biblio_sorted__.length); - int counter; + int cntr; int[7] x; - while (counter < x.length) { - writeln(counter, ": ", biblio_sorted__[counter]["fulltitle"]); - counter++; + while (cntr < x.length) { + writeln(cntr, ": ", biblio_sorted__[cntr]["fulltitle"]); + cntr++; } } return biblio_sorted__; @@ -4499,9 +4507,9 @@ struct NodeStructureMetadata { string node_emitter( string lev_markup_number, string segment_anchor_tag, - int obj_cite_number_, - long counter_, - int pointer_, + int obj_cite_number_, + long cntr_, + int ptr_, string is_ ) in { @@ -4527,20 +4535,20 @@ struct NodeStructureMetadata { p_["obj_cite_number"] = lv4; } _node=("{ " ~ - "\"is\": \"" ~ is_ ~ "\"" ~ - ", \"heading_pointer\": " ~ to!string(pointer_) ~ - ", \"doc_object_pointer\": " ~ to!string(counter_) ~ - ", \"obj_cite_number\": " ~ to!string(obj_cite_number_) ~ - ", \"segment_anchor_tag\": \"" ~ segment_anchor_tag ~ "\"" ~ - ", \"parent_obj_cite_number\": " ~ to!string(p_["obj_cite_number"]) ~ + "\"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"]) ~ " }" ); debug(node) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { - writeln("* ", to!string(_node)); + writeln("x ", to!string(_node)); } else { - writeln("* ", to!string(_node)); + writeln("- ", to!string(_node)); } } JSONValue j = parseJSON(_node); @@ -4561,10 +4569,11 @@ struct NodeStructureMetadata { string lev_markup_number, string lev_collapsed_number, string segment_anchor_tag, - int obj_cite_number_, - long counter_, - int pointer_, - string is_ + int obj_cite_number_, + long cntr_, + int ptr_, + string is_, + uint html_segnames_ptr, ) in { auto rgx = Rgx(); @@ -4583,15 +4592,15 @@ struct NodeStructureMetadata { body { auto rgx = Rgx(); int obj_cite_number = to!int(obj_cite_number_); - switch (lev_markup_number) { // switch (to!string(lv)) { - case "0": + switch (to!int(lev_markup_number)) { // switch (to!string(lv)) { + case 0: lv = DocStructMarkupHeading.h_sect_A; lv0 = obj_cite_number; lv1=0; lv2=0; lv3=0; lv4=0; lv5=0; lv6=0; lv7=0; p_["lev_markup_number"] = 0; p_["obj_cite_number"] = 0; break; - case "1": + case 1: lv = DocStructMarkupHeading.h_sect_B; lv1 = obj_cite_number; lv2=0; lv3=0; lv4=0; lv5=0; lv6=0; lv7=0; @@ -4599,7 +4608,7 @@ struct NodeStructureMetadata { DocStructMarkupHeading.h_sect_A; p_["obj_cite_number"] = lv0; break; - case "2": + case 2: lv = DocStructMarkupHeading.h_sect_C; lv2 = obj_cite_number; lv3=0; lv4=0; lv5=0; lv6=0; lv7=0; @@ -4607,7 +4616,7 @@ struct NodeStructureMetadata { DocStructMarkupHeading.h_sect_B; p_["obj_cite_number"] = lv1; break; - case "3": + case 3: lv = DocStructMarkupHeading.h_sect_D; lv3=obj_cite_number; lv4=0; lv5=0; lv6=0; lv7=0; @@ -4615,7 +4624,7 @@ struct NodeStructureMetadata { DocStructMarkupHeading.h_sect_C; p_["obj_cite_number"] = lv2; break; - case "4": + case 4: lv = DocStructMarkupHeading.h_text_1; lv4 = obj_cite_number; lv5=0; lv6=0; lv7=0; @@ -4637,7 +4646,7 @@ struct NodeStructureMetadata { p_["obj_cite_number"] = lv0; } break; - case "5": + case 5: lv = DocStructMarkupHeading.h_text_2; lv5 = obj_cite_number; lv6=0; lv7=0; @@ -4645,7 +4654,7 @@ struct NodeStructureMetadata { DocStructMarkupHeading.h_text_1; p_["obj_cite_number"] = lv4; break; - case "6": + case 6: lv = DocStructMarkupHeading.h_text_3; lv6 = obj_cite_number; lv7=0; @@ -4653,7 +4662,7 @@ struct NodeStructureMetadata { DocStructMarkupHeading.h_text_2; p_["obj_cite_number"] = lv5; break; - case "7": + case 7: lv = DocStructMarkupHeading.h_text_4; lv7 = obj_cite_number; p_["lev_markup_number"] = @@ -4664,15 +4673,16 @@ struct NodeStructureMetadata { break; } _node=("{ " ~ - "\"is\": \"" ~ is_ ~ "\"" ~ - ", \"heading_pointer\": " ~ to!string(pointer_) ~ - ", \"doc_object_pointer\": " ~ to!string(counter_) ~ - ", \"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"]) ~ + "\"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) { @@ -4680,11 +4690,9 @@ struct NodeStructureMetadata { writeln("* ", to!string(_node)); } } - debug(node) { + debug(nodeheading) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { writeln("* ", to!string(_node)); - } else { - writeln("* ", to!string(_node)); } } JSONValue j = parseJSON(_node); @@ -4948,9 +4956,14 @@ set abstracted objects for downstream processing #+name: ao_structs_init #+BEGIN_SRC d struct HeadingAttrib { - string lev = "9"; - int lev_markup_number = 9; - int lev_collapsed_number = 9; + string lev = "9"; + int lev_int_markup = 9; + int lev_int_collapsed = 9; + int[] closes_lev_collapsed = []; // TODO track + int[] closes_lev_markup = []; // TODO track + int array_ptr = 0; +// heading segments, 1~ lev4: + int heading_array_ptr_segments = 0; // TODO } #+END_SRC @@ -4988,10 +5001,22 @@ struct Comment { #+name: ao_structs_init #+BEGIN_SRC d struct Node { - int ocn = 0; - int parent_lev = 0; - int parent_ocn = 0; - string node = ""; + int ocn = 0; + string seg_anchor_tag = ""; +// parent + int parent_lev_int_markup = 0; + int parent_ocn = 0; + int[] ancestors = []; // TODO track +// heading: + int heading_lev_int_markup = 0; + int heading_lev_int_collapsed = 0; + int[] heading_closes_lev_collapsed = []; // TODO track + int[] heading_closes_lev_markup = []; // TODO track + int heading_array_ptr = 0; +// heading segments, 1~ lev4: + int heading_array_ptr_segments = 0; // TODO +// node info json string: + string node = ""; } #+END_SRC @@ -5047,8 +5072,8 @@ auto contents_heading( in int obj_cite_number, in string[] tags, in string lev, - in int lev_markup_number, - in int lev_collapsed_number, + in int lev_int_markup, + in int lev_int_collapsed, ) { ObjComposite object_set; object_set.use = "content"; @@ -5058,9 +5083,8 @@ auto contents_heading( object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); object_set.anchor_tags ~= tags; object_set.heading_attrib.lev = lev; - 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; + object_set.heading_attrib.lev_int_markup = lev_int_markup; + object_set.heading_attrib.lev_int_collapsed = lev_int_collapsed; return object_set; } #+END_SRC @@ -5075,7 +5099,7 @@ auto contents_para( in string attrib, in int obj_cite_number, in int[string] indent, - in bool bullet + in bool bullet, ) { ObjComposite object_set; object_set.use = "content"; @@ -5101,7 +5125,7 @@ auto contents_toc( in string attrib, in int obj_cite_number, in int[string] indent, - in bool bullet + in bool bullet, ) { ObjComposite object_set; object_set.use = "content"; @@ -5149,7 +5173,7 @@ auto contents_block( in string type, in string object, in string attrib, - in int obj_cite_number + in int obj_cite_number, ) { ObjComposite object_set; object_set.use = "content"; @@ -5170,7 +5194,7 @@ auto contents_block_code( in string type, in string object, in string attrib_language_syntax, - in int obj_cite_number + in int obj_cite_number, ) { ObjComposite object_set; object_set.use = "content"; diff --git a/org/ao_output_debugs.org b/org/ao_output_debugs.org index 5349200..c576264 100644 --- a/org/ao_output_debugs.org +++ b/org/ao_output_debugs.org @@ -24,36 +24,6 @@ auto markup = InlineMarkup(); string key; #+END_SRC -** book index (sort &) report :report: - -#+name: book_index_sorted_report -#+BEGIN_SRC d -struct BookIndexReport { - int mkn, skn; - auto bookindex_report_sorted( - string[][string][string] bookindex_unordered_hashes - ) { - auto mainkeys=bookindex_unordered_hashes.byKey.array. - sort!("toLower(a) < toLower(b)", SwapStrategy.stable).release; - foreach (mainkey; mainkeys) { - auto subkeys=bookindex_unordered_hashes[mainkey].byKey.array. - sort!("toLower(a) < toLower(b)", SwapStrategy.stable).release; - foreach (subkey; subkeys) { - debug(bookindex) { - writeln( - mainkey, ": ", - subkey, ": ", - to!string(bookindex_unordered_hashes[mainkey][subkey]) - ); - } - ++skn; - } - ++mkn; - } - } -} -#+END_SRC - ** (parent) :parent: #+name: ao_output_debugs @@ -72,7 +42,7 @@ debug(parent) { "%s node: %s heading: %s %s", obj.obj_cite_number, obj.node, - obj.lev_markup_number, + obj.lev_int_markup, obj.object, ); } @@ -395,12 +365,12 @@ debug(headermakejson) { "%s\n%s\n%s", "document header, metadata & make instructions:", dochead_meta, - pointer_head_main, + ptr_head_main, ); - foreach (main_header; pointer_head_main) { + foreach (main_header; ptr_head_main) { switch (main_header) { case "make": - foreach (sub_header; pointer_head_sub_make) { + foreach (sub_header; ptr_head_sub_make) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -427,12 +397,12 @@ debug(headermetadatajson) { "%s\n%s\n%s", "document header, metadata & make instructions:", dochead_meta, - pointer_head_main, + ptr_head_main, ); - foreach (main_header; pointer_head_main) { + foreach (main_header; ptr_head_main) { switch (main_header) { case "creator": - foreach (sub_header; pointer_head_sub_creator) { + foreach (sub_header; ptr_head_sub_creator) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -444,7 +414,7 @@ debug(headermetadatajson) { } break; case "title": - foreach (sub_header; pointer_head_sub_title) { + foreach (sub_header; ptr_head_sub_title) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -456,7 +426,7 @@ debug(headermetadatajson) { } break; case "rights": - foreach (sub_header; pointer_head_sub_rights) { + foreach (sub_header; ptr_head_sub_rights) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -468,7 +438,7 @@ debug(headermetadatajson) { } break; case "date": - foreach (sub_header; pointer_head_sub_date) { + foreach (sub_header; ptr_head_sub_date) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -480,7 +450,7 @@ debug(headermetadatajson) { } break; case "original": - foreach (sub_header; pointer_head_sub_original) { + foreach (sub_header; ptr_head_sub_original) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -492,7 +462,7 @@ debug(headermetadatajson) { } break; case "classify": - foreach (sub_header; pointer_head_sub_classify) { + foreach (sub_header; ptr_head_sub_classify) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -504,7 +474,7 @@ debug(headermetadatajson) { } break; case "identifier": - foreach (sub_header; pointer_head_sub_identifier) { + foreach (sub_header; ptr_head_sub_identifier) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -516,7 +486,7 @@ debug(headermetadatajson) { } break; case "notes": - foreach (sub_header; pointer_head_sub_notes) { + foreach (sub_header; ptr_head_sub_notes) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -528,7 +498,7 @@ debug(headermetadatajson) { } break; case "publisher": - foreach (sub_header; pointer_head_sub_publisher) { + foreach (sub_header; ptr_head_sub_publisher) { if (to!string(dochead_meta[main_header][sub_header]).length > 2) { writefln( "%s:%s: %s", @@ -546,39 +516,6 @@ debug(headermetadatajson) { } #+END_SRC -** (bookindex) :bookindex: - -#+name: ao_output_debugs -#+BEGIN_SRC d -debug(bookindex) { - writefln( - "%s\n%s:%s", - "-------------------------------", - __FILE__, - __LINE__, - ); - auto bookindex = BookIndexReport(); - bookindex.bookindex_report_sorted(bookindex_unordered_hashes); -} -#+END_SRC - -*** biblio (biblio) - -#+name: ao_output_debugs -#+BEGIN_SRC d - -debug(biblio) { - foreach (entry; biblio) { - writefln( - "%s; (%s)", - entry["sortby_deemed_author_year_title"], - entry["author"], - ); - } -} - -#+END_SRC - ** anchor tags #+name: ao_output_debugs @@ -616,7 +553,7 @@ debug(heading) { // heading foreach (k; document_section_keys_sequenced["seg"]) { foreach (o; contents[k]) { if (o.is_a == "heading") { - switch (o.heading_attrib.lev_markup_number) { + switch (o.heading_attrib.lev_int_markup) { case 0: spc=""; break; @@ -652,8 +589,8 @@ debug(heading) { // heading "%s* %s\n (markup level: %s; collapsed level: %s)", spc, strip(o.object), - o.heading_attrib.lev_markup_number, - o.heading_attrib.lev_collapsed_number + o.heading_attrib.lev_int_markup, + o.heading_attrib.lev_int_collapsed ); } } @@ -901,8 +838,7 @@ template SiSUoutputDebugs() { auto abstract_doc_source_debugs(S)( auto ref const S contents, string[][string] document_section_keys_sequenced, - string[][string][string] bookindex_unordered_hashes, // redundant, consider - JSONValue[] biblio, // redundant, consider + string[] html_segnames, string[string][string] dochead_make, string[string][string] dochead_meta, string fn_src, diff --git a/org/output.org b/org/output.org index b77c2dd..8331a59 100644 --- a/org/output.org +++ b/org/output.org @@ -38,12 +38,12 @@ auto html_heading(O)( ΒΆ", obj.obj_cite_number, obj.obj_cite_number, - obj.heading_attrib.lev_markup_number, + obj.heading_attrib.lev_int_markup, obj.is_a, obj.obj_cite_number, obj.obj_cite_number, obj.object, - obj.heading_attrib.lev_markup_number + obj.heading_attrib.lev_int_markup ); return o; } @@ -1618,6 +1618,7 @@ template SiSUoutputHub() { void hub(S)( auto ref const S contents, string[][string] document_section_keys_sequenced, + string[] html_segnames, string[string][string] dochead_make, string[string][string] dochead_meta, string fn_src, diff --git a/org/sdp.org b/org/sdp.org index a016400..a8e8724 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -24,7 +24,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 9, 2); +enum ver = Version(0, 9, 3); #+END_SRC * sdp.d sisu document parser :sdp.d: @@ -377,8 +377,7 @@ string[string][string] dochead_meta = header_make_and_meta_tuple[1]; auto t = abs.abstract_doc_source(content_body, dochead_make, dochead_meta, opt_action_bool); static assert(!isTypeTuple!(t)); auto doc_ao_contents = t[0]; // head ~ toc ~ contents ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~blurb; -auto doc_ao_bookindex_unordered_hashes = t[1]; // redundant? -auto doc_ao_biblio = t[2]; // redundant? +auto doc_html_segnames = t[1]; #+END_SRC **** document section keys view @@ -442,8 +441,7 @@ debug(checkdoc) { dbg.abstract_doc_source_debugs( doc_ao_contents, document_section_keys_sequenced, - doc_ao_bookindex_unordered_hashes, // redundant? - doc_ao_biblio, // redundant? + doc_html_segnames, dochead_make, dochead_meta, fn_src, @@ -460,6 +458,7 @@ debug(checkdoc) { output.hub( doc_ao_contents, document_section_keys_sequenced, + doc_html_segnames, dochead_make, dochead_meta, fn_src, @@ -481,7 +480,7 @@ scope(exit) { destroy(content_body); destroy(t); destroy(doc_ao_contents); - destroy(doc_ao_biblio); + destroy(doc_html_segnames); destroy(fn_src); } #+END_SRC -- cgit v1.2.3