diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2019-12-17 13:22:51 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2020-01-13 16:06:43 -0500 | 
| commit | 9c42b4567f35aceacce1298a6d4789d6789e5bfe (patch) | |
| tree | 90d698066a2f895a152bb942ecdeed5faeff50af /org | |
| parent | present per document metadata (diff) | |
specify Tuple content for read in files, remove traits.std
Diffstat (limited to 'org')
| -rw-r--r-- | org/default_misc.org | 1 | ||||
| -rw-r--r-- | org/imports.org | 2 | ||||
| -rw-r--r-- | org/in_source_files.org | 24 | ||||
| -rw-r--r-- | org/meta_conf_make_meta.org | 4 | ||||
| -rw-r--r-- | org/meta_debugs.org | 1 | ||||
| -rw-r--r-- | org/metaverse.org | 26 | ||||
| -rw-r--r-- | org/out_harvest_metadata.org | 1 | ||||
| -rw-r--r-- | org/out_latex.org | 32 | ||||
| -rw-r--r-- | org/out_odt.org | 18 | ||||
| -rw-r--r-- | org/out_sqlite.org | 10 | ||||
| -rw-r--r-- | org/out_xmls.org | 66 | ||||
| -rw-r--r-- | org/output_show.org | 1 | ||||
| -rw-r--r-- | org/spine.org | 3 | 
13 files changed, 85 insertions, 104 deletions
| diff --git a/org/default_misc.org b/org/default_misc.org index cc4083e..8988f3e 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -243,7 +243,6 @@ import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    std.uni,    std.utf, diff --git a/org/imports.org b/org/imports.org index 45705a4..fd6998e 100644 --- a/org/imports.org +++ b/org/imports.org @@ -38,7 +38,6 @@ public import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    // std.uni,    std.utf, @@ -68,7 +67,6 @@ public import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    // std.uni,    std.utf; diff --git a/org/in_source_files.org b/org/in_source_files.org index 20d8d0a..cb95fda 100644 --- a/org/in_source_files.org +++ b/org/in_source_files.org @@ -296,23 +296,21 @@ static template spineRawMarkupContent() {        auto raw = MarkupRawUnit();        string[] insert_file_list;        string[] images_list; -      auto t +      Tuple!(char[], char[][], string[], string[]) t          = raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str);        auto header_raw = t[0];        auto sourcefile_body_content = t[1];        if (fn_src.match(rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise          auto ins = Inserts(); -        auto tu +        Tuple!(char[][], string[], string[]) tu            = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); -        static assert(!isTypeTuple!(tu));          sourcefile_body_content = tu[0];          insert_file_list = tu[1].dup;          images_list = tu[2].dup;        } else if (_opt_action.source || _opt_action.pod) {          auto ins = Inserts(); -        auto tu +        Tuple!(char[][], string[], string[]) tu            = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); -        static assert(!isTypeTuple!(tu));          images_list = tu[2].dup;        }        string header_type = ""; @@ -348,7 +346,7 @@ static template spineRawMarkupContent() {        } // end src subdoc (inserts) loop        <<meta_inserts_scan_post>>      } -    auto scan_master_src_for_insert_files_and_import_content(O)( +    Tuple!(char[][], string[], string[]) scan_master_src_for_insert_files_and_import_content(O)(        O        _opt_action,        char[][] sourcefile_body_content,        string   fn_src @@ -457,14 +455,14 @@ auto markupSourceReadIn(in string fn_src) {  #+name: meta_markup_source_raw_tuple_of_header_and_body  #+BEGIN_SRC d -auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) @safe { +Tuple!(char[], char[][], string[], string[]) markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) @safe {    string[] file_insert_list = [];    string[] images_list = [];    char[][] hc = header0Content1(source_txt_str);    char[] header = hc[0];    char[] source_txt = hc[1]; -  auto source_line_arr = markupSourceLineArray(source_txt); -  auto t = tuple( +  char[][] source_line_arr = markupSourceLineArray(source_txt); +  Tuple!(char[], char[][], string[], string[]) t = tuple(      header,      source_line_arr,      file_insert_list, @@ -487,8 +485,8 @@ final char[][] getInsertMarkupSourceContentRawLineArray(      "not a dr markup filename: «" ~      fn_src_insert  ~ "»"    ); -  auto source_txt_str = readInMarkupSource(fn_src_insert); -  auto source_line_arr = markupSourceLineArray(source_txt_str); +  string source_txt_str = readInMarkupSource(fn_src_insert); +  char[][] source_line_arr = markupSourceLineArray(source_txt_str);    return source_line_arr;  }  #+END_SRC @@ -584,7 +582,7 @@ if (type1["curly_code"] == 1) {  #+name: meta_inserts_scan_post  #+BEGIN_SRC d -auto t = tuple( +Tuple!(char[][], string[]) t = tuple(    contents_insert,    _images  ); @@ -689,7 +687,7 @@ debug(insert_file) {    writeln(__LINE__);    writeln(contents.length);  } -auto t = tuple( +Tuple!(char[][], string[], string[]) t = tuple(    contents,    insert_file_list,    images diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org index 4b270e0..746f712 100644 --- a/org/meta_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -35,7 +35,6 @@ import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    std.uni,    std.utf, @@ -61,7 +60,6 @@ import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    std.utf,    std.conv : to; @@ -351,7 +349,6 @@ static template contentYAMLtoSpineStruct() {      std.regex,      std.stdio,      std.string, -    std.traits,      std.typecons,      std.utf,      std.conv : to; @@ -1168,7 +1165,6 @@ static template contentJSONtoSpineStruct() {      std.regex,      std.stdio,      std.string, -    std.traits,      std.typecons,      std.utf,      std.conv : to; diff --git a/org/meta_debugs.org b/org/meta_debugs.org index f070ada..f17c363 100644 --- a/org/meta_debugs.org +++ b/org/meta_debugs.org @@ -63,7 +63,6 @@ import    std.range,    std.regex,    std.string, -  std.traits,    std.typecons,    std.utf,    std.conv : to; diff --git a/org/metaverse.org b/org/metaverse.org index 500b6ac..c7f3481 100644 --- a/org/metaverse.org +++ b/org/metaverse.org @@ -1550,7 +1550,6 @@ if (the_document_body_section.length > 0) {  #+BEGIN_SRC d  auto en_tuple    = note_section.endnote_objects(obj_cite_digits, opt_action); -static assert(!isTypeTuple!(en_tuple));  auto the_endnotes_section = en_tuple[0];  obj_cite_digits = en_tuple[1];  debug(endnotes) { @@ -1766,7 +1765,6 @@ auto bi_tuple      opt_action,    );  destroy(bookindex_unordered_hashes); -static assert(!isTypeTuple!(bi_tuple));  auto the_bookindex_section = bi_tuple[0];  obj_cite_digits = bi_tuple[1];  debug(bookindex) { @@ -5402,7 +5400,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) @safe { +  Tuple!(string, bool, bool, bool) footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) @safe {      /+ endnotes (regular) +/      bool flg_notes_reg  = false;      bool flg_notes_star = false; @@ -5458,7 +5456,7 @@ static struct ObjInlineMarkupMunge {      } else {        obj_txt_out = obj_txt_in;      } -    auto t = tuple( +    Tuple!(string, bool, bool, bool) t = tuple(        obj_txt_out,        flg_notes_reg,        flg_notes_star, @@ -5472,7 +5470,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  private auto object_notes_and_links_()( +  private Tuple!(string, bool, bool, bool, bool, bool) object_notes_and_links_()(      string obj_txt_in,      bool reset_note_numbers=false    ) @safe { @@ -5506,7 +5504,7 @@ static struct ObjInlineMarkupMunge {        obj_txt_in = obj_txt_in          .replaceAll(rgx.para_inline_link_anchor, "┃$1┃");      } -    auto ftn = footnotes_endnotes_markup_and_number_or_stars(obj_txt_in, reset_note_numbers); +    Tuple!(string, bool, bool, bool) ftn = footnotes_endnotes_markup_and_number_or_stars(obj_txt_in, reset_note_numbers);      obj_txt_out = ftn[0];      debug(footnotes) {        writeln(obj_txt_out, tail); @@ -5519,7 +5517,7 @@ static struct ObjInlineMarkupMunge {          writeln(m.hit);        }      } -    auto t = tuple( +    Tuple!(string, bool, bool, bool, bool, bool) t = tuple(        obj_txt_out,        ftn[1],        ftn[2], @@ -5530,7 +5528,7 @@ static struct ObjInlineMarkupMunge {      return t;    }    auto init() { -    auto t = object_notes_and_links_(""); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_("");      return t;    }    invariant() { @@ -5551,7 +5549,7 @@ static struct ObjInlineMarkupMunge {       .replaceFirst(rgx.heading, "")       .replaceFirst(rgx.object_number_off_all, "")       .strip; -    auto t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_(obj_txt["munge"], reset_note_numbers);      debug(munge) {        writeln(__LINE__);        writeln(obj_txt_in); @@ -5578,7 +5576,7 @@ static struct ObjInlineMarkupMunge {      obj_txt["munge"]=(obj_txt_in)        .replaceFirst(rgx.para_attribs, "")        .replaceFirst(rgx.object_number_off_all, ""); -    auto t = object_notes_and_links_(obj_txt["munge"]); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_(obj_txt["munge"]);      debug(munge) {        writeln(__LINE__);        writeln(obj_txt_in); @@ -5614,7 +5612,7 @@ static struct ObjInlineMarkupMunge {  #+BEGIN_SRC d    auto munge_group(string obj_txt_in) @safe {      obj_txt["munge"]=obj_txt_in; -    auto t = object_notes_and_links_(obj_txt["munge"]); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_(obj_txt["munge"]);      return t;    }    invariant() { @@ -5634,7 +5632,7 @@ static struct ObjInlineMarkupMunge {  #+BEGIN_SRC d    auto munge_block()(string obj_txt_in) @safe {      obj_txt["munge"]=obj_txt_in; -    auto t = object_notes_and_links_(obj_txt["munge"]); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_(obj_txt["munge"]);      return t;    }    invariant() { @@ -5654,7 +5652,7 @@ static struct ObjInlineMarkupMunge {  #+BEGIN_SRC d    auto munge_verse()(string obj_txt_in) @safe {      obj_txt["munge"]=obj_txt_in; -    auto t = object_notes_and_links_(obj_txt["munge"]); +    Tuple!(string, bool, bool, bool, bool, bool) t = object_notes_and_links_(obj_txt["munge"]);      return t;    }    invariant() { @@ -5809,7 +5807,7 @@ static struct ObjInlineMarkup {        obj_notes_and_links["image_no_dimensions"] = x[5];        break;      } -    auto t = tuple( +    Tuple!(string, string, bool, bool, bool, bool) t = tuple(        obj_txt["munge"],        anchor_tag,        obj_notes_and_links["notes_reg"], diff --git a/org/out_harvest_metadata.org b/org/out_harvest_metadata.org index 9c954a0..7a27ebf 100644 --- a/org/out_harvest_metadata.org +++ b/org/out_harvest_metadata.org @@ -48,7 +48,6 @@ import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    std.uni,    std.utf, diff --git a/org/out_latex.org b/org/out_latex.org index 4e0ff3e..b88324e 100644 --- a/org/out_latex.org +++ b/org/out_latex.org @@ -861,24 +861,24 @@ auto tablarize(O)(    string _tablenote;    foreach(row_idx, row; _table_rows) {      _table_cols = row.split(rgx.table_delimiter_col); -      _table ~= ""; -      foreach(col_idx, cell; _table_cols) { -        if ((_table_cols.length == 1) -        && (_table_rows.length <= row_idx+2)) { // check row_idx+2 (rather than == ++row_idx) -          _tablenote ~= cell; -        } else { -          // // _table ~= "\\bfseries "; -          // _table ~= cell; -          // _table ~= (_table_cols.length > (col_idx + 1)) ? "&" : ""; -          _table ~= format(q"┃%s%s┃", -            cell, -            (_table_cols.length > (col_idx + 1)) ? "&" : "" -          ); -        } +    _table ~= ""; +    foreach(col_idx, cell; _table_cols) { +      if ((_table_cols.length == 1) +      && (_table_rows.length <= row_idx+2)) { // check row_idx+2 (rather than == ++row_idx) +        _tablenote ~= cell; +      } else { +        // // _table ~= "\\bfseries "; +        // _table ~= cell; +        // _table ~= (_table_cols.length > (col_idx + 1)) ? "&" : ""; +        _table ~= format(q"┃%s%s┃", +          cell, +          (_table_cols.length > (col_idx + 1)) ? "&" : "" +        );        } -      _table ~= "\\\\";      } -  auto t = tuple( +    _table ~= "\\\\"; +  } +  Tuple!(string, string) t = tuple(      _table,      _tablenote,    ); diff --git a/org/out_odt.org b/org/out_odt.org index 59e731c..3092aa5 100644 --- a/org/out_odt.org +++ b/org/out_odt.org @@ -373,13 +373,13 @@ string _font_face(string _txt){      .replaceAll(rgx.inline_strike,      "<del>$1</del>")      .replaceAll(rgx.inline_insert,      "<ins>$1</ins>")      .replaceAll(rgx.inline_cite,        "<cite>$1</cite>") -    .replaceAll(rgx.inline_emphasis,    format(q"┃<text:span text:style-name="Span_bold">%s</text:span>┃","$1")) -    .replaceAll(rgx.inline_bold,        format(q"┃<text:span text:style-name="Span_bold">%s</text:span>┃","$1")) -    .replaceAll(rgx.inline_italics,     format(q"┃<text:span text:style-name="Span_italic">%s</text:span>┃","$1")) -    .replaceAll(rgx.inline_underscore,  format(q"┃<text:span text:style-name="Span_underscore">%s</text:span>┃","$1")) +    .replaceAll(rgx.inline_emphasis,    format(q"┃<text:span text:style-name="Span_bold">%s</text:span>┃",       "$1")) +    .replaceAll(rgx.inline_bold,        format(q"┃<text:span text:style-name="Span_bold">%s</text:span>┃",       "$1")) +    .replaceAll(rgx.inline_italics,     format(q"┃<text:span text:style-name="Span_italic">%s</text:span>┃",     "$1")) +    .replaceAll(rgx.inline_underscore,  format(q"┃<text:span text:style-name="Span_underscore">%s</text:span>┃", "$1"))      .replaceAll(rgx.inline_superscript, format(q"┃<text:span text:style-name="Span_superscript">%s</text:span>┃","$1")) -    .replaceAll(rgx.inline_subscript,   format(q"┃<text:span text:style-name="Span_subscript">%s</text:span>┃","$1")) -    .replaceAll(rgx.inline_mono,        format(q"┃<text:span text:style-name="Span_monospace">%s</text:span>┃","$1")); +    .replaceAll(rgx.inline_subscript,   format(q"┃<text:span text:style-name="Span_subscript">%s</text:span>┃",  "$1")) +    .replaceAll(rgx.inline_mono,        format(q"┃<text:span text:style-name="Span_monospace">%s</text:span>┃",  "$1"));    return _txt;  }  #+END_SRC @@ -764,7 +764,7 @@ string code(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -auto tablarize(O)( +Tuple!(string, string) tablarize(O)(    const        O    obj,    string            _txt,  ) @safe { @@ -792,7 +792,7 @@ auto tablarize(O)(        }        _table ~= "</table:table-row>";      } -  auto t = tuple( +  Tuple!(string, string) t = tuple(      _table,      _tablenote,    ); @@ -814,7 +814,7 @@ string table(O,M)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "table");    string _o_txt_odt = markup(obj); -  auto t = tablarize(obj, _o_txt_odt); +  Tuple!(string, string) t = tablarize(obj, _o_txt_odt);    string _note = t[1];    _o_txt_odt = format(q"┃  <table:table table:name="Table%s" table:style-name="Table1"> diff --git a/org/out_sqlite.org b/org/out_sqlite.org index 0f61a03..0d1bbef 100644 --- a/org/out_sqlite.org +++ b/org/out_sqlite.org @@ -673,7 +673,7 @@ string inline_notes_scroll(M,O)(  #+name: sanitize_and_munge_inline_html  #+BEGIN_SRC d -auto inline_notes_seg(M,O)( +Tuple!(string, string) inline_notes_seg(M,O)(                 M     doc_matters,    const        O     obj,    string             _txt, @@ -706,7 +706,7 @@ auto inline_notes_seg(M,O)(        writeln(__LINE__, " endnote: ", obj.metainfo.is_a, ": ", obj.text);      }    } -  auto t = tuple( +  Tuple!(string, string) t = tuple(      _txt,      _endnotes,    ); @@ -926,7 +926,7 @@ string html_table(M,O)(    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "table"); -  auto _tablarize(O)( +  Tuple!(string, string) _tablarize(O)(      const O         obj,            string    _txt,    ) { @@ -961,14 +961,14 @@ string html_table(M,O)(          }          _table ~= "</tr>";        } -    auto t = tuple( +    Tuple!(string, string) t = tuple(        _table,        _tablenote,      );      return t;    }    string _txt = munge_html(doc_matters, obj); -  auto t = _tablarize(obj, _txt); +  Tuple!(string, string) t = _tablarize(obj, _txt);    _txt = t[0];    string _note = t[1];    string o = format(q"┃<p class="%s"> diff --git a/org/out_xmls.org b/org/out_xmls.org index 8821cca..5cbe430 100644 --- a/org/out_xmls.org +++ b/org/out_xmls.org @@ -262,9 +262,7 @@ string inline_search_form(M)(      _db,      );    } else { -    _form = format(q"┃%s┃", -      "", -    ); +    _form = format(q"┃%s┃", "");    }    o = format(q"┃<div class="flex-menu-option">%s      </div>┃", @@ -598,7 +596,7 @@ string inline_notes_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_notes_seg(O,M)( +Tuple!(string, string[]) inline_notes_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -656,7 +654,7 @@ auto inline_notes_seg(O,M)(        writeln(__LINE__, " endnote: ", obj.metainfo.is_a, ": ", obj.text);      }    } -  auto t = tuple( +  Tuple!(string, string[]) t = tuple(      _txt,      _endnotes,    ); @@ -930,7 +928,7 @@ string heading_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto heading_seg(O,M)( +Tuple!(string, string[]) heading_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -941,7 +939,7 @@ auto heading_seg(O,M)(    _txt = t[0];    string[] _endnotes = t[1];    string o = heading(_txt, obj, doc_matters, _xml_type); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1025,7 +1023,7 @@ string para_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto para_seg(O,M)( +Tuple!(string, string[]) para_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -1036,7 +1034,7 @@ auto para_seg(O,M)(    _txt = t[0].to!string;    string[] _endnotes = t[1];    string o = para(_txt, obj, doc_matters); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1107,7 +1105,7 @@ string quote_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto quote_seg(O,M)( +Tuple!(string, string[]) quote_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -1118,7 +1116,7 @@ auto quote_seg(O,M)(    _txt = t[0].to!string;    string[] _endnotes = t[1];    string o = quote(_txt, obj, doc_matters); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1190,7 +1188,7 @@ string group_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto group_seg(O,M)( +Tuple!(string, string[]) group_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -1201,7 +1199,7 @@ auto group_seg(O,M)(    _txt = t[0].to!string;    string[] _endnotes = t[1];    string o = group(_txt, obj, doc_matters); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1269,7 +1267,7 @@ string block_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto block_seg(O,M)( +Tuple!(string, string[]) block_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -1280,7 +1278,7 @@ auto block_seg(O,M)(    _txt = t[0].to!string;    string[] _endnotes = t[1];    string o = block(_txt, obj, doc_matters); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1348,7 +1346,7 @@ string verse_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto verse_seg(O,M)( +Tuple!(string, string[]) verse_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, @@ -1359,7 +1357,7 @@ auto verse_seg(O,M)(    _txt = t[0].to!string;    string[] _endnotes = t[1];    string o = verse(_txt, obj, doc_matters); -  auto u = tuple( +  Tuple!(string, string[]) u = tuple(      o,      _endnotes,    ); @@ -1443,7 +1441,7 @@ align="left|right|center"  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto tablarize(O)( +Tuple!(string, string) tablarize(O)(    string            _txt,    const        O    obj,  ) @safe { @@ -1453,24 +1451,24 @@ auto tablarize(O)(    string _tablenote;    foreach(row_idx, row; _table_rows) {      _table_cols = row.split(rgx.table_delimiter_col); -      _table ~= "<tr>"; -      foreach(col_idx, cell; _table_cols) { -        if ((_table_cols.length == 1) -        && (_table_rows.length <= row_idx+2)) { -          _tablenote ~= cell; -        } else { -          string _col_is = (row_idx == 0 && obj.table.heading) ? "th" : "td"; -          string _align = ("style=\"text-align:" -          ~ ((obj.table.column_aligns[col_idx] == "l") -          ? "left\"" : "right\"")); -          _table ~= "<" ~ _col_is ~ " width=\"" ~ obj.table.column_widths[col_idx].to!string ~ "%\" " ~ _align ~ ">"; -          _table ~= cell; -          _table ~= "</" ~ _col_is ~ ">"; -        } +    _table ~= "<tr>"; +    foreach(col_idx, cell; _table_cols) { +      if ((_table_cols.length == 1) +      && (_table_rows.length <= row_idx+2)) { +        _tablenote ~= cell; +      } else { +        string _col_is = (row_idx == 0 && obj.table.heading) ? "th" : "td"; +        string _align = ("style=\"text-align:" +        ~ ((obj.table.column_aligns[col_idx] == "l") +        ? "left\"" : "right\"")); +        _table ~= "<" ~ _col_is ~ " width=\"" ~ obj.table.column_widths[col_idx].to!string ~ "%\" " ~ _align ~ ">"; +        _table ~= cell; +        _table ~= "</" ~ _col_is ~ ">";        } -      _table ~= "</tr>";      } -  auto t = tuple( +    _table ~= "</tr>"; +  } +  Tuple!(string, string) t = tuple(      _table,      _tablenote,    ); diff --git a/org/output_show.org b/org/output_show.org index 5d3f4f8..7ce14f2 100644 --- a/org/output_show.org +++ b/org/output_show.org @@ -434,7 +434,6 @@ import    std.regex,    std.stdio,    std.string, -  std.traits,    std.typecons,    std.uni,    std.utf, diff --git a/org/spine.org b/org/spine.org index ced7e3b..1ecf248 100644 --- a/org/spine.org +++ b/org/spine.org @@ -1015,7 +1015,6 @@ if ((_opt_action.debug_do)    writeln("--->\nstepX commence → (document abstraction)");  }  auto t = spineAbstraction!()(_env, program_info, _opt_action, manifest, _make_and_meta_struct); -static assert(!isTypeTuple!(t));  static assert(t.length==2);  auto doc_abstraction = t[dAM.abstraction];  auto doc_matters = t[dAM.matters]; @@ -1231,7 +1230,6 @@ if ((_opt_action.debug_do)  }  auto _header_body_insertfilelist_imagelist    = spineRawMarkupContent!()(_opt_action, _manifest.src.path_and_fn); -static assert(!isTypeTuple!(_header_body_insertfilelist_imagelist));  static assert(_header_body_insertfilelist_imagelist.length==4);  if ((_opt_action.debug_do)  || (_opt_action.very_verbose) @@ -1308,7 +1306,6 @@ auto da = docAbstraction!()(    _manifest,    true,  ); -static assert(!isTypeTuple!(da));  static assert(da.length==2);  auto doc_abstraction = da[docAbst.doc_abstract_obj]; /+ head ~ toc ~ body ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~ blurb; +/  auto _doc_has_struct = da[docAbst.doc_has]; | 
