diff options
Diffstat (limited to 'org')
| -rw-r--r-- | org/doc_reform.org | 2 | ||||
| -rw-r--r-- | org/meta_abstraction.org | 211 | ||||
| -rw-r--r-- | org/output_hub.org | 8 | ||||
| -rw-r--r-- | org/output_sqlite.org | 32 | ||||
| -rw-r--r-- | org/output_xmls.org | 403 | 
5 files changed, 354 insertions, 302 deletions
| diff --git a/org/doc_reform.org b/org/doc_reform.org index fe66011..80e703b 100644 --- a/org/doc_reform.org +++ b/org/doc_reform.org @@ -812,7 +812,7 @@ if (!(doc_matters.opt.action.skip_output)) {    ) {      writeln("step5 commence → (process outputs)");    } -  outputHub!()(doc_abstraction, doc_matters); +  doc_abstraction.outputHub!()(doc_matters);    if ((_opt_action.debug_do)    || (_opt_action.very_verbose)    ) { diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index 5249df1..10eeddd 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -635,7 +635,7 @@ debug(srclines) {  #+name: abs_in_loop_body_00  #+BEGIN_SRC d  if (!line.empty) { -  obj_type_status = _check_ocn_status_(line, obj_type_status); +  obj_type_status = line._check_ocn_status_(obj_type_status);  }  #+END_SRC @@ -645,7 +645,7 @@ if (!line.empty) {  #+name: abs_in_loop_body_00_code_block  #+BEGIN_SRC d  /+ block object: code +/ -_code_block_(line, an_object, obj_type_status); +line._code_block_(an_object, obj_type_status);  continue;  #+END_SRC @@ -665,7 +665,7 @@ if (line.matchFirst(rgx.heading_biblio)    obj_type_status["biblio_section"]   = State.on;    obj_type_status["blurb_section"]    = State.off;    if (opt_action.backmatter && opt_action.section_biblio) { -    _biblio_block_(line, obj_type_status, bib_entry, biblio_entry_str_json, biblio_arr_json); +    line._biblio_block_(obj_type_status, bib_entry, biblio_entry_str_json, biblio_arr_json);      debug(bibliobuild) {        writeln("-  ", biblio_entry_str_json);        writeln("-> ", biblio_arr_json.length); @@ -754,7 +754,7 @@ if there is a glossary section you need to:        tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"]              = comp_obj_heading_.tags.in_segment_html;        tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;      } else { -      _para_match_(line, an_object, an_object_key, indent, bullet, obj_type_status, line_occur); +      line._para_match_(an_object, an_object_key, indent, bullet, obj_type_status, line_occur);        comp_obj_para                               = comp_obj_para.init;        comp_obj_para.metainfo.is_of_part           = "backmatter";        comp_obj_para.metainfo.is_of_section        = "glossary"; @@ -906,7 +906,7 @@ if there is a blurb section you need to:        tag_assoc[comp_obj_heading_.tags.anchor_tag_html]["seg_lv4"]              = comp_obj_heading_.tags.in_segment_html;        tag_assoc[comp_obj_heading_.tags.segment_anchor_tag_epub]["seg_lv1_to_4"] = comp_obj_heading_.tags.segment_anchor_tag_epub;      } else { -      _para_match_(line, an_object, an_object_key, indent, bullet, obj_type_status, line_occur); +      line._para_match_(an_object, an_object_key, indent, bullet, obj_type_status, line_occur);        comp_obj_para                               = comp_obj_para.init;        comp_obj_para.metainfo.is_of_part           = "backmatter";        comp_obj_para.metainfo.is_of_section        = "blurb"; @@ -935,9 +935,9 @@ if there is a blurb section you need to:  #+BEGIN_SRC d  } else if (obj_type_status["quote"] == TriState.on) {    /+ within block object: quote +/ -  line = _doc_header_and_make_substitutions_(line, conf_make_meta); -  line = _doc_header_and_make_substitutions_fontface_(line, conf_make_meta); -  _quote_block_(line, an_object, obj_type_status); +  line = line._doc_header_and_make_substitutions_(conf_make_meta); +  line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta); +  line._quote_block_(an_object, obj_type_status);    continue;  #+END_SRC @@ -948,11 +948,11 @@ if there is a blurb section you need to:  /+ within block object: group +/  } else if (obj_type_status["group"] == TriState.on) {    /+ within block object: group +/ -  line = _doc_header_and_make_substitutions_(line, conf_make_meta); -  line = _doc_header_and_make_substitutions_fontface_(line, conf_make_meta); +  line = line._doc_header_and_make_substitutions_(conf_make_meta); +  line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta);    line = line      .replaceAll(rgx.para_delimiter, mkup.br_paragraph ~ "$1"); -  _group_block_(line, an_object, obj_type_status); +  line._group_block_(an_object, obj_type_status);    continue;  #+END_SRC @@ -962,8 +962,8 @@ if there is a blurb section you need to:  #+BEGIN_SRC d  } else if (obj_type_status["block"] == TriState.on) {    /+ within block object: block +/ -  line = _doc_header_and_make_substitutions_(line, conf_make_meta); -  line = _doc_header_and_make_substitutions_fontface_(line, conf_make_meta); +  line = line._doc_header_and_make_substitutions_(conf_make_meta); +  line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta);    if (auto m = line.match(rgx.spaces_line_start)) {      line = line        .replaceAll(rgx.spaces_line_start, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); @@ -972,7 +972,7 @@ if there is a blurb section you need to:      line = line        .replaceAll(rgx.spaces_multiple, (m.captures[1]).translate([ ' ' : mkup.nbsp ]));    } -  _block_block_(line, an_object, obj_type_status); +  line._block_block_(an_object, obj_type_status);    continue;  #+END_SRC @@ -982,7 +982,7 @@ if there is a blurb section you need to:  #+BEGIN_SRC d  } else if (obj_type_status["poem"] == TriState.on) {    /+ within block object: poem +/ -  _poem_block_(line, an_object, obj_type_status, cntr, object_number_poem, conf_make_meta, tag_in_seg); +  line._poem_block_(an_object, obj_type_status, cntr, object_number_poem, conf_make_meta, tag_in_seg);    continue;  #+END_SRC @@ -992,7 +992,7 @@ if there is a blurb section you need to:  #+BEGIN_SRC d  } else if (obj_type_status["table"] == TriState.on) {    /+ within block object: table +/ -  _table_block_(line, an_object, obj_type_status, conf_make_meta); +  line._table_block_(an_object, obj_type_status, conf_make_meta);    continue;  #+END_SRC @@ -1019,7 +1019,7 @@ if (line.matchFirst(rgx.block_poem_open)) {    processing.remove("verse");    object_number_poem["start"] = obj_cite_digits.object_number.to!string;  } -_start_block_(line, obj_type_status, object_number_poem); +line._start_block_(obj_type_status, object_number_poem);  continue;  #+END_SRC @@ -1060,7 +1060,7 @@ if (line.matchFirst(rgx.book_index)  || line.matchFirst(rgx.book_index_open)  || obj_type_status["book_index"] == State.on )  {    /+ book_index +/ -  _book_index_(line, book_idx_tmp, an_object, obj_type_status, opt_action); +  line._book_index_(book_idx_tmp, an_object, obj_type_status, opt_action);  #+END_SRC  ******* not book index [+1] @@ -1106,7 +1106,7 @@ if (line.matchFirst(rgx.book_index)      if ((conf_make_meta.make.headings.length > 2)      && (obj_type_status["make_headings"] == State.off)) {        /+ heading found +/ -      _heading_found_(line, conf_make_meta.make.headings, heading_match_str, heading_match_rgx, obj_type_status); +      line._heading_found_(conf_make_meta.make.headings, heading_match_str, heading_match_rgx, obj_type_status);      }      if ((obj_type_status["make_headings"] == State.on)      && ((line_occur["para"] == State.off) @@ -1114,7 +1114,7 @@ if (line.matchFirst(rgx.book_index)      && ((obj_type_status["para"] == State.off)      && (obj_type_status["heading"] == State.off))) {        /+ heading make set +/ -      line = _heading_make_set_(line, line_occur, heading_match_rgx, obj_type_status); +      line = line._heading_make_set_(line_occur, heading_match_rgx, obj_type_status);      }      /+ TODO node info: all headings identified at this point,         - extract node info here?? @@ -1124,14 +1124,14 @@ if (line.matchFirst(rgx.book_index)      +/      if (line.matchFirst(rgx.heading)) {        /+ heading match +/ -      line = _doc_header_and_make_substitutions_(line, conf_make_meta); -      _heading_matched_(line, line_occur, an_object, an_object_key, lv, collapsed_lev, obj_type_status, conf_make_meta); +      line = line._doc_header_and_make_substitutions_(conf_make_meta); +      line._heading_matched_(line_occur, an_object, an_object_key, lv, collapsed_lev, obj_type_status, conf_make_meta);      } else if (line_occur["para"] == State.off) {        /+ para match +/        an_object_key="body_nugget"; -      line = _doc_header_and_make_substitutions_(line, conf_make_meta); -      line = _doc_header_and_make_substitutions_fontface_(line, conf_make_meta); -      _para_match_(line, an_object, an_object_key, indent, bullet, obj_type_status, line_occur); +      line = line._doc_header_and_make_substitutions_(conf_make_meta); +      line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta); +      line._para_match_(an_object, an_object_key, indent, bullet, obj_type_status, line_occur);      }  #+END_SRC @@ -1157,8 +1157,8 @@ if (line.matchFirst(rgx.book_index)      debug(para) {        writeln(an_object_key, "-> ", line);      } -    line = _doc_header_and_make_substitutions_(line, conf_make_meta); -    line = _doc_header_and_make_substitutions_fontface_(line, conf_make_meta); +    line = line._doc_header_and_make_substitutions_(conf_make_meta); +    line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta);      an_object[an_object_key] ~= " " ~ line;      ++line_occur["para"];    } @@ -1384,7 +1384,7 @@ if ((obj_type_status["heading"] == State.on)    comp_obj_para.has.inline_links                            = substantive_obj_misc_tuple[sObj.links];    comp_obj_para.has.image_without_dimensions                = substantive_obj_misc_tuple[sObj.image_no_dimensions];    the_document_body_section                                 ~= comp_obj_para; -  tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +  tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);    _common_reset_(line_occur, an_object, obj_type_status);    indent=[      "hang_position" : 0, @@ -2258,7 +2258,7 @@ string[] segnames_lv0_to_4;  #+name: abs_post  #+BEGIN_SRC d -auto _image_dimensions(M,O)(M manifest_matter, O obj) { +auto _image_dimensions(O,M)(O obj, M manifest_matter) {    if (obj.has.image_without_dimensions) {      import std.math;      import imageformats; @@ -2353,10 +2353,10 @@ foreach (ref obj; the_document_head_section) {      || (opt_action.epub)      || (opt_action.sqlite_discrete)      || (opt_action.sqlite_update)) { -      obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -      obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +      obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +      obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);      } -    obj = obj_heading_ancestors(obj, lv_ancestors_txt); +    obj = obj.obj_heading_ancestors(lv_ancestors_txt);    }    obj = _links(obj);  } @@ -2387,10 +2387,10 @@ if (the_table_of_contents_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      }      obj = _links(obj);    } @@ -2437,13 +2437,13 @@ if (the_document_body_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      } else if (obj.metainfo.is_a == "para") {         _images ~= extract_images(obj.text); -       obj = _image_dimensions(manifest_matter, obj); +       obj = _image_dimensions(obj, manifest_matter);      }      obj = _links(obj);    } @@ -2489,10 +2489,10 @@ if (the_endnotes_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      }      obj = _links(obj);    } @@ -2533,10 +2533,10 @@ if (the_glossary_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      } else if (obj.metainfo.is_a == "glossary") {        obj_cite_digits         = ocn_emit(OCNstatus.on);        obj.metainfo.ocn        = obj_cite_digits.object_number; @@ -2581,10 +2581,10 @@ if (the_bibliography_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      } else if (obj.metainfo.is_a == "bibliography") {        obj_cite_digits         = ocn_emit(OCNstatus.on);        obj.metainfo.ocn        = obj_cite_digits.object_number; @@ -2636,10 +2636,10 @@ if (the_bookindex_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      } else if (obj.metainfo.is_a == "bookindex") {        obj_cite_digits                       = ocn_emit(OCNstatus.bkidx);        obj.metainfo.ocn                      = obj_cite_digits.object_number; @@ -2688,10 +2688,10 @@ if (the_blurb_section.length > 1) {        || (opt_action.epub)        || (opt_action.sqlite_discrete)        || (opt_action.sqlite_update)) { -        obj = obj_dom_structure_set_markup_tags(obj, dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); -        obj = obj_dom_set_collapsed_tags(obj, dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed); +        obj = obj.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, obj.metainfo.heading_lev_markup); +        obj = obj.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, obj.metainfo.heading_lev_collapsed);        } -      obj = obj_heading_ancestors(obj, lv_ancestors_txt); +      obj = obj.obj_heading_ancestors(lv_ancestors_txt);      } else if (obj.metainfo.is_a == "blurb") {        obj_cite_digits = ocn_emit(OCNstatus.off);        obj.metainfo.object_number_off  = obj_cite_digits.off; @@ -2830,9 +2830,9 @@ comp_obj_heading_.metainfo.parent_ocn             = 0;  comp_obj_heading_.metainfo.parent_lev_markup      = 0;  comp_obj_heading_.metainfo.dom_structure_markedup_tags_status          = dom_structure_markedup_tags_status.dup;  comp_obj_heading_.metainfo.dom_structure_collapsed_tags_status         = dom_structure_collapsed_tags_status.dup; -comp_obj_heading_ = obj_dom_structure_set_markup_tags(comp_obj_heading_, dom_structure_markedup_tags_status, 0); -comp_obj_heading_ = obj_dom_set_collapsed_tags(comp_obj_heading_, dom_structure_collapsed_tags_status, 0); -comp_obj_heading_ = obj_heading_ancestors(comp_obj_heading_, lv_ancestors_txt); +comp_obj_heading_ = comp_obj_heading_.obj_dom_structure_set_markup_tags(dom_structure_markedup_tags_status, 0); +comp_obj_heading_ = comp_obj_heading_.obj_dom_set_collapsed_tags(dom_structure_collapsed_tags_status, 0); +comp_obj_heading_ = comp_obj_heading_.obj_heading_ancestors(lv_ancestors_txt);  // the_dom_tail_section                      ~= comp_obj_heading_; // remove tail for now, decide on later  #+END_SRC @@ -3145,6 +3145,12 @@ void _start_block_(L,T,N)(    static auto rgx = Rgx();    string code_block_syntax = "";    bool code_block_numbered = false; +#+END_SRC + +******* code + +#+name: abs_functions_block +#+BEGIN_SRC d    if (auto m = line.matchFirst(rgx.block_curly_code_open)) {      /+ curly code open +/      code_block_syntax = (m.captures[1]) ? m.captures[1].to!string : ""; @@ -3159,6 +3165,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]     = TriState.on;      obj_type_status["code"]       = TriState.on;      obj_type_status["curly_code"] = TriState.on; +#+END_SRC + +******* poem + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_curly_poem_open)) {      /+ curly poem open +/      debug(poem) {                              // poem (curly) open @@ -3172,6 +3184,12 @@ void _start_block_(L,T,N)(      obj_type_status["verse_new"]  = State.on;      obj_type_status["poem"]       = TriState.on;      obj_type_status["curly_poem"] = TriState.on; +#+END_SRC + +******* group + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_curly_group_open)) {      /+ curly group open +/      debug(group) {                             // group (curly) open @@ -3183,6 +3201,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]      = TriState.on;      obj_type_status["group"]       = TriState.on;      obj_type_status["curly_group"] = TriState.on; +#+END_SRC + +******* block + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_curly_block_open)) {      /+ curly block open +/      debug(block) {                             // block (curly) open @@ -3194,6 +3218,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]      = TriState.on;      obj_type_status["block"]       = TriState.on;      obj_type_status["curly_block"] = TriState.on; +#+END_SRC + +******* quote + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_curly_quote_open)) {      /+ curly quote open +/      debug(quote) {                             // quote (curly) open @@ -3205,6 +3235,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]      = TriState.on;      obj_type_status["quote"]       = TriState.on;      obj_type_status["curly_quote"] = TriState.on; +#+END_SRC + +******* table + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (auto m = line.matchFirst(rgx.block_curly_table_open)) {      /+ curly table open +/      debug(table) {                             // table (curly) open @@ -3218,6 +3254,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]      = TriState.on;      obj_type_status["table"]       = TriState.on;      obj_type_status["curly_table"] = TriState.on; +#+END_SRC + +******* table special + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (auto m = line.matchFirst(rgx.block_curly_table_special_markup)) {      /+ table: special table block markup syntax! +/      an_object["table_head"]                       = m.captures[1].to!string; @@ -3228,6 +3270,7 @@ void _start_block_(L,T,N)(  #+END_SRC  ****** block (various) tic open                                    :tic: +******* code  #+name: abs_functions_block  #+BEGIN_SRC d @@ -3245,6 +3288,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]   = TriState.on;      obj_type_status["code"]     = TriState.on;      obj_type_status["tic_code"] = TriState.on; +#+END_SRC + +******* poem + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_tic_poem_open)) {      /+ tic poem open +/      debug(poem) {                              // poem (tic) open @@ -3258,6 +3307,12 @@ void _start_block_(L,T,N)(      obj_type_status["verse_new"] = State.on;      obj_type_status["poem"]      = TriState.on;      obj_type_status["tic_poem"]  = TriState.on; +#+END_SRC + +******* group + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_tic_group_open)) {      /+ tic group open +/      debug(group) {                             // group (tic) open @@ -3269,6 +3324,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]    = TriState.on;      obj_type_status["group"]     = TriState.on;      obj_type_status["tic_group"] = TriState.on; +#+END_SRC + +******* block + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_tic_block_open)) {      /+ tic block open +/      debug(block) {                             // block (tic) open @@ -3280,6 +3341,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]    = TriState.on;      obj_type_status["block"]     = TriState.on;      obj_type_status["tic_block"] = TriState.on; +#+END_SRC + +******* quote + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (line.matchFirst(rgx.block_tic_quote_open)) {      /+ tic quote open +/      debug(quote) {                             // quote (tic) open @@ -3291,6 +3358,12 @@ void _start_block_(L,T,N)(      obj_type_status["blocks"]    = TriState.on;      obj_type_status["quote"]     = TriState.on;      obj_type_status["tic_quote"] = TriState.on; +#+END_SRC + +******* table + +#+name: abs_functions_block +#+BEGIN_SRC d    } else if (auto m = line.matchFirst(rgx.block_tic_table_open)) {      /+ tic table open +/      debug(table) {                             // table (tic) open @@ -3783,7 +3856,7 @@ void _poem_block_(L,O,T,C,N,CMM,Ts)(            comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];            comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];            the_document_body_section                      ~= comp_obj_block; -          tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +          tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);          }          object_reset(an_object);          processing.remove("verse"); @@ -3846,7 +3919,7 @@ void _poem_block_(L,O,T,C,N,CMM,Ts)(          comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];          comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];          the_document_body_section                      ~= comp_obj_block; -        tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +        tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);          object_reset(an_object);          processing.remove("verse");          ++cntr; @@ -3892,7 +3965,7 @@ void _poem_block_(L,O,T,C,N,CMM,Ts)(          comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];          comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];          the_document_body_section                      ~= comp_obj_block; -        tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +        tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);          object_number_poem["end"]                      = obj_cite_digits.object_number.to!string;          object_reset(an_object);          processing.remove("verse"); @@ -3955,7 +4028,7 @@ void _poem_block_(L,O,T,C,N,CMM,Ts)(          comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];          comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];          the_document_body_section                      ~= comp_obj_block; -        tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +        tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);          object_reset(an_object);          processing.remove("verse");          ++cntr; @@ -4094,8 +4167,8 @@ void _table_closed_make_special_notation_table_(N,CMM)(      comp_obj_block.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1_to_4"];      comp_obj_block.metainfo.o_n_book_index         = obj_cite_digits.bkidx;      comp_obj_block.metainfo.object_number_type     = obj_cite_digits.type; -    comp_obj_block                                 = table_instructions(comp_obj_block, an_object["table_head"]); -    comp_obj_block                                 = table_substantive_munge_special(comp_obj_block, an_object["substantive"]); +    comp_obj_block                                 = comp_obj_block.table_instructions(an_object["table_head"]); +    comp_obj_block                                 = comp_obj_block.table_substantive_munge_special(an_object["substantive"]);      the_document_body_section                      ~= comp_obj_block;      object_reset(an_object);      processing.remove("verse"); @@ -4182,7 +4255,7 @@ void _block_flag_line_empty_(B,N,CMM,Ts)(      comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];      comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];      the_document_body_section                      ~= comp_obj_block; -    tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +    tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);      obj_type_status["blocks"]                      = TriState.off;      obj_type_status["quote"]                       = TriState.off;      object_reset(an_object); @@ -4237,7 +4310,7 @@ void _block_flag_line_empty_(B,N,CMM,Ts)(      comp_obj_block.has.inline_notes_star           = substantive_obj_misc_tuple[sObj.notes_star];      comp_obj_block.has.inline_links                = substantive_obj_misc_tuple[sObj.links];      the_document_body_section                      ~= comp_obj_block; -    tag_assoc = inline_para_link_anchor(an_object, tag_in_seg, tag_assoc); +    tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc);      obj_type_status["blocks"]                      = TriState.off;      obj_type_status["group"]                       = TriState.off;      object_reset(an_object); @@ -4434,8 +4507,8 @@ void _block_flag_line_empty_(B,N,CMM,Ts)(      comp_obj_block.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1_to_4"];      comp_obj_block.metainfo.o_n_book_index         = obj_cite_digits.bkidx;      comp_obj_block.metainfo.object_number_type     = obj_cite_digits.type; -    comp_obj_block                                 = table_instructions(comp_obj_block, an_object["table_head"]); -    comp_obj_block                                 = table_substantive_munge(comp_obj_block, an_object["substantive"]); +    comp_obj_block                                 = comp_obj_block.table_instructions(an_object["table_head"]); +    comp_obj_block                                 = comp_obj_block.table_substantive_munge(an_object["substantive"]);      the_document_body_section                      ~= comp_obj_block;      obj_type_status["blocks"]                      = TriState.off;      obj_type_status["table"]                       = TriState.off; @@ -5138,7 +5211,7 @@ auto table_substantive_munge(O,T)(      _table_cols = col.split(rgx.table_col_delimiter);      _table ~= _table_cols;    } -  table_object = table_array_munge(table_object, _table); +  table_object = table_object.table_array_munge(_table);    return table_object;  }  #+END_SRC @@ -5160,7 +5233,7 @@ auto table_substantive_munge_special(O,T)(      _table_cols = col.split(rgx.table_col_delimiter_special);      _table ~= _table_cols;    } -  table_object = table_array_munge(table_object, _table); +  table_object = table_object.table_array_munge(_table);    return table_object;  }  #+END_SRC diff --git a/org/output_hub.org b/org/output_hub.org index 9ffa011..649ae34 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -94,7 +94,7 @@ if (sched == outTask.pod) {  if (sched == outTask.epub) {    msg.v("epub3 processing... ");    import doc_reform.output.epub3; -  outputEPub3!()(doc_abstraction, doc_matters); +  doc_abstraction.outputEPub3!()(doc_matters);    msg.vv("epub3 done");  }  #+END_SRC @@ -143,7 +143,7 @@ if (sched == outTask.html_stuff) {  if (sched == outTask.sqlite) {    msg.v("sqlite processing... ");    import doc_reform.output.sqlite; -  SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters, doc_abstraction); +  doc_abstraction.SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters);    msg.vv("sqlite done");  }  #+END_SRC @@ -157,12 +157,12 @@ if (sched == outTask.sqlite) {  if (doc_matters.opt.action.sqlite_update) {    msg.v("sqlite update processing...");    import doc_reform.output.sqlite; -  SQLiteHubBuildTablesAndPopulate!()(doc_matters, doc_abstraction); +  doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters);    msg.vv("sqlite update done");  } else if (doc_matters.opt.action.sqlite_delete) {    msg.v("sqlite delete processing...");    import doc_reform.output.sqlite; -  SQLiteHubBuildTablesAndPopulate!()(doc_matters, doc_abstraction); +  doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters);    msg.vv("sqlite delete done");  }  #+END_SRC diff --git a/org/output_sqlite.org b/org/output_sqlite.org index bdb2ca7..06e7f01 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -31,18 +31,18 @@ mixin DocReformOutputRgxInit;  static auto rgx = Rgx();  long _metadata_tid_lastrowid;  template SQLiteHubBuildTablesAndPopulate() { -  void SQLiteHubBuildTablesAndPopulate(M,D)( -    M    doc_matters, +  void SQLiteHubBuildTablesAndPopulate(D,M)(      D    doc_abstraction, +    M    doc_matters,    ) {      auto pth_sqlite = DocReformPathsSQLite!()(doc_matters.sqlite.filename, doc_matters.output_path);      pth_sqlite.base.mkdirRecurse;      auto db = Database(pth_sqlite.sqlite_file);      template SQLiteDbStatementComposite() { -      void SQLiteDbStatementComposite(Db,M,D)( +      void SQLiteDbStatementComposite(Db,D,M)(          Db   db, -        M    doc_matters,          D    doc_abstraction, +        M    doc_matters,        ) {          <<sqlite_db_statement_composite_collection>>          if (!(doc_matters.opt.action.quiet)) { @@ -50,7 +50,7 @@ template SQLiteHubBuildTablesAndPopulate() {          }        }      } -    SQLiteDbStatementComposite!()(db, doc_matters, doc_abstraction); +    SQLiteDbStatementComposite!()(db, doc_abstraction, doc_matters);    }  }  #+END_SRC @@ -59,18 +59,18 @@ template SQLiteHubBuildTablesAndPopulate() {  #+BEGIN_SRC d :tangle "../src/doc_reform/output/sqlite.d"  template SQLiteHubDiscreteBuildTablesAndPopulate() { -  void SQLiteHubDiscreteBuildTablesAndPopulate(M,D)( -    M    doc_matters, +  void SQLiteHubDiscreteBuildTablesAndPopulate(D,M)(      D    doc_abstraction, +    M    doc_matters,    ) {      auto pth_sqlite = DocReformPathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language);      pth_sqlite.base.mkdirRecurse;      auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));      template SQLiteDiscreteDbStatementComposite() { -      void SQLiteDiscreteDbStatementComposite(Db,M,D)( +      void SQLiteDiscreteDbStatementComposite(Db,D,M)(          Db   db, -        M    doc_matters,          D    doc_abstraction, +        M    doc_matters,        ) {          <<sqlite_db_statement_composite_discrete>>          if (!(doc_matters.opt.action.quiet)) { @@ -78,7 +78,7 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() {          }        }      } -    SQLiteDiscreteDbStatementComposite!()(db, doc_matters, doc_abstraction); +    SQLiteDiscreteDbStatementComposite!()(db, doc_abstraction, doc_matters);    }  }  #+END_SRC @@ -200,9 +200,9 @@ template SQLiteInsertMetadata() {  #+BEGIN_SRC d :tangle "../src/doc_reform/output/sqlite.d"  template SQLiteInsertDocObjectsLoop() { -  string SQLiteInsertDocObjectsLoop(M,D)( -    M    doc_matters, +  string SQLiteInsertDocObjectsLoop(D,M)(      D    doc_abstraction, +    M    doc_matters,    ) {      string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);      auto site_url = DocReformPathsUrl!()(doc_matters); @@ -291,7 +291,7 @@ template SQLiteDbDrop() {        _db_statement ~= SQLiteInsertMetadata!()(doc_matters);        SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaData");        /+ get tid (lastrowid or max) for use in doc_objects table +/ -      _db_statement ~= SQLiteInsertDocObjectsLoop!()(doc_matters, doc_abstraction); +      _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters);        SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT DocObjects");      }    } @@ -308,7 +308,7 @@ template SQLiteDbDrop() {    {      _db_statement ~= SQLiteTablesReCreate!()();      _db_statement ~= SQLiteInsertMetadata!()(doc_matters); -    _db_statement ~= SQLiteInsertDocObjectsLoop!()(doc_matters, doc_abstraction); +    _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters);      SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "table CREATE Tables, INSERT DocObjects");    }    db.close; @@ -536,8 +536,8 @@ auto inline_links(M,O)(  ) {    if (obj.has.inline_links) {      if  (obj.metainfo.is_a != "code") { -      _txt = replaceAll!(hit => -          hit[1] ~ "┤" ~ to!string((obj.stow.link[hit[2].to!ulong])).encode ~ "├" +      _txt = replaceAll!(m => +          m[1] ~ "┤" ~ to!string((obj.stow.link[m[2].to!ulong])).encode ~ "├"          )(_txt, rgx.inline_link_number_only);      }      if ((_txt.match(rgx.mark_internal_site_lnk)) diff --git a/org/output_xmls.org b/org/output_xmls.org index 8c9ed75..979534c 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -427,10 +427,10 @@ auto tail() {  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_images(M,O)( -               M  doc_matters, -  const        O  obj, +auto inline_images(O,M)(    string          _txt, +  const        O  obj, +               M  doc_matters,    string          _suffix    = ".html",    string          _xml_type = "seg",  ) { @@ -458,18 +458,18 @@ auto inline_images(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_links(M,O)( -               M doc_matters, -  const        O obj, -  string         _txt, +auto inline_links(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters,    string         _suffix   = ".html",    string         _xml_type = "seg",  ) {    string seg_lvs;    if (obj.has.inline_links) {      if  (obj.metainfo.is_a != "code") { -      _txt = replaceAll!(hit => -          hit[1] ~ "┤" ~ to!string((obj.stow.link[hit[2].to!ulong])).encode ~ "├" +      _txt = replaceAll!(m => +          m[1] ~ "┤" ~ to!string((obj.stow.link[m[2].to!ulong])).encode ~ "├"          )(_txt, rgx.inline_link_number_only);      }      if ((_txt.match(rgx.mark_internal_site_lnk)) @@ -552,10 +552,10 @@ auto inline_links(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_notes_scroll(M,O)( -               M   doc_matters, -  const        O   obj, -  string           _txt, +auto inline_notes_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters,  ) {    if (obj.has.inline_notes_reg) {      _txt = font_face(_txt); @@ -582,10 +582,10 @@ auto inline_notes_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_notes_seg(M,O)( -               M     doc_matters, -  const        O     obj, -  string             _txt, +auto inline_notes_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters,  ) {    string[] _endnotes;    if (obj.has.inline_notes_reg) { @@ -629,15 +629,15 @@ auto inline_notes_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_markup_scroll(M,O)( -               M  doc_matters, -  const        O  obj, +auto inline_markup_scroll(O,M)(    string          _txt, +  const        O  obj, +               M  doc_matters,    string          _suffix = ".html",  ) { -  _txt = inline_images(doc_matters, obj, _txt, _suffix, "scroll"); -  _txt = inline_links(doc_matters, obj, _txt, _suffix, "scroll"); -  _txt = inline_notes_scroll(doc_matters, obj, _txt); +  _txt = inline_images(_txt, obj, doc_matters, _suffix, "scroll"); +  _txt = inline_links(_txt, obj, doc_matters, _suffix, "scroll"); +  _txt = inline_notes_scroll(_txt, obj, doc_matters);    return _txt;  }  #+END_SRC @@ -646,16 +646,16 @@ auto inline_markup_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_markup_seg(M,O)( -               M  doc_matters, -  const        O  obj, +auto inline_markup_seg(O,M)(    string          _txt, +  const        O  obj, +               M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "seg",  ) { -  _txt = inline_images(doc_matters, obj, _txt, _suffix, _xml_type); // TODO -  _txt = inline_links(doc_matters, obj, _txt, _suffix, _xml_type); // TODO -  auto t = inline_notes_seg(doc_matters, obj, _txt); +  _txt = inline_images(_txt, obj, doc_matters, _suffix, _xml_type); // TODO +  _txt = inline_links(_txt, obj, doc_matters, _suffix, _xml_type); // TODO +  auto t = inline_notes_seg(_txt, obj, doc_matters);    return t;  }  #+END_SRC @@ -665,9 +665,9 @@ auto inline_markup_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string lev4_heading_subtoc(M,O)( -               M    doc_matters, -  const        O    obj, +string lev4_heading_subtoc(O,M)( +  const        O  obj, +               M  doc_matters,  ) {    char[] lev4_subtoc;    lev4_subtoc ~= "  <div class=\"nav\">\n"; @@ -698,9 +698,9 @@ string lev4_heading_subtoc(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto nav_pre_next_svg(M,O)( -               M    doc_matters, -  const        O    obj, +auto nav_pre_next_svg(O,M)( +  const        O  obj, +               M  doc_matters,  ) {    string prev, next, toc;    if (obj.tags.segment_anchor_tag_epub == "toc") { @@ -784,8 +784,8 @@ auto nav_pre_next_svg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto heading(O)( -  const        O    obj,    string            _txt, +  const        O    obj,    string            _xml_type = "html",  ) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter"); @@ -848,15 +848,15 @@ auto heading(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", +auto heading_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = heading(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = heading(_txt, obj);    return o;  }  #+END_SRC @@ -865,17 +865,17 @@ auto heading_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html" +auto heading_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0];    string[] _endnotes = t[1]; -  string o = heading(obj, _txt, _xml_type); +  string o = heading(_txt, obj, _xml_type);    auto u = tuple(      o,      _endnotes, @@ -890,8 +890,8 @@ auto heading_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto para(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -940,15 +940,15 @@ auto para(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", +auto para_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = para(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = para(_txt, obj);    return o;  }  #+END_SRC @@ -957,17 +957,17 @@ auto para_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto para_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = para(obj, _txt); +  string o = para(_txt, obj);    auto u = tuple(      o,      _endnotes, @@ -982,8 +982,8 @@ auto para_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto quote(O)( -  const        O  obj,    string          _txt, +  const        O  obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -1022,15 +1022,15 @@ auto quote(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", +auto quote_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = quote(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = quote(_txt, obj);    return o;  }  #+END_SRC @@ -1039,17 +1039,17 @@ auto quote_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto quote_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = quote(obj, _txt); +  string o = quote(_txt, obj);    auto u = tuple(      o,      _endnotes, @@ -1064,8 +1064,8 @@ auto quote_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto group(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -1104,16 +1104,16 @@ auto group(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto group_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = group(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = group(_txt, obj);    return o;  }  #+END_SRC @@ -1122,17 +1122,17 @@ auto group_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto group_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = group(obj, _txt); +  string o = group(_txt, obj);    auto u = tuple(      o,      _endnotes, @@ -1147,8 +1147,8 @@ auto group_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto block(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -1183,16 +1183,16 @@ auto block(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto block_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = block(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = block(_txt, obj);    return o;  }  #+END_SRC @@ -1201,17 +1201,17 @@ auto block_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto block_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = block(obj, _txt); +  string o = block(_txt, obj);    auto u = tuple(      o,      _endnotes, @@ -1226,8 +1226,8 @@ auto block_seg(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto verse(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb"); @@ -1262,16 +1262,16 @@ auto verse(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse_scroll(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto verse_scroll(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) {    auto tags = _xhtml_anchor_tags(obj); -  _txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix); -  string o = verse(obj, _txt); +  _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix); +  string o = verse(_txt, obj);    return o;  }  #+END_SRC @@ -1280,17 +1280,17 @@ auto verse_scroll(M,O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse_seg(M,O)( -               M    doc_matters, -  const        O    obj, -  string            _txt, -  string            _suffix = ".html", -  string            _xml_type = "html", +auto verse_seg(O,M)( +  string          _txt, +  const        O  obj, +               M  doc_matters, +  string          _suffix = ".html", +  string          _xml_type = "html",  ) { -  auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type); +  auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; -  string o = verse(obj, _txt); +  string o = verse(_txt, obj);    auto u = tuple(      o,      _endnotes, @@ -1304,8 +1304,8 @@ auto verse_seg(M,O)(  #+name: xhtml_format_objects_code  #+BEGIN_SRC d  auto code(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body"); @@ -1349,8 +1349,8 @@ align="left|right|center"  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto tablarize(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    string[] _table_rows = (_txt).split(rgx.table_delimiter_row);    string[] _table_cols; @@ -1388,8 +1388,8 @@ auto tablarize(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d  auto table(O)( -  const        O    obj,    string            _txt, +  const        O    obj,  ) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body"); @@ -1397,7 +1397,7 @@ auto table(O)(    assert(obj.metainfo.is_a          == "table");    auto tags = _xhtml_anchor_tags(obj);    _txt = font_face(_txt); -  auto t = tablarize(obj, _txt); +  auto t = tablarize(_txt, obj);    _txt = t[0];    string _note = t[1];    string o; @@ -1422,27 +1422,6 @@ auto table(O)(  }  #+END_SRC -*** endnote - -#+name: xhtml_format_objects -#+BEGIN_SRC d -auto endnote(O)( -  const        O    obj, -  string            _txt, -) { -  string o; -  o = format(q"¶    <p class="%s" indent="h%si%s"> -  %s -</p>¶", -    obj.metainfo.is_a, -    obj.attrib.indent_hang, -    obj.attrib.indent_base, -    _txt -  ); -  return o; -} -#+END_SRC -  * _html_ [#A]                                                            :html:  ** module template                                                  :module: @@ -1497,10 +1476,10 @@ void scroll(D,M)(          case "para":            switch (obj.metainfo.is_a) {            case "heading": -            doc_html ~= delimit ~ xhtml_format.heading_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);              break;            case "toc": -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            default:              { /+ debug +/ @@ -1533,10 +1512,10 @@ void scroll(D,M)(          case "para":            switch (obj.metainfo.is_a) {            case "heading": -            doc_html ~= delimit ~ xhtml_format.heading_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);              break;            case "para": -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            default:              { /+ debug +/ @@ -1551,24 +1530,24 @@ void scroll(D,M)(          case "block":            switch (obj.metainfo.is_a) {            case "quote": -            doc_html ~= xhtml_format.quote_scroll(doc_matters, obj, _txt); +            doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters);              break;            case "group": -            doc_html ~= xhtml_format.group_scroll(doc_matters, obj, _txt); +            doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters);              break;            case "block": -            doc_html ~= xhtml_format.block_scroll(doc_matters, obj, _txt); +            doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters);              break;            case "poem":              break;            case "verse": -            doc_html ~= xhtml_format.verse_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc_matters, suffix);              break;            case "code": -            doc_html ~= xhtml_format.code(obj, _txt); +            doc_html ~= xhtml_format.code(_txt, obj);              break;            case "table": -            doc_html ~= xhtml_format.table(obj, _txt); +            doc_html ~= xhtml_format.table(_txt, obj);              break;            default:              { /+ debug +/ @@ -1602,22 +1581,22 @@ void scroll(D,M)(          case "para":            switch (obj.metainfo.is_a) {            case "heading": -            doc_html ~= delimit ~ xhtml_format.heading_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);              break;            case "endnote":              assert(part == "endnotes"); -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            case "glossary":             assert(part == "glossary"); -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            case "bibliography":         assert(part == "bibliography"); -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            case "bookindex":            assert(part == "bookindex"); -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            case "blurb":                assert(part == "blurb"); -            doc_html ~= xhtml_format.para_scroll(doc_matters, obj, _txt, suffix); +            doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);              break;            default:              { /+ debug +/ @@ -1756,7 +1735,7 @@ void seg(D,M)(              top_level_headings[3] = "";              goto default;            default: -            auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "seg"); +            auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");              top_level_headings[obj.metainfo.heading_lev_markup] = t[0];              break;            } @@ -1764,19 +1743,19 @@ void seg(D,M)(          case 4:            segment_filename = obj.tags.segment_anchor_tag_epub;            doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg"); -          auto navigation_bar = xhtml_format.nav_pre_next_svg(doc_matters, obj); +          auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc_matters);            doc_html[segment_filename] ~= navigation_bar.toc_pre_next;            previous_seg_filename = segment_filename;            foreach (top_level_heading; top_level_headings) {              doc_html[segment_filename] ~= top_level_heading;            } -          auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "seg"); +          auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");            doc_html[segment_filename] ~= t[0].to!string; -          doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(doc_matters, obj); +          doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc_matters);            doc_html_endnotes[segment_filename] ~= t[1];            break;          case 5: .. case 7: -          auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "seg"); +          auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");            doc_html[segment_filename] ~= t[0].to!string;            doc_html_endnotes[segment_filename] ~= t[1];            break; @@ -1818,7 +1797,7 @@ void seg(D,M)(            case "para":              switch (obj.metainfo.is_a) {              case "toc": -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                break;              default: @@ -1852,7 +1831,7 @@ void seg(D,M)(            case "para":              switch (obj.metainfo.is_a) {              case "para": -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                doc_html_endnotes[segment_filename] ~= t[1];                break; @@ -1869,32 +1848,32 @@ void seg(D,M)(            case "block":              switch (obj.metainfo.is_a) {              case "quote": -              auto t = xhtml_format.quote_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "group": -              auto t = xhtml_format.group_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "block": -              auto t = xhtml_format.block_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "poem":                break;              case "verse": -              auto t = xhtml_format.verse_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0].to!string;                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "code": -              doc_html[segment_filename] ~= xhtml_format.code(obj, _txt); +              doc_html[segment_filename] ~= xhtml_format.code(_txt, obj);                break;              case "table": -              doc_html[segment_filename] ~= xhtml_format.table(obj, _txt); +              doc_html[segment_filename] ~= xhtml_format.table(_txt, obj);                doc_html_endnotes[segment_filename] ~= "";                break;              default: @@ -1929,26 +1908,26 @@ void seg(D,M)(            case "para":              switch (obj.metainfo.is_a) {              case "endnote":             assert(part == "endnotes"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0];                break;              case "glossary":            assert(part == "glossary"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0];                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "bibliography":        assert(part == "bibliography"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0];                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "bookindex":           assert(part == "bookindex"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0];                doc_html_endnotes[segment_filename] ~= t[1];                break;              case "blurb":               assert(part == "blurb"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "seg"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");                doc_html[segment_filename] ~= t[0];                doc_html_endnotes[segment_filename] ~= t[1];                break; @@ -2523,7 +2502,7 @@ void outputEPub3(D,I)(            default:              epubWrite.doc_parts ~= obj.tags.segment_anchor_tag_epub;              epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc_matters); -            auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "epub"); +            auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");              epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= t[0];              epubWrite.doc_epub3_endnotes[obj.tags.segment_anchor_tag_epub] ~= t[1];              break; @@ -2532,12 +2511,12 @@ void outputEPub3(D,I)(          case 4:            segment_filename = obj.tags.segment_anchor_tag_epub;            epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc_matters); -          auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "epub"); +          auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");            epubWrite.doc_epub3[segment_filename] ~= t[0];            epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];            break;          case 5: .. case 7: -          auto t = xhtml_format.heading_seg(doc_matters, obj, _txt, suffix, "epub"); +          auto t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");            epubWrite.doc_epub3[segment_filename] ~= t[0];            epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];            break; @@ -2579,7 +2558,7 @@ void outputEPub3(D,I)(            case "para":              switch (obj.metainfo.is_a) {              case "toc": -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break; @@ -2614,7 +2593,7 @@ void outputEPub3(D,I)(            case "para":              switch (obj.metainfo.is_a) {              case "para": -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break; @@ -2631,32 +2610,32 @@ void outputEPub3(D,I)(            case "block":              switch (obj.metainfo.is_a) {              case "quote": -              auto t = xhtml_format.quote_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "group": -              auto t = xhtml_format.group_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "block": -              auto t = xhtml_format.block_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "poem":                break;              case "verse": -              auto t = xhtml_format.verse_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "code": -              epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(obj, _txt); +              epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj);                break;              case "table": -              epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(obj, _txt); +              epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj);                epubWrite.doc_epub3_endnotes[segment_filename] ~= "";                break;              default: @@ -2691,26 +2670,26 @@ void outputEPub3(D,I)(            case "para":              switch (obj.metainfo.is_a) {              case "endnote":             assert(part == "endnotes"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                break;              case "glossary":            assert(part == "glossary"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "bibliography":        assert(part == "bibliography"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "bookindex":           assert(part == "bookindex"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break;              case "blurb":               assert(part == "blurb"); -              auto t = xhtml_format.para_seg(doc_matters, obj, _txt, suffix, "epub"); +              auto t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");                epubWrite.doc_epub3[segment_filename] ~= t[0];                epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];                break; @@ -2802,9 +2781,9 @@ void outputEPub3(D,I)(    /+ epub specific documents +/    epubWrite.mimetypes =              epub3_mimetypes;    epubWrite.meta_inf_container_xml = epub3_container_xml; -  epubWrite.oebps_toc_ncx =          epub2_oebps_toc_ncx(doc_abstraction, doc_matters); -  epubWrite.oebps_toc_nav_xhtml =    epub3_oebps_toc_nav_xhtml(doc_abstraction, doc_matters); -  epubWrite.oebps_content_opf =      epub3_oebps_content(doc_abstraction, doc_matters, oepbs_content_parts); +  epubWrite.oebps_toc_ncx =          doc_abstraction.epub2_oebps_toc_ncx(doc_matters); +  epubWrite.oebps_toc_nav_xhtml =    doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters); +  epubWrite.oebps_content_opf =      doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts);    epubWrite.epub3_write_output_files(doc_matters);  }  #+END_SRC | 
