diff options
author | Ralph Amissah <ralph@amissah.com> | 2016-12-11 11:17:06 -0500 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:13 -0400 |
commit | 762439ade3de42d2043fafc0005b255c6c58ba49 (patch) | |
tree | 9d1c66d345bffd1b15002265e73c97c1fc92c70d /org | |
parent | 0.9.6 node info, and output continued (diff) |
0.10.0 generic object (ObjGenericComposite), removed "object_set"
Diffstat (limited to 'org')
-rw-r--r-- | org/ao_abstract_doc_source.org | 1851 | ||||
-rw-r--r-- | org/ao_conf_make_meta.org | 2 | ||||
-rw-r--r-- | org/ao_defaults.org | 2 | ||||
-rw-r--r-- | org/ao_output_debugs.org | 77 | ||||
-rw-r--r-- | org/ao_read_source_files.org | 54 | ||||
-rw-r--r-- | org/compile_time_info.org | 2 | ||||
-rw-r--r-- | org/output.org | 34 | ||||
-rw-r--r-- | org/sdp.org | 26 |
8 files changed, 760 insertions, 1288 deletions
diff --git a/org/ao_abstract_doc_source.org b/org/ao_abstract_doc_source.org index 4292328..c11193c 100644 --- a/org/ao_abstract_doc_source.org +++ b/org/ao_abstract_doc_source.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle:io:file: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle:io:file: ** 1. ao abstract doc source: :ao_abstract_doc_source.d: #+BEGIN_SRC d :tangle ../src/sdp/ao_abstract_doc_source.d @@ -139,17 +139,6 @@ template SiSUdocAbstraction() { template ObjectSetter() { /+ structs +/ <<ao_structs_init>> - /+ structs setter +/ - struct ObjectAbstractSet { - import std.conv : to; - <<ao_object_setter_comment>> - <<ao_object_setter_heading>> - <<ao_object_setter_para>> - <<ao_object_setter_endnote>> - <<ao_object_setter_block>> - <<ao_object_setter_block_code>> - <<ao_object_setter_block_obj_cite_number_string>> - } } #+END_SRC @@ -183,13 +172,12 @@ mixin InternalMarkup; #+BEGIN_SRC d /+ initialize +/ auto rgx = Rgx(); -ObjComposite[][string] the_table_of_contents_section; -ObjComposite[] the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section; +ObjGenericComposite[][string] the_table_of_contents_section; +ObjGenericComposite[] the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section; string[string] an_object, processing; string an_object_key; string[] anchor_tags; string segment_anchor_tag_that_object_belongs_to; -auto set_abstract_object = ObjectAbstractSet(); auto note_section = NotesSection(); /+ enum +/ enum State { off, on } @@ -238,13 +226,12 @@ string[][string][string] bookindex_unordered_hashes; auto bookindex_extract_hash = BookIndexNuggetHash(); string[][string][string] bkidx_hash( string bookindex_section, - int obj_cite_number + int obj_cite_number ) { return bookindex_extract_hash.bookindex_nugget_hash(bookindex_section, obj_cite_number); } /+ node +/ -string[string] _node_heading_str; -int[string] _node_heading_int; +ObjGenericComposite comp_obj_heading, comp_obj_location, comp_obj_block, comp_obj_code, comp_obj_poem_ocn, comp_obj_comment; auto node_construct = NodeStructureMetadata(); #+END_SRC @@ -271,10 +258,9 @@ scope(exit) { #+name: abs_init_rest #+BEGIN_SRC d -auto node_heading_int_ = node_metadata_heading_int; -auto node_heading_str_ = node_metadata_heading_str; auto node_para_int_ = node_metadata_para_int; auto node_para_str_ = node_metadata_para_str; +ObjGenericComposite comp_obj_heading_, comp_obj_para, comp_obj_toc; line_occur = [ "heading" : 0, "para" : 0, @@ -332,22 +318,20 @@ string _anchor_tag; string toc_txt_; an_object["glossary_nugget"] = ""; an_object["blurb_nugget"] = ""; -node_heading_str_["is"] = "heading"; -node_heading_str_["ocn"] = "0"; -node_heading_str_["segment_anchor_tag"] = "toc"; -node_heading_str_["attrib"] = ""; -node_heading_str_["marked_up_lev"] = "1"; -node_heading_int_["heading_lev_markup"] = 4; -node_heading_int_["heading_lev_collapsed"] = 2; -node_heading_int_["parent_ocn"] = 1; -node_heading_int_["parent_lev_markup"] = 0; -auto toc_head = - set_abstract_object.contents_heading( - "Table of Contents", // nugget/object - node_heading_str_, - node_heading_int_, - ["toc"], // anchor tag - ); +comp_obj_heading_ = comp_obj_heading_.init; +comp_obj_heading_.use = "content"; +comp_obj_heading_.of = "para"; +comp_obj_heading_.is_a = "heading"; +comp_obj_heading_.text = "Table of Contents"; +comp_obj_heading_.ocn = 0; +comp_obj_heading_.segment_anchor_tag = "toc"; +comp_obj_heading_.marked_up_level = "1"; +comp_obj_heading_.heading_lev_markup = 4; +comp_obj_heading_.heading_lev_collapsed = 2; +comp_obj_heading_.parent_ocn = 1; +comp_obj_heading_.parent_lev_markup = 0; +comp_obj_heading_.anchor_tags = ["toc"]; +auto toc_head = comp_obj_heading_; the_table_of_contents_section = [ "seg": [toc_head], "scroll": [toc_head], @@ -468,54 +452,47 @@ if there is a glossary section you need to: line_occur["para"] = State.off; an_object_key="glossary_nugget"; // if (matchFirst(line, rgx.heading_glossary)) { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_glossary_section ~= - set_abstract_object.contents_heading( - "Glossary", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "glossary"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "1"; - node_heading_int_["heading_lev_markup"] = 4; - node_heading_int_["heading_lev_collapsed"] = 2; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_glossary_section ~= - set_abstract_object.contents_heading( - "Glossary", // nugget/object - node_heading_str_, - node_heading_int_, - ["glossary"], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Glossary"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_glossary_section ~= comp_obj_heading_; + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Glossary"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "glossary"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.anchor_tags = ["glossary"]; + the_glossary_section ~= comp_obj_heading_; // } else if (matchFirst(line, rgx.heading)) { // _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, type, dochead_meta_aa); // levels? } else { _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); - node_para_str_["is"] = "para"; - node_para_str_["attrib"] = ""; - node_para_int_["ocn"] = 0; - node_para_int_["indent_hang"] = indent["hang_position"]; - node_para_int_["indent_base"] = indent["base_position"]; - node_para_int_["bullet"] = (bullet) ? 1 : 0; - the_glossary_section ~= - set_abstract_object.contents_para( - to!string(line), // an_object["substantive"], - node_para_str_, - node_para_int_, - ); + comp_obj_para = comp_obj_para.init; + comp_obj_para.use = "content"; + comp_obj_para.of = "para"; + comp_obj_para.is_a = "para"; + comp_obj_para.text = to!string(line).strip; + comp_obj_para.ocn = 0; + comp_obj_para.obj_cite_number = "0"; + comp_obj_para.indent_hang = indent["hang_position"]; + comp_obj_para.indent_base = indent["base_position"]; + comp_obj_para.bullet = bullet; + the_glossary_section ~= comp_obj_para; } type["ocn_status"] = TriState.off; } @@ -557,71 +534,60 @@ if there is a blurb section you need to: line_occur["para"] = State.off; an_object_key="blurb_nugget"; if (matchFirst(line, rgx.heading_blurb)) { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_blurb_section ~= - set_abstract_object.contents_heading( - "Blurb", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "blurb"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "1"; - node_heading_int_["heading_lev_markup"] = 4; - node_heading_int_["heading_lev_collapsed"] = 2; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_blurb_section ~= - set_abstract_object.contents_heading( - "Blurb", // nugget/object - node_heading_str_, - node_heading_int_, - ["blurb"], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Blurb"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_blurb_section ~= comp_obj_heading_; + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Blurb"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "blurb"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.anchor_tags = ["blurb"]; + the_blurb_section ~= comp_obj_heading_; } else if ((matchFirst(line, rgx.heading)) && (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_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "blurb"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = to!string(an_object["lev"]); - node_heading_int_["heading_lev_markup"] = to!int(an_object["lev_markup_number"]); // make int, remove need to conv - node_heading_int_["heading_lev_collapsed"] = to!int(an_object["lev_collapsed_number"]); // make int, remove need to conv - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_blurb_section ~= - set_abstract_object.contents_heading( - to!string(line), // an_object["substantive"], - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = to!string(line); + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "blurb"; + comp_obj_heading_.marked_up_level = to!string(an_object["lev"]); + comp_obj_heading_.heading_lev_markup = to!int(an_object["lev_markup_number"]); // make int, remove need to conv + comp_obj_heading_.heading_lev_collapsed = to!int(an_object["lev_collapsed_number"]); // make int, remove need to conv + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_blurb_section ~= comp_obj_heading_; } else { _para_match_(line, an_object, an_object_key, indent, bullet, type, line_occur); - node_para_str_["is"] = "para"; - node_para_str_["attrib"] = ""; - node_para_int_["ocn"] = obj_cite_number; - node_para_int_["indent_hang"] = indent["hang_position"]; - node_para_int_["indent_base"] = indent["base_position"]; - node_para_int_["bullet"] = (bullet) ? 1 : 0; - the_blurb_section ~= - set_abstract_object.contents_para( - to!string(line), // an_object["substantive"], - node_para_str_, - node_para_int_, - ); + comp_obj_para = comp_obj_para.init; + comp_obj_para.use = "content"; + comp_obj_para.of = "para"; + comp_obj_para.is_a = "para"; + comp_obj_para.text = to!string(line).strip; + comp_obj_para.ocn = obj_cite_number; + comp_obj_para.obj_cite_number = to!string(obj_cite_number); + comp_obj_para.indent_hang = indent["hang_position"]; + comp_obj_para.indent_base = indent["base_position"]; + comp_obj_para.bullet = bullet; + the_blurb_section ~= comp_obj_para; } type["ocn_status"] = TriState.off; } @@ -766,8 +732,12 @@ if ((matchFirst(line, rgx.book_index)) writeln(line); } an_object[an_object_key] ~= line ~= "\n"; - the_document_body_section ~= - set_abstract_object.contents_comment(strip(an_object[an_object_key])); + comp_obj_comment = comp_obj_comment.init; + comp_obj_comment.use = "comment"; + comp_obj_comment.of = "comment"; + comp_obj_comment.is_a = "comment"; + comp_obj_comment.text = an_object[an_object_key].strip; + the_document_body_section ~= comp_obj_comment; _common_reset_(line_occur, an_object, type); processing.remove("verse"); ++cntr; @@ -850,13 +820,12 @@ _block_flag_line_empty_( the_document_body_section, bookindex_unordered_hashes, obj_cite_number, - _node_heading_str, - _node_heading_int, + comp_obj_heading, cntr, type, obj_cite_number_poem, dochead_make_aa -); // watch +); #+END_SRC ****** line empty [+1] @@ -911,8 +880,9 @@ if ((type["heading"] == State.on) html_segnames_ptr = html_segnames_ptr_cntr; html_segnames_ptr_cntr++; } - auto _node_t = + auto comp_obj_heading = node_construct.node_emitter_heading( + an_object["substantive"], // string an_object["lev"], // string an_object["lev_markup_number"], // string an_object["lev_collapsed_number"], // string @@ -923,22 +893,12 @@ if ((type["heading"] == State.on) an_object["is"], // string html_segnames_ptr, // int ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); ++heading_ptr; debug(segments) { writeln(an_object["lev_markup_number"]); writeln(segment_anchor_tag_that_object_belongs_to); } - the_document_body_section ~= - set_abstract_object.contents_heading( - an_object["substantive"], - _node_heading_str, - _node_heading_int, - anchor_tags, - ); + the_document_body_section ~= comp_obj_heading; // track previous heading and make assertions debug(objectrelated1) { // check writeln(line); @@ -962,8 +922,8 @@ if ((type["heading"] == State.on) bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "para"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_heading = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -971,26 +931,22 @@ if ((type["heading"] == State.on) heading_ptr-1, an_object["is"], ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); // ... an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - node_para_str_["is"] = an_object["is"]; - node_para_str_["attrib"] = an_object["attrib"]; - node_para_int_["ocn"] = obj_cite_number; - node_para_int_["indent_hang"] = indent["hang_position"]; - node_para_int_["indent_base"] = indent["base_position"]; - node_para_int_["bullet"] = (bullet) ? 1 : 0; - the_document_body_section ~= - set_abstract_object.contents_para( - an_object["substantive"], - node_para_str_, - node_para_int_, - ); + comp_obj_para = comp_obj_para.init; + comp_obj_para.use = "content"; + comp_obj_para.of = "para"; + comp_obj_para.is_a = "para"; + comp_obj_para.text = to!string(an_object["substantive"]).strip; + comp_obj_para.ocn = obj_cite_number; + comp_obj_para.obj_cite_number = to!string(obj_cite_number); + comp_obj_para.indent_hang = indent["hang_position"]; + comp_obj_para.indent_base = indent["base_position"]; + comp_obj_para.bullet = bullet; + comp_obj_para.anchor_tags = anchor_tags; + the_document_body_section ~= comp_obj_para; _common_reset_(line_occur, an_object, type); indent=[ "hang_position" : 0, @@ -1022,14 +978,14 @@ 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_int_markup < 5)) { + && (the_document_body_section[$-1].heading_lev_markup < 5)) { type["biblio_section"] = State.off; type["glossary_section"] = State.off; type["blurb_section"] = State.off; } previous_length = to!int(the_document_body_section.length); if ( - match(the_document_body_section[$-1].object, + match(the_document_body_section[$-1].text, rgx.inline_notes_delimiter_al_regular_number_note) ) { previous_count=to!int(the_document_body_section.length -1); @@ -1091,28 +1047,24 @@ debug(endnotes) { #+BEGIN_SRC d if (an_object["glossary_nugget"].length == 0) { writeln("no gloss"); - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_glossary_section ~= - set_abstract_object.contents_heading( - "(skip) there is no Glossary section", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "(skip) there is no Glossary section"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_glossary_section ~= comp_obj_heading_; } else { writeln("gloss"); } debug(glossary) { foreach (gloss; the_glossary_section) { - writeln(gloss.object); + writeln(gloss.text); } } #+END_SRC @@ -1131,55 +1083,46 @@ auto biblio_ordered = #+name: abs_post #+BEGIN_SRC d if (biblio_ordered.length > 0) { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_bibliography_section ~= - set_abstract_object.contents_heading( - "Bibliography", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "bibliography"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "1"; - node_heading_int_["heading_lev_markup"] = 4; - node_heading_int_["heading_lev_collapsed"] = 2; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_bibliography_section ~= - set_abstract_object.contents_heading( - "Bibliography", - node_heading_str_, - node_heading_int_, - ["bibliography"], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Bibliography"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_bibliography_section ~= comp_obj_heading_; + // --- + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Bibliography"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "bibliography"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.anchor_tags = ["bibliography"]; + the_bibliography_section ~= comp_obj_heading_; } else { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_bibliography_section ~= - set_abstract_object.contents_heading( - "(skip) there is no Bibliography", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "(skip) there is no Bibliography"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_bibliography_section ~= comp_obj_heading_; } #+END_SRC @@ -1203,18 +1146,18 @@ foreach (entry; biblio_ordered) { ((entry["place"].str.empty) ? "" : ", " ~ entry["place"].str), ((entry["url"].str.empty) ? "" : ", [" ~ entry["url"].str ~ "]"), ); - node_para_str_["is"] = "bibliography"; - node_para_str_["attrib"] = ""; - node_para_int_["ocn"] = 0; - node_para_int_["indent_hang"] = 0; - node_para_int_["indent_base"] = 1; - node_para_int_["bullet"] = 0; - the_bibliography_section ~= - set_abstract_object.contents_para( - out_, // nugget/object - node_para_str_, - node_para_int_, - ); + comp_obj_para = comp_obj_para.init; + comp_obj_para.use = "content"; + comp_obj_para.of = "para"; + comp_obj_para.is_a = "bibliography"; + comp_obj_para.text = to!string(out_).strip; + comp_obj_para.ocn = 0; + comp_obj_para.obj_cite_number = "0"; + comp_obj_para.indent_hang = 0; + comp_obj_para.indent_base = 1; + comp_obj_para.bullet = bullet; + comp_obj_para.anchor_tags = anchor_tags; + the_bibliography_section ~= comp_obj_para; } #+END_SRC @@ -1222,7 +1165,7 @@ foreach (entry; biblio_ordered) { #+BEGIN_SRC d debug(bibliosection) { foreach (o; the_bibliography_section) { - writeln(o.object); + writeln(o.text); } } #+END_SRC @@ -1287,28 +1230,25 @@ debug(bookindex) { // bookindex #+BEGIN_SRC d if (an_object["blurb_nugget"].length == 0) { writeln("no blurb"); - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_blurb_section ~= - set_abstract_object.contents_heading( - "(skip) there is no Blurb section", // nugget/object - node_heading_str_, - node_heading_int_, - [""], // anchor tag - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "(skip) there is no Blurb section"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "bibliography"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_blurb_section ~= comp_obj_heading_; } else { writeln("blurb"); } debug(blurb) { foreach (blurb; the_blurb_section) { - writeln(blurb.object); + writeln(blurb.text); } } #+END_SRC @@ -1322,6 +1262,15 @@ indent=[ "hang_position" : 1, "base_position" : 1, ]; +comp_obj_toc = comp_obj_toc.init; +comp_obj_toc.use = "content"; +comp_obj_toc.of = "para"; +comp_obj_toc.is_a = "toc"; +comp_obj_toc.ocn = 0; +comp_obj_toc.obj_cite_number = "0"; +comp_obj_toc.indent_hang = indent["hang_position"]; +comp_obj_toc.indent_base = indent["base_position"]; +comp_obj_toc.bullet = false; if (the_endnotes_section["seg"].length > 1) { toc_txt_ = format( "{ %s }../%s.fn_suffix", @@ -1329,15 +1278,8 @@ if (the_endnotes_section["seg"].length > 1) { "endnotes", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; } if (the_endnotes_section["scroll"].length > 1) { toc_txt_ = format( @@ -1346,15 +1288,8 @@ if (the_endnotes_section["scroll"].length > 1) { "endnotes", // _anchor_tag ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } if (the_glossary_section.length > 1) { toc_txt_ = format( @@ -1363,30 +1298,16 @@ if (the_glossary_section.length > 1) { "glossary", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; toc_txt_ = format( "{ %s }#%s", "Glossary", "glossary", // _anchor_tag ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } if (the_bibliography_section.length > 1){ toc_txt_ = format( @@ -1395,30 +1316,17 @@ if (the_bibliography_section.length > 1){ "bibliography", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; + toc_txt_ = format( "{ %s }#%s", "Bibliography", "bibliography", // _anchor_tag ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } if (the_bookindex_section["seg"].length > 1) { toc_txt_ = format( @@ -1427,15 +1335,8 @@ if (the_bookindex_section["seg"].length > 1) { "bookindex", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; } if (the_bookindex_section["scroll"].length > 1) { toc_txt_ = format( @@ -1444,15 +1345,8 @@ if (the_bookindex_section["scroll"].length > 1) { "bookindex", // _anchor_tag ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } if (the_blurb_section.length > 1) { toc_txt_ = format( @@ -1461,30 +1355,16 @@ if (the_blurb_section.length > 1) { "blurb", // segment_anchor_tag_that_object_belongs_to ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; toc_txt_ = format( "{ %s }#%s", "Blurb", "blurb", // _anchor_tag ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } debug(toc) { writefln( @@ -1493,7 +1373,7 @@ debug(toc) { the_table_of_contents_section["seg"].length ); foreach (toc_linked_heading; the_table_of_contents_section["seg"]) { - writeln(mkup.indent_by_spaces_provided(toc_linked_heading.para_attrib.indent_start), toc_linked_heading.object); + writeln(mkup.indent_by_spaces_provided(toc_linked_heading.indent_hang), toc_linked_heading.text); } } #+END_SRC @@ -1508,7 +1388,9 @@ auto document_the = [ "head": the_document_head_section, "toc_seg": the_table_of_contents_section["seg"], "toc_scroll": the_table_of_contents_section["scroll"], + /+ substantive/body: +/ "body": the_document_body_section, + /+ backmatter: +/ "endnotes_seg": the_endnotes_section["seg"], "endnotes_scroll": the_endnotes_section["scroll"], "glossary": the_glossary_section, @@ -1561,14 +1443,14 @@ auto object_reset(ref string[string] an_object) { #+name: abs_functions_header_set_common #+BEGIN_SRC d auto _common_reset_( - ref int[string] line_occur, + ref int[string] line_occur, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { line_occur["heading"] = State.off; - line_occur["para"]= State.off; - type["heading"] = State.off; - type["para"] = State.off; + line_occur["para"] = State.off; + type["heading"] = State.off; + type["para"] = State.off; object_reset(an_object); } #+END_SRC @@ -1578,7 +1460,7 @@ auto _common_reset_( #+name: abs_functions_ocn_status #+BEGIN_SRC d void _check_ocn_status_( - char[] line, + char[] line, ref int[string] type ) { if ((!line.empty) && (type["ocn_status_multi_obj"] == TriState.off)) { @@ -1630,9 +1512,9 @@ void _check_ocn_status_( #+name: abs_functions_block #+BEGIN_SRC d void _start_block_( - char[] line, + char[] line, ref int[string] type, - string[string] obj_cite_number_poem + string[string] obj_cite_number_poem ) { #+END_SRC @@ -1799,9 +1681,9 @@ void _start_block_( #+name: abs_functions_block_code #+BEGIN_SRC d void _code_block_( - char[] line, + char[] line, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { if (type["curly_code"] == TriState.on) { if (matchFirst(line, rgx.block_curly_code_close)) { @@ -2051,11 +1933,11 @@ why extra object stuff only in poem/verse? #+name: abs_functions_block_poem #+BEGIN_SRC d void _poem_block_( - char[] line, - ref string[string] an_object, - ref int[string] type, - ref int cntr, - string[string] obj_cite_number_poem, + char[] line, + ref string[string] an_object, + ref int[string] type, + ref int cntr, + string[string] obj_cite_number_poem, string[string][string] dochead_make_aa, ) { if (type["curly_poem"] == TriState.on) { @@ -2090,15 +1972,14 @@ void _poem_block_( obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2130,7 +2011,7 @@ void _poem_block_( } processing.remove("verse"); an_object["is"] = "verse"; - auto _node_t = node_construct.node_emitter( + auto comp_obj_location = node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2138,21 +2019,18 @@ void _poem_block_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2181,15 +2059,14 @@ void _poem_block_( obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; obj_cite_number_poem["end"] = to!string(obj_cite_number); object_reset(an_object); processing.remove("verse"); @@ -2220,8 +2097,8 @@ void _poem_block_( } processing.remove("verse"); an_object["is"] = "verse"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2229,21 +2106,18 @@ void _poem_block_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2258,9 +2132,9 @@ void _poem_block_( #+name: abs_functions_block_group #+BEGIN_SRC d void _group_block_( - char[] line, + char[] line, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { if (type["curly_group"] == State.on) { if (matchFirst(line, rgx.block_curly_group_close)) { @@ -2299,9 +2173,9 @@ void _group_block_( #+name: abs_functions_block_block #+BEGIN_SRC d void _block_block_( - char[] line, + char[] line, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { if (type["curly_block"] == TriState.on) { if (matchFirst(line, rgx.block_curly_block_close)) { @@ -2340,9 +2214,9 @@ void _block_block_( #+name: abs_functions_block_quote #+BEGIN_SRC d void _quote_block_( - char[] line, + char[] line, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { if (type["curly_quote"] == TriState.on) { if (matchFirst(line, rgx.block_curly_quote_close)) { @@ -2381,9 +2255,9 @@ void _quote_block_( #+name: abs_functions_block_table #+BEGIN_SRC d void _table_block_( - char[] line, + char[] line, ref string[string] an_object, - ref int[string] type + ref int[string] type ) { if (type["curly_table"] == TriState.on) { if (matchFirst(line, rgx.block_curly_table_close)) { @@ -2422,17 +2296,16 @@ void _table_block_( #+name: abs_functions_block_line_status_empty #+BEGIN_SRC d void _block_flag_line_empty_( - char[] line, - ref string[string] an_object, - ref ObjComposite[] the_document_body_section, + char[] line, + ref string[string] an_object, + ref ObjGenericComposite[] the_document_body_section, ref string[][string][string] bookindex_unordered_hashes, - ref int obj_cite_number, - ref string[string] _node_heading_str, - ref int[string] _node_heading_int, - ref int cntr, - ref int[string] type, - string[string] obj_cite_number_poem, - string[string][string] dochead_make_aa, + ref int obj_cite_number, + ref ObjGenericComposite _comp_obj_heading, + ref int cntr, + ref int[string] type, + string[string] obj_cite_number_poem, + string[string][string] dochead_make_aa, ) { // line.empty, post contents, empty variables --------------- assert( @@ -2452,8 +2325,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "code"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2461,21 +2334,18 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block_code( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_code = comp_obj_code.init; + comp_obj_code.use = "content"; + comp_obj_code.of = "block"; + comp_obj_code.is_a = an_object["is"]; + comp_obj_code.ocn = obj_cite_number; + comp_obj_code.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_code.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_code; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2487,8 +2357,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "verse"; // check also - auto _node_t = - node_construct.node_emitter( // + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2496,16 +2366,14 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; - the_document_body_section ~= - set_abstract_object.contents_block_obj_cite_number_string( - "poem", - "", - (obj_cite_number_poem["start"], obj_cite_number_poem["end"]), - _node_heading_str, - _node_heading_int, - ); // bookindex + comp_obj_poem_ocn = comp_obj_poem_ocn.init; + comp_obj_poem_ocn.use = "content"; + comp_obj_poem_ocn.of = "block"; + comp_obj_poem_ocn.is_a = "poem"; + comp_obj_poem_ocn.ocn = obj_cite_number; + comp_obj_poem_ocn.obj_cite_number = (obj_cite_number_poem["start"], obj_cite_number_poem["end"]); // not sure about this + comp_obj_poem_ocn.text = ""; // an_object["substantive"]; + the_document_body_section ~= comp_obj_poem_ocn; object_reset(an_object); processing.remove("verse"); type["blocks"] = TriState.off; @@ -2518,8 +2386,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "table"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2527,21 +2395,18 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2555,8 +2420,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "group"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2564,21 +2429,18 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2591,8 +2453,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "block"; - auto _node_t = - node_construct.node_emitter( + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2600,21 +2462,18 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2628,8 +2487,8 @@ void _block_flag_line_empty_( bookindex_unordered_hashes = bkidx_hash(an_object["bookindex_nugget"], obj_cite_number); an_object["is"] = "quote"; - auto _node_t = - node_construct.node_emitter( // + auto comp_obj_location = + node_construct.node_location_emitter( content_non_header, segment_anchor_tag_that_object_belongs_to, obj_cite_number, @@ -2637,21 +2496,18 @@ void _block_flag_line_empty_( heading_ptr-1, an_object["is"] ); - _node_heading_str = _node_t[0]; - _node_heading_int = _node_t[1]; auto substantive_object_and_anchor_tags_tuple = obj_im.obj_inline_markup_and_anchor_tags(an_object, an_object_key, dochead_make_aa); an_object["substantive"] = substantive_object_and_anchor_tags_tuple[0]; anchor_tags = substantive_object_and_anchor_tags_tuple[1]; - an_object["attrib"] = - obj_att.obj_attributes(an_object["is"], an_object[an_object_key], _node_heading_str, _node_heading_int); - the_document_body_section ~= - set_abstract_object.contents_block( - an_object["is"], - an_object["substantive"], - an_object["attrib"], - obj_cite_number - ); + comp_obj_block = comp_obj_block.init; + comp_obj_block.use = "content"; + comp_obj_block.of = "block"; + comp_obj_block.is_a = an_object["is"]; + comp_obj_block.ocn = obj_cite_number; + comp_obj_block.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + comp_obj_block.text = an_object["substantive"]; + the_document_body_section ~= comp_obj_block; object_reset(an_object); processing.remove("verse"); ++cntr; @@ -2722,11 +2578,11 @@ auto _book_index_( #+name: abs_functions_heading #+BEGIN_SRC d auto _heading_found_( - char[] line, - string dochead_make_identify_unmarked_headings, - ref string[string] heading_match_str, + char[] line, + string dochead_make_identify_unmarked_headings, + ref string[string] heading_match_str, ref Regex!(char)[string] heading_match_rgx, - ref int[string] type + ref int[string] type ) { if ((dochead_make_identify_unmarked_headings.length > 2) && (type["make_headings"] == State.off)) { @@ -2812,10 +2668,10 @@ auto _heading_found_( #+name: abs_functions_heading #+BEGIN_SRC d auto _heading_make_set_( - ref char[] line, - ref int[string] line_occur, + ref char[] line, + ref int[string] line_occur, ref Regex!(char)[string] heading_match_rgx, - ref int[string] type + ref int[string] type ) { if ((type["make_headings"] == State.on) && ((line_occur["para"] == State.off) @@ -2874,13 +2730,13 @@ auto _heading_make_set_( #+name: abs_functions_heading #+BEGIN_SRC d auto _heading_matched_( - char[] line, - ref int[string] line_occur, - ref string[string] an_object, - ref string an_object_key, - ref int[string] lv, - ref int[string] collapsed_lev, - ref int[string] type, + char[] line, + ref int[string] line_occur, + ref string[string] an_object, + ref string an_object_key, + ref int[string] lv, + ref int[string] collapsed_lev, + ref int[string] type, ref string[string][string] dochead_meta_aa ) { if (auto m = match(line, rgx.heading)) { @@ -3023,13 +2879,13 @@ auto _heading_matched_( #+name: abs_functions_para #+BEGIN_SRC d auto _para_match_( - char[] line, + char[] line, ref string[string] an_object, - ref string an_object_key, - ref int[string] indent, - ref bool bullet, - ref int[string] type, - ref int[string] line_occur, + ref string an_object_key, + ref int[string] indent, + ref bool bullet, + ref int[string] type, + ref int[string] line_occur, ) { if (line_occur["para"] == State.off) { /+ para matches +/ @@ -3346,8 +3202,8 @@ struct ObjInlineMarkup { #+name: ao_emitters_obj_inline_markup_and_anchor_tags #+BEGIN_SRC d auto obj_inline_markup_and_anchor_tags( - string[string] obj_, - string obj_key_, + string[string] obj_, + string obj_key_, string[string][string] dochead_make_aa ) in { } @@ -3429,27 +3285,21 @@ struct ObjInlineMarkup { return heading_toc_; }; auto table_of_contents_gather_headings( - string[string] obj_, - string[string][string] dochead_make_aa, - string segment_anchor_tag_that_object_belongs_to, - string _anchor_tag, - ObjComposite[][string] the_table_of_contents_section, + string[string] obj_, + string[string][string] dochead_make_aa, + string segment_anchor_tag_that_object_belongs_to, + string _anchor_tag, + ObjGenericComposite[][string] the_table_of_contents_section, ) in { } body { + ObjGenericComposite comp_obj_toc; char[] heading_toc_ = to!(char[])(obj_["body_nugget"].dup.strip); heading_toc_ = _clean_heading_toc_(heading_toc_); auto attrib=""; string toc_txt_; int[string] indent; - auto set_abstract_object = ObjectAbstractSet(); if (to!int(obj_["lev_markup_number"]) > 0) { - toc_txt_ = format( - "{ %s }#%s", - heading_toc_, - _anchor_tag, - ); - toc_txt_= munge.url_links(toc_txt_); indent=[ "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), @@ -3460,30 +3310,41 @@ struct ObjInlineMarkup { _anchor_tag, ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc = comp_obj_toc.init; + comp_obj_toc.use = "content"; + comp_obj_toc.of = "para"; + comp_obj_toc.is_a = "toc"; + comp_obj_toc.ocn = 0; + comp_obj_toc.obj_cite_number = "0"; + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.bullet = false; + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } else { indent=[ "hang_position" : 0, "base_position" : 0, ]; - the_table_of_contents_section["scroll"] ~= - set_abstract_object.contents_toc( - "toc", - "Table of Contents", - "", // attrib - 0, - indent, - false - ); + comp_obj_toc = comp_obj_toc.init; + comp_obj_toc.use = "content"; + comp_obj_toc.of = "para"; + comp_obj_toc.is_a = "toc"; + comp_obj_toc.ocn = 0; + comp_obj_toc.obj_cite_number = "0"; + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.bullet = false; + comp_obj_toc.text = "Table of Contents"; + the_table_of_contents_section["scroll"] ~= comp_obj_toc; } + comp_obj_toc = comp_obj_toc.init; + comp_obj_toc.use = "content"; + comp_obj_toc.of = "para"; + comp_obj_toc.is_a = "toc"; + comp_obj_toc.ocn = 0; + comp_obj_toc.obj_cite_number = "0"; + comp_obj_toc.bullet = false; switch (to!int(obj_["lev_markup_number"])) { case 0: indent=[ @@ -3492,15 +3353,10 @@ struct ObjInlineMarkup { ]; toc_txt_ = "{ Table of Contents }../toc.fn_suffix"; toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; break; case 1: .. case 3: indent=[ @@ -3512,15 +3368,10 @@ struct ObjInlineMarkup { heading_toc_, ); toc_txt_= munge.url_links(toc_txt_); - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; break; case 4: toc_txt_ = format( @@ -3533,15 +3384,10 @@ struct ObjInlineMarkup { "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), ]; - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; break; case 5: .. case 7: toc_txt_ = format( @@ -3555,15 +3401,10 @@ struct ObjInlineMarkup { "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), ]; - the_table_of_contents_section["seg"] ~= - set_abstract_object.contents_toc( - "toc", - toc_txt_, - "", // attrib - 0, - indent, - false - ); + comp_obj_toc.indent_hang = indent["hang_position"]; + comp_obj_toc.indent_base = indent["base_position"]; + comp_obj_toc.text = to!string(toc_txt_).strip; + the_table_of_contents_section["seg"] ~= comp_obj_toc; break; default: break; @@ -3586,10 +3427,9 @@ private: #+name: ao_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags #+BEGIN_SRC d static string _configured_auto_heading_numbering_and_segment_anchor_tags( - string munge_, - string[string] obj_, - string[string][string] - dochead_make_aa + 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))) { @@ -3806,20 +3646,17 @@ struct ObjAttributes { #+name: ao_emitters_obj_attributes_public #+BEGIN_SRC d string obj_attributes( - string obj_is_, - string obj_raw, - string[string] _node_heading_str, - int[string] _node_heading_int + string obj_is_, + string obj_raw, + ObjGenericComposite _comp_obj_heading, ) in { } body { scope(exit) { destroy(obj_is_); destroy(obj_raw); - destroy(_node_heading_str); - destroy(_node_heading_int); + destroy(_comp_obj_heading); } - _obj_attrib.remove("json"); _obj_attrib["json"] ="{"; switch (obj_is_) { case "heading": @@ -3857,7 +3694,7 @@ struct ObjAttributes { break; } _obj_attrib["json"] ~=" }"; - _obj_attrib["json"]=_set_additional_values_parse_as_json(_obj_attrib["json"], obj_is_, _node_heading_str, _node_heading_int); // check + _obj_attrib["json"]=_set_additional_values_parse_as_json(_obj_attrib["json"], obj_is_, _comp_obj_heading); // check debug(structattrib) { if (oa_j["is"].str() == "heading") { writeln(_obj_attrib["json"]); @@ -3892,24 +3729,24 @@ struct ObjAttributes { auto rgx = Rgx(); if (matchFirst(obj_txt_in, rgx.para_bullet)) { _obj_attributes =" \"bullet\": \"true\"," - ~ " \"indent_start\": 0," - ~ " \"indent_rest\": 0,"; + ~ " \"indent_hang\": 0," + ~ " \"indent_base\": 0,"; } else if (auto m = matchFirst(obj_txt_in, rgx.para_bullet_indent)) { _obj_attributes =" \"bullet\": \"true\"," - ~ " \"indent_start\": " ~ to!string(m.captures[1]) ~ "," - ~ " \"indent_rest\": " ~ to!string(m.captures[1]) ~ ","; + ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," + ~ " \"indent_base\": " ~ to!string(m.captures[1]) ~ ","; } else if (auto m = matchFirst(obj_txt_in, rgx.para_indent_hang)) { _obj_attributes =" \"bullet\": \"false\"," - ~ " \"indent_start\": " ~ to!string(m.captures[1]) ~ "," - ~ " \"indent_rest\": " ~ to!string(m.captures[2]) ~ ","; + ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," + ~ " \"indent_base\": " ~ to!string(m.captures[2]) ~ ","; } else if (auto m = matchFirst(obj_txt_in, rgx.para_indent)) { _obj_attributes =" \"bullet\": \"false\"," - ~ " \"indent_start\": " ~ to!string(m.captures[1]) ~ "," - ~ " \"indent_rest\": " ~ to!string(m.captures[1]) ~ ","; + ~ " \"indent_hang\": " ~ to!string(m.captures[1]) ~ "," + ~ " \"indent_base\": " ~ to!string(m.captures[1]) ~ ","; } else { _obj_attributes =" \"bullet\": \"false\"," - ~ " \"indent_start\": 0," - ~ " \"indent_rest\": 0,"; + ~ " \"indent_hang\": 0," + ~ " \"indent_base\": 0,"; } return _obj_attributes; } @@ -4064,26 +3901,25 @@ struct ObjAttributes { #+name: ao_emitters_obj_attributes_private_json #+BEGIN_SRC d string _set_additional_values_parse_as_json( - string _obj_attrib, - string obj_is_, - string[string] _node_heading_str, - int[string] _node_heading_int + string _obj_attrib, + string obj_is_, + ObjGenericComposite _comp_obj_heading, ) { // JSONValue oa_j = parseJSON(_obj_attrib); assert( (oa_j.type == JSON_TYPE.OBJECT) ); if (obj_is_ == "heading") { - oa_j.object["obj_cite_number"] = _node_heading_str["ocn"]; - oa_j.object["lev_markup_number"] = _node_heading_int["heading_lev_markup"]; - oa_j.object["lev_collapsed_number"] = _node_heading_int["heading_lev_collapsed"]; + oa_j.object["obj_cite_number"] = _comp_obj_heading.ocn; + oa_j.object["lev_markup_number"] = _comp_obj_heading.heading_lev_markup; + oa_j.object["lev_collapsed_number"] = _comp_obj_heading.heading_lev_collapsed; oa_j.object["heading_ptr"] = - _node_heading_int["ptr_heading"]; + _comp_obj_heading.ptr_heading; oa_j.object["doc_object_ptr"] = - _node_heading_int["ptr_doc_object"]; + _comp_obj_heading.ptr_doc_object; } - oa_j.object["parent_obj_cite_number"] = _node_heading_int["parent_ocn"]; // - oa_j.object["parent_lev_markup_number"] = _node_heading_int["parent_lev_markup"]; // + oa_j.object["parent_obj_cite_number"] = _comp_obj_heading.parent_ocn; + oa_j.object["parent_lev_markup_number"] = _comp_obj_heading.parent_lev_markup; _obj_attrib = oa_j.toString(); return _obj_attrib; } @@ -4110,7 +3946,7 @@ struct BookIndexNuggetHash { string[] bi_main_terms_split_arr; string[][string][string] bookindex_nugget_hash( string bookindex_section, - int obj_cite_number + int obj_cite_number ) in { debug(bookindexraw) { @@ -4264,68 +4100,48 @@ struct BookIndexReportSection { mixin SiSUnode; string type_is; string lev; - int lev_int_markup, lev_int_collapsed; + int heading_lev_markup, heading_lev_collapsed; string attrib; int[string] indent; - auto set_abstract_object = ObjectAbstractSet(); auto mainkeys = bookindex_unordered_hashes.byKey.array.sort().release; - ObjComposite[][string] bookindex_section; - auto node_heading_int_ = node_metadata_heading_int; - auto node_heading_str_ = node_metadata_heading_str; + ObjGenericComposite[][string] bookindex_section; + ObjGenericComposite comp_obj_heading_, comp_obj_para; auto node_para_int_ = node_metadata_para_int; auto node_para_str_ = node_metadata_para_str; if ((mainkeys.length > 0) && (opt_action_bool["backmatter"] && opt_action_bool["section_bookindex"])) { string bi_tmp_seg, bi_tmp_scroll; - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - bookindex_section["scroll"] ~= - set_abstract_object.contents_heading( - "Book Index", - node_heading_str_, - node_heading_int_, - [], - ); - bookindex_section["seg"] ~= - set_abstract_object.contents_heading( - "Book Index", - node_heading_str_, - node_heading_int_, - [], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Book Index"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + bookindex_section["scroll"] ~= comp_obj_heading_; + bookindex_section["seg"] ~= comp_obj_heading_; ++obj_cite_number; ++mkn; - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "bookindex"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "1"; - node_heading_int_["heading_lev_markup"] = 4; - node_heading_int_["heading_lev_collapsed"] = 2; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - bookindex_section["scroll"] ~= - set_abstract_object.contents_heading( - "Index", - node_heading_str_, - node_heading_int_, - ["bookindex"], - ); - bookindex_section["seg"] ~= - set_abstract_object.contents_heading( - "Index", - node_heading_str_, - node_heading_int_, - ["bookindex"], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Index"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "bookindex"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.anchor_tags = ["bookindex"]; + bookindex_section["scroll"] ~= comp_obj_heading_; + bookindex_section["seg"] ~= comp_obj_heading_; ++obj_cite_number; ++mkn; foreach (mainkey; mainkeys) { @@ -4359,52 +4175,33 @@ struct BookIndexReportSection { } bi_tmp_scroll = replaceFirst(bi_tmp_scroll, rgx.trailing_linebreak, ""); bi_tmp_seg = replaceFirst(bi_tmp_seg, rgx.trailing_linebreak, ""); - indent=[ "hang_position" : 0, "base_position" : 1, ]; - node_para_str_["is"] = "para"; - node_para_str_["attrib"] = ""; - node_para_int_["ocn"] = obj_cite_number; - node_para_int_["indent_hang"] = 0; - node_para_int_["indent_base"] = 1; - node_para_int_["bullet"] = 0; - bookindex_section["scroll"] ~= - set_abstract_object.contents_para( - bi_tmp_scroll, - node_para_str_, - node_para_int_, - ); - bookindex_section["seg"] ~= - set_abstract_object.contents_para( - bi_tmp_seg, - node_para_str_, - node_para_int_, - ); + comp_obj_para = comp_obj_para.init; + comp_obj_para.use = "content"; + comp_obj_para.of = "para"; + comp_obj_para.is_a = "para"; + comp_obj_para.text = to!string(bi_tmp_scroll).strip; + comp_obj_para.ocn = obj_cite_number; + comp_obj_para.obj_cite_number = to!string(obj_cite_number); + comp_obj_para.indent_hang = 0; + comp_obj_para.indent_base = 1; + comp_obj_para.bullet = false; + bookindex_section["scroll"] ~= comp_obj_para; + comp_obj_para.text = to!string(bi_tmp_seg).strip; + bookindex_section["seg"] ~= comp_obj_para; ++obj_cite_number; ++mkn; } } else { // no book index, (figure out what to do here) - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - bookindex_section["scroll"] ~= - set_abstract_object.contents_heading( - "(skip) there is no Book Index", - node_heading_str_, - node_heading_int_, - [""], - ); - bookindex_section["seg"] ~= - set_abstract_object.contents_heading( - "(skip) there is no Book Index", - node_heading_str_, - node_heading_int_, - [""], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.text = "(skip) there is no Book Index"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + bookindex_section["scroll"] ~= comp_obj_heading_; + bookindex_section["seg"] ~= comp_obj_heading_; } auto t = tuple(bookindex_section, obj_cite_number); return t; @@ -4434,9 +4231,9 @@ struct NotesSection { #+name: ao_emitters_endnotes #+BEGIN_SRC d private auto gather_notes_for_endnote_section( - ObjComposite[] contents_am, - string segment_anchor_tag_that_object_belongs_to, - int cntr, + ObjGenericComposite[] contents_am, + string segment_anchor_tag_that_object_belongs_to, + int cntr, ) in { // endnotes/ footnotes for @@ -4448,7 +4245,7 @@ struct NotesSection { assert(cntr >= previous_count); previous_count=cntr; assert( - match(contents_am[cntr].object, + match(contents_am[cntr].text, rgx.inline_notes_delimiter_al_regular_number_note) ); } @@ -4457,7 +4254,7 @@ struct NotesSection { foreach( m; matchAll( - contents_am[cntr].object, + contents_am[cntr].text, rgx.inline_notes_delimiter_al_regular_number_note ) ) { @@ -4521,102 +4318,88 @@ struct NotesSection { } body { mixin SiSUnode; - auto set_abstract_object = ObjectAbstractSet(); - ObjComposite[][string] the_endnotes_section; + ObjGenericComposite[][string] the_endnotes_section; auto endnotes_ = gathered_notes(); string type_is; string lev, lev_markup_number, lev_collapsed_number; string attrib; int[string] indent; - auto node_heading_int_ = node_metadata_heading_int; - auto node_heading_str_ = node_metadata_heading_str; + ObjGenericComposite comp_obj_heading_; if ((endnotes_["seg"].length > 0) && (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"])) { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_endnotes_section["seg"] ~= - set_abstract_object.contents_heading( - "Endnotes", - node_heading_str_, - node_heading_int_, - [], - ); - the_endnotes_section["scroll"] ~= - set_abstract_object.contents_heading( - "Endnotes", - node_heading_str_, - node_heading_int_, - [], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Endnotes"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_endnotes_section["seg"] ~= comp_obj_heading_; + the_endnotes_section["scroll"] ~= comp_obj_heading_; ++obj_cite_number; ++mkn; - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = "endnotes"; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "1"; - node_heading_int_["heading_lev_markup"] = 4; - node_heading_int_["heading_lev_collapsed"] = 2; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_endnotes_section["seg"] ~= - set_abstract_object.contents_heading( - "Endnotes", - node_heading_str_, - node_heading_int_, - ["endnotes"], - ); - the_endnotes_section["scroll"] ~= - set_abstract_object.contents_heading( - "Endnotes", - node_heading_str_, - node_heading_int_, - ["endnotes"], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "Endnotes"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.segment_anchor_tag = "endnotes"; + comp_obj_heading_.marked_up_level = "1"; + comp_obj_heading_.heading_lev_markup = 4; + comp_obj_heading_.heading_lev_collapsed = 2; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + comp_obj_heading_.anchor_tags = ["endnotes"]; + the_endnotes_section["seg"] ~= comp_obj_heading_; + the_endnotes_section["scroll"] ~= comp_obj_heading_; ++obj_cite_number; ++mkn; } else { - node_heading_str_["is"] = "heading"; - node_heading_str_["ocn"] = "0"; - node_heading_str_["segment_anchor_tag"] = ""; - node_heading_str_["attrib"] = ""; - node_heading_str_["marked_up_lev"] = "B"; - node_heading_int_["heading_lev_markup"] = 1; - node_heading_int_["heading_lev_collapsed"] = 1; - node_heading_int_["parent_ocn"] = 1; - node_heading_int_["parent_lev_markup"] = 0; - the_endnotes_section["seg"] ~= - set_abstract_object.contents_heading( - "(skip) there are no Endnotes", - node_heading_str_, - node_heading_int_, - [""], - ); - the_endnotes_section["scroll"] ~= - set_abstract_object.contents_heading( - "(skip) there are no Endnotes", - node_heading_str_, - node_heading_int_, - [""], - ); + comp_obj_heading_ = comp_obj_heading_.init; + comp_obj_heading_.use = "content"; + comp_obj_heading_.of = "para"; + comp_obj_heading_.is_a = "heading"; + comp_obj_heading_.text = "(skip) there are no Endnotes"; + comp_obj_heading_.ocn = 0; + comp_obj_heading_.marked_up_level = "B"; + comp_obj_heading_.heading_lev_markup = 1; + comp_obj_heading_.heading_lev_collapsed = 1; + comp_obj_heading_.parent_ocn = 1; + comp_obj_heading_.parent_lev_markup = 0; + the_endnotes_section["seg"] ~= comp_obj_heading_; + the_endnotes_section["scroll"] ~= comp_obj_heading_; } if (opt_action_bool["backmatter"] && opt_action_bool["section_endnotes"]) { + ObjGenericComposite comp_obj_endnote_; + comp_obj_endnote_ = comp_obj_endnote_.init; + comp_obj_endnote_.use = "content"; + comp_obj_endnote_.of = "para"; + comp_obj_endnote_.is_a = "endnote"; + comp_obj_endnote_.ocn = 0; + comp_obj_endnote_.obj_cite_number = "0"; + comp_obj_endnote_.indent_hang = 0; + comp_obj_endnote_.indent_base = 0; + comp_obj_endnote_.bullet = false; foreach (i, endnote; endnotes_["seg"]) { - attrib=""; - the_endnotes_section["seg"] ~= - set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); + auto m = (matchFirst(endnote, rgx.note_ref)); + string notenumber = to!string(m.captures[1]); + string anchor_tag = "note_" ~ notenumber; + comp_obj_endnote_.anchor_tags ~= [ endnotes_["anchor"][i] ]; // fix + comp_obj_endnote_.text = endnote.strip; + the_endnotes_section["seg"] ~= comp_obj_endnote_; } foreach (i, endnote; endnotes_["scroll"]) { - attrib=""; - the_endnotes_section["scroll"] ~= - set_abstract_object.contents_endnote(endnote, endnotes_["anchor"][i]); + auto m = (matchFirst(endnote, rgx.note_ref)); + string notenumber = to!string(m.captures[1]); + string anchor_tag = "note_" ~ notenumber; + comp_obj_endnote_.anchor_tags ~= [ endnotes_["anchor"][i] ]; // fix + comp_obj_endnote_.text = endnote.strip; + the_endnotes_section["scroll"] ~= comp_obj_endnote_; } } auto t = tuple(the_endnotes_section, obj_cite_number); @@ -4644,8 +4427,8 @@ struct Bibliography { #+name: ao_emitters_bibliography #+BEGIN_SRC d public JSONValue[] _bibliography_( - ref string[] biblio_unsorted_incomplete, - ref JSONValue[] bib_arr_json + ref string[] biblio_unsorted_incomplete, + ref JSONValue[] bib_arr_json ) in { } body { @@ -4675,7 +4458,7 @@ struct Bibliography { #+name: ao_emitters_bibliography #+BEGIN_SRC d final private JSONValue[] _biblio_unsorted_complete_( - string[] biblio_unordered, + string[] biblio_unordered, ref JSONValue[] bib_arr_json ) { foreach (bibent; biblio_unordered) { @@ -4763,11 +4546,11 @@ struct NodeStructureMetadata { #+name: ao_emitters_metadata #+BEGIN_SRC d - auto node_emitter( + ObjGenericComposite node_location_emitter( string lev_markup_number, string segment_anchor_tag, int obj_cite_number_, - int cntr_, + int cntr_, int ptr_, string is_ ) @@ -4793,23 +4576,13 @@ struct NodeStructureMetadata { p_["lev_markup_number"] = DocStructMarkupHeading.h_text_1; p_["obj_cite_number"] = lv4; } - string[string] _node_heading_str = [ - "is" : is_, - "ocn" : to!string(obj_cite_number_), - "marked_up_lev" : "", - "segment_anchor_tag" : to!string(segment_anchor_tag), - "attrib" : "", - ]; - int[string] _node_heading_int = [ - "ocn" : obj_cite_number_, - "ptr_doc_object" : 0, - "ptr_html_segnames" : 0, - "ptr_heading" : 0, - "heading_lev_markup" : 0, - "heading_lev_collapsed" : 0, - "parent_ocn" : p_["obj_cite_number"], - "parent_lev_markup" : p_["lev_markup_number"], - ]; + ObjGenericComposite comp_obj_location; + comp_obj_location = comp_obj_location.init; + comp_obj_location.is_a = is_; + comp_obj_location.ocn = obj_cite_number_; + comp_obj_location.segment_anchor_tag = to!string(segment_anchor_tag); + comp_obj_location.parent_ocn = p_["obj_cite_number"]; + comp_obj_location.parent_lev_markup = p_["lev_markup_number"]; debug(node) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { writeln("x ", to!string(_node)); @@ -4817,14 +4590,10 @@ struct NodeStructureMetadata { writeln("- ", to!string(_node)); } } - assert(_node_heading_int["parent_lev_markup"] >= 4); // - assert(_node_heading_int["parent_lev_markup"] <= 7); // - assert(_node_heading_int["parent_ocn"] >= 0); // hmm, perhaps // - auto t = tuple( - _node_heading_str, - _node_heading_int, - ); - return t; + assert(comp_obj_location.parent_lev_markup >= 4); + assert(comp_obj_location.parent_lev_markup <= 7); + assert(comp_obj_location.parent_ocn >= 0); + return comp_obj_location; } invariant() { } @@ -4834,7 +4603,8 @@ struct NodeStructureMetadata { #+name: ao_emitters_metadata #+BEGIN_SRC d - auto node_emitter_heading( + ObjGenericComposite node_emitter_heading( + string _text, string lev, string lev_markup_number, string lev_collapsed_number, @@ -4843,7 +4613,7 @@ struct NodeStructureMetadata { int cntr_, int ptr_, string is_, - int html_segnames_ptr, + int html_segnames_ptr, ) in { auto rgx = Rgx(); @@ -4942,23 +4712,23 @@ struct NodeStructureMetadata { default: break; } - string[string] _node_heading_str = [ - "is" : is_, - "ocn" : to!string(obj_cite_number_), - "marked_up_lev" : lev, - "segment_anchor_tag" : to!string(segment_anchor_tag), - "attrib" : "", - ]; - int[string] _node_heading_int = [ - "ocn" : obj_cite_number_, - "ptr_doc_object" : cntr_, - "ptr_html_segnames" : ((lev_markup_number == "4") ? html_segnames_ptr : 0), - "ptr_heading" : ptr_, - "heading_lev_markup" : (!(lev_markup_number.empty) ? to!int(lev_markup_number) : 0), // switch to use int if possible - "heading_lev_collapsed" : (!(lev_collapsed_number.empty) ? to!int(lev_collapsed_number) : 0), // switch to use int if possible - "parent_ocn" : p_["obj_cite_number"], - "parent_lev_markup" : p_["lev_markup_number"], - ]; + ObjGenericComposite _comp_obj_heading_; + _comp_obj_heading_ = _comp_obj_heading_.init; + _comp_obj_heading_.use = "content"; + _comp_obj_heading_.of = "para"; + _comp_obj_heading_.is_a = "heading"; + _comp_obj_heading_.text = to!string(_text).strip; + _comp_obj_heading_.ocn = obj_cite_number_; + _comp_obj_heading_.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); + _comp_obj_heading_.segment_anchor_tag = to!string(segment_anchor_tag); + _comp_obj_heading_.marked_up_level = lev; + _comp_obj_heading_.heading_lev_markup = (!(lev_markup_number.empty) ? to!int(lev_markup_number) : 0); + _comp_obj_heading_.heading_lev_collapsed = (!(lev_collapsed_number.empty) ? to!int(lev_collapsed_number) : 0); + _comp_obj_heading_.parent_ocn = p_["obj_cite_number"]; + _comp_obj_heading_.parent_lev_markup = p_["lev_markup_number"]; + _comp_obj_heading_.ptr_doc_object = cntr_; + _comp_obj_heading_.ptr_html_segnames = ((lev_markup_number == "4") ? html_segnames_ptr : 0); + _comp_obj_heading_.ptr_heading = ptr_; debug(node) { if (match(lev_markup_number, rgx.levels_numbered_headings)) { writeln("* ", to!string(_node)); @@ -4969,44 +4739,37 @@ struct NodeStructureMetadata { writeln("* ", to!string(_node)); } } - assert(_node_heading_int["parent_lev_markup"] <= 7); - assert(_node_heading_int["parent_ocn"] >= 0); + assert(_comp_obj_heading_.parent_lev_markup <= 7); + assert(_comp_obj_heading_.parent_ocn >= 0); if (match(lev_markup_number, rgx.levels_numbered_headings)) { - assert(_node_heading_int["heading_lev_markup"] <= 7); // issues - assert(to!int(_node_heading_str["ocn"]) >= 0); - if (_node_heading_int["parent_lev_markup"] > 0) { - assert(_node_heading_int["parent_lev_markup"] < _node_heading_int["heading_lev_markup"]); - if (to!int(_node_heading_str["ocn"]) != 0) { - assert(_node_heading_int["parent_ocn"] < to!int(_node_heading_str["ocn"])); + assert(_comp_obj_heading_.heading_lev_markup <= 7); + assert(_comp_obj_heading_.ocn >= 0); + if (_comp_obj_heading_.parent_lev_markup > 0) { + assert(_comp_obj_heading_.parent_lev_markup < _comp_obj_heading_.heading_lev_markup); + if (_comp_obj_heading_.ocn != 0) { + assert(_comp_obj_heading_.parent_ocn < _comp_obj_heading_.ocn); } } - if (_node_heading_int["heading_lev_markup"] == 0) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_sect_A); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_sect_B) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_sect_A); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_sect_C) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_sect_B); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_sect_D) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_sect_C); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_text_1) { - assert(_node_heading_int["parent_lev_markup"] <= DocStructMarkupHeading.h_sect_D); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_text_2) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_text_1); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_text_3) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_text_2); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_text_4) { - assert(_node_heading_int["parent_lev_markup"] == DocStructMarkupHeading.h_text_3); - } else if (_node_heading_int["heading_lev_markup"] == DocStructMarkupHeading.h_text_5) { - // // writeln(to!int(_node_heading_int["parent_lev_markup"])); - // // assert(to!int(_node_heading_int["parent_lev_markup"]) >= 4); - // // assert(to!int(_node_heading_int["parent_lev_markup"]) <= 7); + if (_comp_obj_heading_.heading_lev_markup == 0) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_sect_A); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_sect_B) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_sect_A); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_sect_C) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_sect_B); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_sect_D) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_sect_C); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_text_1) { + assert(_comp_obj_heading_.parent_lev_markup <= DocStructMarkupHeading.h_sect_D); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_text_2) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_text_1); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_text_3) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_text_2); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_text_4) { + assert(_comp_obj_heading_.parent_lev_markup == DocStructMarkupHeading.h_text_3); + } else if (_comp_obj_heading_.heading_lev_markup == DocStructMarkupHeading.h_text_5) { } } - auto t = tuple( - _node_heading_str, - _node_heading_int, - ); - return t; + return _comp_obj_heading_; } invariant() { } @@ -5026,7 +4789,7 @@ struct NodeStructureMetadata { #+BEGIN_SRC d auto assertions_doc_structure( string[string] an_object, - int[string] lv + int[string] lv ) { if (lv["h3"] > State.off) { assert(lv["h0"] > State.off); @@ -5240,66 +5003,12 @@ set abstracted objects for downstream processing #+BEGIN_SRC d struct HeadingAttrib { 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 - -*** paragraph attribute - -#+name: ao_structs_init -#+BEGIN_SRC d -struct ParaAttrib { - int indent_start = 0; - int indent_rest = 0; - bool bullet = false; -} -#+END_SRC - -*** block attribute - -#+name: ao_structs_init -#+BEGIN_SRC d -struct BlockAttrib { - string syntax = ""; -} -#+END_SRC - -*** comment attribute - -#+name: ao_structs_init -#+BEGIN_SRC d -struct Comment { - // no .attrib and no .obj_cite_number -} -#+END_SRC - -*** TODO node - -#+name: ao_structs_init -#+BEGIN_SRC d -struct 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[string][string] node; + int heading_lev_markup = 9; + int heading_lev_collapsed = 9; + int[] closes_lev_collapsed = []; + int[] closes_lev_markup = []; + int array_ptr = 0; + int heading_array_ptr_segments = 0; } #+END_SRC @@ -5307,202 +5016,46 @@ struct Node { #+name: ao_structs_init #+BEGIN_SRC d -struct ObjComposite { - string use = ""; - string of = ""; - string is_a = ""; - string object = ""; - string obj_cite_number = ""; // not used for calculations? output only? else int - string[] anchor_tags = []; - HeadingAttrib heading_attrib; - ParaAttrib para_attrib; - BlockAttrib block_attrib; - Node node_structure; +struct ObjGenericComposite { + // size_t id; + string use = ""; + string of = ""; + string is_a = ""; + string text = ""; + string obj_cite_number = ""; + string[] anchor_tags = []; + string marked_up_level = "9"; + int[] closes_lev_collapsed = []; + int[] closes_lev_markup = []; + int indent_base = 0; + int indent_hang = 0; + bool bullet = false; + string syntax = ""; + int ocn = 0; + string segment_anchor_tag = ""; + int parent_lev_markup = 0; + int parent_ocn = 0; + int[] ancestors = []; + int heading_lev_markup = 9; + int heading_lev_collapsed = 9; + int[] heading_closes_lev_collapsed = []; + int[] heading_closes_lev_markup = []; + int heading_array_ptr = 0; + int ptr_doc_object = 0; + int ptr_html_segnames = 0; + int ptr_heading = 0; + int array_ptr = 0; + int heading_array_ptr_segments = 0; + string[string][string] node; } #+END_SRC -*** object composite array +*** The Objects: generic composite object array #+name: ao_structs_init #+BEGIN_SRC d -struct ObjCompositeArr { - ObjComposite[] oca; -} -#+END_SRC - -** object setter :set: -*** comment :comment: - -#+name: ao_object_setter_comment -#+BEGIN_SRC d -auto contents_comment(in string object) { - ObjComposite object_set; - object_set.use = "comment"; - object_set.of = "comment"; - object_set.is_a = "comment"; - object_set.object = object; - return object_set; -} -#+END_SRC - -*** heading :heading: - -#+name: ao_object_setter_heading -#+BEGIN_SRC d -auto contents_heading( - in string object, - in string[string] _node_heading_str, - in int[string] _node_heading_int, - in string[] tags, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "para"; - object_set.is_a = "heading"; - object_set.object = object.strip; - object_set.obj_cite_number = _node_heading_str["ocn"]; - object_set.anchor_tags ~= tags; - object_set.heading_attrib.lev = _node_heading_str["marked_up_lev"]; - object_set.heading_attrib.lev_int_markup = _node_heading_int["heading_lev_markup"]; - object_set.heading_attrib.lev_int_collapsed = _node_heading_int["heading_lev_collapsed"]; - return object_set; -} -#+END_SRC - -*** para :para: - -#+name: ao_object_setter_para -#+BEGIN_SRC d -auto contents_para( - in string object, - in string[string] _node_para_str, - in int[string] _node_para_int, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "para"; - object_set.is_a = "para"; - object_set.object = object.strip; - object_set.obj_cite_number = (_node_para_int["ocn"]==0) ? "" : to!string(_node_para_int["ocn"]); - object_set.anchor_tags = []; - object_set.para_attrib.indent_start = _node_para_int["indent_hang"]; - object_set.para_attrib.indent_rest = _node_para_int["indent_base"]; - object_set.para_attrib.bullet = (_node_para_int["bullet"] == 1) ? true : false; - return object_set; -} -#+END_SRC - -*** toc :para: - -#+name: ao_object_setter_para -#+BEGIN_SRC d -auto contents_toc( - in string is_a, - in string object, - in string attrib, - in int obj_cite_number, - in int[string] indent, - in bool bullet, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "para"; - object_set.is_a = "toc"; - object_set.object = object.strip; - object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - object_set.para_attrib.indent_start = to!int(indent["hang_position"]); - object_set.para_attrib.indent_rest = to!int(indent["base_position"]); - object_set.para_attrib.bullet = false; // bullet; - return object_set; -} -#+END_SRC - -*** para_endnote :para: - -#+name: ao_object_setter_endnote -#+BEGIN_SRC d -auto contents_endnote( - in string object, - in string tag, -) { - auto m = (matchFirst(object, rgx.note_ref)); - string notenumber = to!string(m.captures[1]); - string anchor_tag = "note_" ~ notenumber; - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "para"; - object_set.is_a = "endnote"; - object_set.object = object.strip; - object_set.obj_cite_number = ""; - object_set.anchor_tags ~= [ tag ]; - object_set.para_attrib.indent_start = 0; - object_set.para_attrib.indent_rest = 0; - object_set.para_attrib.bullet = false; - return object_set; -} -#+END_SRC - -*** block :block: - -#+name: ao_object_setter_block -#+BEGIN_SRC d -auto contents_block( - in string type_is, - in string object, - in string attrib, - in int obj_cite_number, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "block"; - object_set.is_a = type_is; - object_set.object = object; - object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - object_set.anchor_tags = []; - return object_set; -} -#+END_SRC - -*** block code :block:code: - -#+name: ao_object_setter_block_code -#+BEGIN_SRC d -auto contents_block_code( - in string type_is, - in string object, - in string attrib_language_syntax, - in int obj_cite_number, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "block"; - object_set.is_a = type_is; - object_set.block_attrib.syntax = attrib_language_syntax; - object_set.object = object; - object_set.obj_cite_number = (obj_cite_number==0) ? "" : to!string(obj_cite_number); - object_set.anchor_tags = []; - return object_set; -} -#+END_SRC - -*** block obj_cite_number string :block: - -#+name: ao_object_setter_block_obj_cite_number_string -#+BEGIN_SRC d -auto contents_block_obj_cite_number_string( - in string type_is, - in string object, - in string obj_cite_number, - in string[string] _node_str, - in int[string] _node_int, -) { - ObjComposite object_set; - object_set.use = "content"; - object_set.of = "block"; - object_set.is_a = type_is; - object_set.object = object; - object_set.obj_cite_number = obj_cite_number; - return object_set; +struct TheObjects { + ObjGenericComposite[] oca; } #+END_SRC diff --git a/org/ao_conf_make_meta.org b/org/ao_conf_make_meta.org index bf39340..94236e7 100644 --- a/org/ao_conf_make_meta.org +++ b/org/ao_conf_make_meta.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle: ** 1. Header Hub :ao_markup_header_extract: #+BEGIN_SRC d :tangle ../src/sdp/ao_conf_make_meta.d diff --git a/org/ao_defaults.org b/org/ao_defaults.org index 26f8ae8..2aad14e 100644 --- a/org/ao_defaults.org +++ b/org/ao_defaults.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle: ** 1. defaults: :ao_defaults.d: #+name: tangle_ao_defaults diff --git a/org/ao_output_debugs.org b/org/ao_output_debugs.org index bea972e..28fcef2 100644 --- a/org/ao_output_debugs.org +++ b/org/ao_output_debugs.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle: ** code structure: :ao_output_debugs.d: #+name: tangle_ao_output_debugs @@ -74,8 +74,8 @@ debug(parent) { "%s node: %s heading: %s %s", obj.obj_cite_number, obj.node, - obj.lev_int_markup, - obj.object, + obj.heading_lev_markup, + obj.text, ); } } @@ -101,7 +101,7 @@ debug(dumpdoc) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -120,11 +120,11 @@ void out_toc(S)( if (contents[key].length > 1) { string indent_spaces; foreach (obj; contents[key]) { - indent_spaces=markup.indent_by_spaces_provided(obj.para_attrib.indent_start); + indent_spaces=markup.indent_by_spaces_provided(obj.indent_hang); writefln( "%s%s", indent_spaces, - obj.object + obj.text ); } } @@ -144,7 +144,7 @@ void out_endnotes(S)( writefln( "[%s]\n%s", obj.is_a, - obj.object + obj.text ); } } @@ -165,7 +165,7 @@ void out_bookindex(S)( "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -185,7 +185,7 @@ debug(section_head) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -235,7 +235,7 @@ debug(section_body) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -286,7 +286,7 @@ debug(section_glossary) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -305,7 +305,7 @@ debug(section_bibliography) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -356,7 +356,7 @@ debug(blurb_section) { "[%s][%s]\n%s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -381,7 +381,7 @@ debug(objects) { "* [%s][%s] %s", obj.obj_cite_number, obj.is_a, - obj.object + obj.text ); } } @@ -564,11 +564,11 @@ debug(anchor) { if (obj.is_a == "heading") { writefln( "%s~ [%s] %s %s", - obj.heading_attrib.lev, + obj.marked_up_level, obj.obj_cite_number, obj.anchor_tags, // "[", obj["is"], "] ", - obj.object + obj.text ); } } @@ -581,48 +581,15 @@ debug(anchor) { #+name: ao_output_debugs #+BEGIN_SRC d debug(heading) { // heading - string spc; foreach (k; document_section_keys_sequenced["seg"]) { foreach (o; contents[k]) { if (o.is_a == "heading") { - switch (o.heading_attrib.lev_int_markup) { - case 0: - spc=""; - break; - case 1: - spc=" "; - break; - case 2: - spc=" "; - break; - case 3: - spc=" "; - break; - case 4: - spc=" "; - break; - case 5: - spc=" "; - break; - case 6: - spc=" "; - break; - case 7: - spc=" "; - break; - case 8: - spc=" "; - break; - default: - spc=""; - break; - } writefln( "%s* %s\n (markup level: %s; collapsed level: %s)", - spc, - strip(o.object), - o.heading_attrib.lev_int_markup, - o.heading_attrib.lev_int_collapsed + replicate(" ", o.heading_lev_markup), + strip(o.text), + o.heading_lev_markup, + o.heading_lev_collapsed, ); } } @@ -646,10 +613,10 @@ debug(headings) { if (obj.is_a == "heading") { writefln( "%s~ [%s] %s", - obj.heading_attrib.lev, + obj.marked_up_level, obj.obj_cite_number, // "[", obj["is"], "] ", - obj.object + obj.text ); } } diff --git a/org/ao_read_source_files.org b/org/ao_read_source_files.org index 3a72106..05e15eb 100644 --- a/org/ao_read_source_files.org +++ b/org/ao_read_source_files.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle: ** 1. config files (conf.sdl & sisu_document_make) :ao_config_files: *** config files, read in @@ -525,58 +525,6 @@ debug(insert) { // insert file return contents; #+END_SRC -** config files (conf.sdl & sisu_document_make) :ao_config_files: - -*** config files, read in - -#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d -/++ - read configuration files<BR> - - read config files<BR> - ao_config_files.d -+/ -template SiSUconfigIn() { - private import - std.exception, - std.stdio, - std.utf, - std.conv : to; - private - struct ConfigIn { - private import std.file; - <<ao_config_file_in>> - } -} -#+END_SRC - -*** config files get sdlang root tag - -#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d -/+ - -+/ -template SiSUconfigSDLang() { - struct ConfigSDLangRootTag { - <<ao_config_file_sdlang>> - } -} -#+END_SRC - -*** config files hub - -#+BEGIN_SRC d :tangle ../src/sdp/ao_read_config_files.d -/+ - -+/ -template SiSUconfigSDLangHub() { - mixin SiSUconfigIn; - mixin SiSUconfigSDLang; - struct ConfigHub { - <<ao_config_file_sdlang_hub>> - } -} -#+END_SRC - * figure out ** break up file here to sisu markup content and header diff --git a/org/compile_time_info.org b/org/compile_time_info.org index ee143eb..4e7e3da 100644 --- a/org/compile_time_info.org +++ b/org/compile_time_info.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* Code Outline / Structure (tangles) :tangle: +* Code Skeleton / Outline / Structure (tangles) :tangle: ** compile_time_info: :compile_time_info.d: #+begin_src d :tangle ../src/sdp/compile_time_info.d diff --git a/org/output.org b/org/output.org index 0bad148..976fcdd 100644 --- a/org/output.org +++ b/org/output.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[./sdp.org][sdp]] [[./][org/]] -* Code Outline / Structure (tangles) :tangle: +* Code Skeleton / Outline / Structure (tangles) :tangle: ** output hub template file [#A] #+BEGIN_SRC d :tangle ../src/sdp/output_hub.d @@ -126,13 +126,13 @@ auto html_heading(O)( </div>¶", obj.obj_cite_number, obj.obj_cite_number, - obj.heading_attrib.lev_int_markup, + obj.heading_lev_markup, obj.is_a, obj.obj_cite_number, obj.obj_cite_number, tags, - obj.object, - obj.heading_attrib.lev_int_markup + obj.text, + obj.heading_lev_markup, ); return o; } @@ -157,10 +157,10 @@ auto html_para(O)( obj.obj_cite_number, obj.obj_cite_number, obj.is_a, - obj.para_attrib.indent_start, - obj.para_attrib.indent_rest, + obj.indent_hang, + obj.indent_base, tags, - obj.object + obj.text ); } else { o = format(q"¶ <div class="substance"> @@ -172,11 +172,11 @@ auto html_para(O)( obj.obj_cite_number, obj.obj_cite_number, obj.is_a, - obj.para_attrib.indent_start, - obj.para_attrib.indent_rest, + obj.indent_hang, + obj.indent_base, obj.obj_cite_number, tags, - obj.object + obj.text ); } return o; @@ -201,7 +201,7 @@ auto html_nugget(O)( obj.obj_cite_number, obj.is_a, obj.obj_cite_number, - obj.object + obj.text ); return o; } @@ -258,9 +258,9 @@ auto html_toc(O)( </p> </div>¶", obj.is_a, - obj.para_attrib.indent_start, - obj.para_attrib.indent_rest, - obj.object + obj.indent_hang, + obj.indent_base, + obj.text ); return o; } @@ -278,9 +278,9 @@ auto html_endnote(O)( %s </p>¶", obj.is_a, - obj.para_attrib.indent_start, - obj.para_attrib.indent_rest, - obj.object + obj.indent_hang, + obj.indent_base, + obj.text ); return o; } diff --git a/org/sdp.org b/org/sdp.org index e359c65..274c285 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -13,7 +13,7 @@ #+TAGS: assert(a) class(c) debug(d) mixin(m) sdp(s) tangle(T) template(t) WEB(W) noexport(n) [[../maker.org][maker.org makefile]] [[./][org/]] -* 0. Code Outline / Structure (tangles) :tangle: +* 0. Code Skeleton / Outline / Structure (tangles) :tangle: ** TODO version.txt: set version (sisu document parser) :version: #+NAME: version_txt @@ -24,7 +24,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 9, 6); +enum ver = Version(0, 10, 0); #+END_SRC ** TODO sdp src/sdp.d :sdp.d: @@ -286,6 +286,7 @@ bool[string] opt_action_bool = [ "section_bookindex" : true, "section_blurb" : true, "backmatter" : true, + "skip_output" : false, ]; auto helpInfo = getopt(args, std.getopt.config.passThrough, @@ -320,6 +321,7 @@ auto helpInfo = getopt(args, "section-bookindex", "--section-bookindex process document bookindex (default)", &opt_action_bool["section_bookindex"], "section-blurb", "--section-blurb process document blurb (default)", &opt_action_bool["section_blurb"], "backmatter", "--section-backmatter process document backmatter (default)", &opt_action_bool["backmatter"], + "skip_output", "--skip-output", &opt_action_bool["skip_output"], ); if (helpInfo.helpWanted) { defaultGetoptPrinter("Some information about the program.", helpInfo.options); @@ -498,15 +500,17 @@ debug(checkdoc) { #+NAME: sdp_each_file_do_selected_output #+BEGIN_SRC d /+ ↓ output hub +/ -output.hub( - doc_ao_contents, - document_section_keys_sequenced, - doc_html_segnames, - dochead_make, - dochead_meta, - fn_src, - opt_action_bool -); +if (!(opt_action_bool["skip_output"])) { + output.hub( + doc_ao_contents, + document_section_keys_sequenced, + doc_html_segnames, + dochead_make, + dochead_meta, + fn_src, + opt_action_bool + ); +} #+END_SRC **** scope (on loop exit) :scope:exit: |