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 ++++++++++++++++++++++------------------- 1 file changed, 205 insertions(+), 181 deletions(-) (limited to 'org/ao_abstract_doc_source.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"; -- cgit v1.2.3