diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2019-04-10 14:25:38 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2019-05-17 16:59:54 -0400 | 
| commit | 6d337554a5354b5ac3825f8103a90476edea46ac (patch) | |
| tree | a0c41d08a2488503c0770adab77989b0898dce5c | |
| parent | 0.6.0 docReform project license AGPLv3+ (diff) | |
text format delimiter, use: "┃" instead of "┋"
- gdc has compilation issue with the "┋" character,
  not worth arguing, make internal marker changes
  (can be changed again)
- text format delimiter
  rg -l "┋" org/. | xargs sed -i 's/┋/┃/g'
| -rw-r--r-- | org/default_paths.org | 2 | ||||
| -rw-r--r-- | org/default_regex.org | 4 | ||||
| -rw-r--r-- | org/meta_abstraction.org | 22 | ||||
| -rw-r--r-- | org/output_sqlite.org | 52 | ||||
| -rw-r--r-- | org/output_xmls.org | 186 | ||||
| -rw-r--r-- | src/doc_reform/meta/metadoc_from_src.d | 22 | ||||
| -rw-r--r-- | src/doc_reform/meta/rgx.d | 4 | ||||
| -rw-r--r-- | src/doc_reform/output/epub3.d | 56 | ||||
| -rw-r--r-- | src/doc_reform/output/paths_output.d | 2 | ||||
| -rw-r--r-- | src/doc_reform/output/rgx.d | 4 | ||||
| -rw-r--r-- | src/doc_reform/output/sqlite.d | 48 | ||||
| -rw-r--r-- | src/doc_reform/output/xmls.d | 130 | 
12 files changed, 266 insertions, 266 deletions
| diff --git a/org/default_paths.org b/org/default_paths.org index 5ba5a43..26e28f5 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -1034,7 +1034,7 @@ template DocReformPathsUrl() {          return _doc_root;        }        string html_seg(string html_segname, string obj_id) { // TODO bespoke for sqlite -        string _url = format(q"┋%s/%s/html/%s/%s.html#%s┋", +        string _url = format(q"┃%s/%s/html/%s/%s.html#%s┃",            doc_root,            doc_matters.src.language,            doc_matters.src.filename_base, diff --git a/org/default_regex.org b/org/default_regex.org index 849b9b0..f4c2952 100644 --- a/org/default_regex.org +++ b/org/default_regex.org @@ -537,7 +537,7 @@ static inline_text_and_note_al_                       = ctRegex!(`(.+?(?:【[*+]  static inline_image                                   = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");  static inline_image_without_dimensions                = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>0)h(?P<height>0))\s*(?P<post>.*?┝┤.*?├)`, "mg");  static inline_image_info                              = ctRegex!(`☼?(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+)`, "mg"); -static inline_link_anchor                             = ctRegex!(`┋(?P<anchor>\S+?)┋`, "mg"); // TODO *~text_link_anchor +static inline_link_anchor                             = ctRegex!(`┃(?P<anchor>\S+?)┃`, "mg"); // TODO *~text_link_anchor  static inline_link_                                   = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>.+?)├`, "mg");  static inline_link                                    = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>\S+?)├`, "mg");  static inline_link_empty                              = ctRegex!(`┥(?P<text>.+?)┝┤├`, "mg"); @@ -555,7 +555,7 @@ static inline_link_fn_suffix                          = ctRegex!(`¤(.+?)(\.fnSu  static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");  static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");  static quotation_mark_sql_insert_delimiter            = ctRegex!("[']", "mg"); -static quotation_mark_various                         = ctRegex!(q"┋['‘’“”"`´¨]┋", "mg"); +static quotation_mark_various                         = ctRegex!(q"┃['‘’“”"`´¨]┃", "mg");  #+END_SRC  *** inline markup font face mod                          :inline:font:face: diff --git a/org/meta_abstraction.org b/org/meta_abstraction.org index 87051c4..890519e 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -2356,7 +2356,7 @@ auto _image_dimensions(O,M)(O obj, M manifest_matter) {        }        obj.text = obj.text.replaceFirst(          rgx.inline_image_without_dimensions, -        format(q"┋%s☼%s,w%sh%s %s┋", +        format(q"┃%s☼%s,w%sh%s %s┃",            "$1",            "$3",            _w.to!string, @@ -2395,7 +2395,7 @@ auto _links(O)(O obj) {          obj.stow.link ~= obj.text.matchFirst(rgx.inline_link_stow_uri)[2];          obj.text = obj.text.replaceFirst(            rgx.inline_link_stow_uri, -          format(q"┋┥%s┝┤%s├┋", "$1", i) +          format(q"┃┥%s┝┤%s├┃", "$1", i)          );        }      } @@ -5076,10 +5076,10 @@ auto font_faces_line(T)(    static auto mkup = InlineMarkup();    if (textline.match(rgx.inline_faces_line)) {      textline = textline -      .replaceFirst(rgx.inline_emphasis_line,   format(q"┋%s%s%s%s%s%s┋", mkup.emph,       mkup.ff_o, "$1", mkup.ff_c, mkup.emph, "$2")) -      .replaceFirst(rgx.inline_bold_line,       format(q"┋%s%s%s%s%s%s┋", mkup.bold,       mkup.ff_o, "$1", mkup.ff_c, mkup.bold, "$2")) -      .replaceFirst(rgx.inline_underscore_line, format(q"┋%s%s%s%s%s%s┋", mkup.underscore, mkup.ff_o, "$1", mkup.ff_c, mkup.underscore, "$2")) -      .replaceFirst(rgx.inline_italics_line,    format(q"┋%s%s%s%s%s%s┋", mkup.italic,     mkup.ff_o, "$1", mkup.ff_c, mkup.italic, "$2")); +      .replaceFirst(rgx.inline_emphasis_line,   format(q"┃%s%s%s%s%s%s┃", mkup.emph,       mkup.ff_o, "$1", mkup.ff_c, mkup.emph, "$2")) +      .replaceFirst(rgx.inline_bold_line,       format(q"┃%s%s%s%s%s%s┃", mkup.bold,       mkup.ff_o, "$1", mkup.ff_c, mkup.bold, "$2")) +      .replaceFirst(rgx.inline_underscore_line, format(q"┃%s%s%s%s%s%s┃", mkup.underscore, mkup.ff_o, "$1", mkup.ff_c, mkup.underscore, "$2")) +      .replaceFirst(rgx.inline_italics_line,    format(q"┃%s%s%s%s%s%s┃", mkup.italic,     mkup.ff_o, "$1", mkup.ff_c, mkup.italic, "$2"));    }    return textline;  } @@ -5551,7 +5551,7 @@ static struct ObjInlineMarkupMunge {      }      if (auto m = obj_txt_in.match(rgx.para_inline_link_anchor)) {        obj_txt_in = obj_txt_in -        .replaceAll(rgx.para_inline_link_anchor, "┋$1┋"); +        .replaceAll(rgx.para_inline_link_anchor, "┃$1┃");      }      auto ftn = footnotes_endnotes_markup_and_number_or_stars(obj_txt_in, reset_note_numbers);      obj_txt_out = ftn[0]; @@ -6134,7 +6134,7 @@ private:            heading_number_auto_composite              = (conf_make_meta.make.auto_num_depth.to!uint == 3                && auto_heading_numbering[3]) -            ? (format(q"┋%s.%s.%s.%s┋", +            ? (format(q"┃%s.%s.%s.%s┃",                  heading_num[0].to!string,                  heading_num[1].to!string,                  heading_num[2].to!string, @@ -6146,7 +6146,7 @@ private:              = ((conf_make_meta.make.auto_num_depth.to!uint >= 2)                && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                && auto_heading_numbering[2]) -            ? (format(q"┋%s.%s.%s┋", +            ? (format(q"┃%s.%s.%s┃",                  heading_num[0].to!string,                  heading_num[1].to!string,                  heading_num[2].to!string @@ -6157,7 +6157,7 @@ private:              = ((conf_make_meta.make.auto_num_depth.to!uint >= 1)                && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                && auto_heading_numbering[1]) -            ? (format(q"┋%s.%s┋", +            ? (format(q"┃%s.%s┃",                  heading_num[0].to!string,                  heading_num[1].to!string                )) @@ -6169,7 +6169,7 @@ private:              = ((conf_make_meta.make.auto_num_depth.to!uint >= 0)                && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                && auto_heading_numbering[0]) -            ? (format(q"┋%s┋", +            ? (format(q"┃%s┃",                  heading_num[0].to!string                ))              : ""; diff --git a/org/output_sqlite.org b/org/output_sqlite.org index 5faf244..6894c56 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -159,13 +159,13 @@ template SQLiteFormatAndLoadObject() {  template SQLiteTablesReCreate() {    string SQLiteTablesReCreate()() {      string _sql_instruct; -    _sql_instruct = format(q"┋ +    _sql_instruct = format(q"┃        <<sqlite_statement_drop_existing_index>>        <<sqlite_statement_drop_existing_tables>>        <<sqlite_statement_create_table_metadata_and_src_txt>>        <<sqlite_statement_create_table_objects>>        <<sqlite_statement_create_index>> -    ┋",); +    ┃",);      return _sql_instruct;    }  } @@ -225,13 +225,13 @@ template SQLiteTablesCreate() {      template SQLiteTablesReCreate() {        string SQLiteTablesReCreate()() {          string _sql_instruct; -        _sql_instruct = format(q"┋ +        _sql_instruct = format(q"┃            <<sqlite_statement_drop_existing_index>>            <<sqlite_statement_drop_existing_tables>>            <<sqlite_statement_create_table_metadata_and_src_txt>>            <<sqlite_statement_create_table_objects>>            <<sqlite_statement_create_index>> -        ┋",); +        ┃",);          return _sql_instruct;        }      } @@ -740,9 +740,9 @@ auto html_heading(M,O)(    assert(obj.metainfo.is_a          == "heading");    string _txt = munge_html(doc_matters, obj);    _txt = inline_markup(doc_matters, obj, _txt); -  string o = format(q"┋<p class="%s"><b> +  string o = format(q"┃<p class="%s"><b>        %s -    </b></p>┋", +    </b></p>┃",        obj.metainfo.is_a,        _txt,      ); @@ -760,9 +760,9 @@ auto html_heading(M,O)(  ) {    string o;    string _txt = munge_html(doc_matters, obj); -  o = format(q"┋<h%s class="%s"> +  o = format(q"┃<h%s class="%s">        %s -    </h%s>┋", +    </h%s>┃",        obj.metainfo.heading_lev_markup,        obj.metainfo.is_a,        _txt, @@ -787,9 +787,9 @@ auto html_para(M,O)(    string _txt = munge_html(doc_matters, obj);    _txt = (obj.attrib.bullet) ? ("●  " ~ _txt) : _txt;    _txt = inline_markup(doc_matters, obj, _txt); -  string o = format(q"┋<p class="%s" indent="h%si%s"> +  string o = format(q"┃<p class="%s" indent="h%si%s">      %s -  </p>┋", +  </p>┃",        obj.metainfo.is_a,        obj.attrib.indent_hang,        obj.attrib.indent_base, @@ -812,9 +812,9 @@ auto html_quote(M,O)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "quote");    string _txt = munge_html(doc_matters, obj); -  string o = format(q"┋<p class="%s"> +  string o = format(q"┃<p class="%s">      %s -  </p>┋", +  </p>┃",        obj.metainfo.is_a,        _txt      ); @@ -835,9 +835,9 @@ auto html_group(M,O)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "group");    string _txt = munge_html(doc_matters, obj); -  string o = format(q"┋<p class="%s"> +  string o = format(q"┃<p class="%s">      %s -  </p>┋", +  </p>┃",        obj.metainfo.is_a,        _txt      ); @@ -858,8 +858,8 @@ auto html_block(M,O)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "block");    string _txt = munge_html(doc_matters, obj); -  string o = format(q"┋ -  <p class="%s">%s</p>┋", +  string o = format(q"┃ +  <p class="%s">%s</p>┃",        obj.metainfo.is_a,        _txt.stripRight      ); @@ -880,7 +880,7 @@ auto html_verse(M,O)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "verse");    string _txt = munge_html(doc_matters, obj); -  string o = format(q"┋<p class="%s">%s</p>┋", +  string o = format(q"┃<p class="%s">%s</p>┃",        obj.metainfo.is_a,        _txt      ); @@ -900,7 +900,7 @@ auto html_code(O)(    assert(obj.metainfo.is_of_type    == "block");    assert(obj.metainfo.is_a          == "code");    string _txt = html_special_characters_code(obj.text); -  string o = format(q"┋<p class="%s">%s</p>┋", +  string o = format(q"┃<p class="%s">%s</p>┃",        obj.metainfo.is_a,        _txt      ); @@ -965,12 +965,12 @@ auto html_table(M,O)(    auto t = _tablarize(obj, _txt);    _txt = t[0];    string _note = t[1]; -  string o = format(q"┋<p class="%s"> +  string o = format(q"┃<p class="%s">      <table summary="normal text css" width="95%%" border="0" bgcolor="white" cellpadding="2" align="center">        %s      </table>      %s -  </p>┋", +  </p>┃",      obj.metainfo.is_a,      _txt,      _note @@ -1604,7 +1604,7 @@ CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register);  #+name: sqlite_formatted_delete  #+BEGIN_SRC d  string _uid = doc_matters.src.doc_uid; -string _delete_uid = format(q"┋ +string _delete_uid = format(q"┃  #+END_SRC  ***** DELETE FROM ... WHERE @@ -1621,7 +1621,7 @@ WHERE uid_metadata_and_text = '%s';  #+name: sqlite_formatted_delete  #+BEGIN_SRC d -┋", +┃",    _uid,    _uid,  ); @@ -1641,7 +1641,7 @@ either:  #+name: sqlite_formatted_insertions_doc_objects  #+BEGIN_SRC d -string _insert_doc_objects_row = format(q"┋ +string _insert_doc_objects_row = format(q"┃  #+END_SRC  ***** INSERT INTO @@ -1682,7 +1682,7 @@ string _insert_doc_objects_row = format(q"┋  #+name: sqlite_formatted_insertions_doc_objects  #+BEGIN_SRC d -┋", +┃",    _uid,    obj.metainfo.ocn,    obj.metainfo.identifier, @@ -1701,7 +1701,7 @@ string _insert_doc_objects_row = format(q"┋  #+name: sqlite_formatted_insertions_doc_matters_metadata  #+BEGIN_SRC d  string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); -string _insert_metadata = format(q"┋ +string _insert_metadata = format(q"┃  #+END_SRC  ***** INSERT INTO @@ -1820,7 +1820,7 @@ string _insert_metadata = format(q"┋  #+name: sqlite_formatted_insertions_doc_matters_metadata  #+BEGIN_SRC d -┋", +┃",    _uid,    SQLinsertDelimiter!()(doc_matters.src.filename),    SQLinsertDelimiter!()(doc_matters.src.docname_composite_unique_per_src_doc), diff --git a/org/output_xmls.org b/org/output_xmls.org index 19d4f1e..faa273f 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -168,7 +168,7 @@ auto header_metadata(M)(  ) {    string _publisher="Publisher"; // TODO    string o; -  o = format(q"┋<!-- DocReform header metadata --> +  o = format(q"┃<!-- DocReform header metadata -->  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />  <meta name="dc.title" content="%s" />  <meta name="dc.author" content="%s" /> @@ -183,7 +183,7 @@ auto header_metadata(M)(  <meta name="dc.rights" content="%s" />  <meta name="generator" content="%s" />  <link rel="generator" href="%s" /> -<!-- DocReform header metadata -->┋", +<!-- DocReform header metadata -->┃",      doc_matters.conf_make_meta.meta.title_full,      doc_matters.conf_make_meta.meta.creator_author,      _publisher, @@ -223,9 +223,9 @@ auto site_info_button(M)(       _locations = "<p class=\"tiny_left\"><a href=\"http://www.doc-reform.org\">doc-reform</a></p>\n<p class=\"tiny_left\"><a href=\"http://git.sisudoc.org/software/doc-reform/\">sources / git</a></p>\n<p class=\"tiny_left\"><a href=\"http://www.sisudoc.org\">www.sisudoc.org</a></p>";    }    string o; -  o = format(q"┋<div class="flex-menu-option"> +  o = format(q"┃<div class="flex-menu-option">        %s -    </div>┋", +    </div>┃",      _locations,    );    return o; @@ -244,7 +244,7 @@ auto inline_search_form(M)(    string o;    string _form;    if (doc_matters.opt.action.workon) { -    _form = format(q"┋ +    _form = format(q"┃  <a name="search"></a>  <form method="get" action="%s" target="_top">  <font size="2"> @@ -256,17 +256,17 @@ auto inline_search_form(M)(  <input type="submit" name="search" value="search doc" />  <input type="submit" name="search" value="search db" />  </font></form> -      ┋", +      ┃",      _action,      _db,      );    } else { -    _form = format(q"┋%s┋", +    _form = format(q"┃%s┃",        "",      );    } -  o = format(q"┋<div class="flex-menu-option">%s -    </div>┋", +  o = format(q"┃<div class="flex-menu-option">%s +    </div>┃",      _form,    );    return o; @@ -283,17 +283,17 @@ auto html_head(M)(  ) {  string _manifest = "";  if (doc_matters.opt.action.workon) { -  _manifest = format(q"┋ +  _manifest = format(q"┃       <a href="../../manifest/sisu.en.html" target="_top">         <font face="verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman" size="2">           [ document manifest ]         </font>       </a> -     ┋", +     ┃",    );  }    string o; -  o = format(q"┋<!DOCTYPE html> +  o = format(q"┃<!DOCTYPE html>  <html>  <head>    <meta charset="utf-8" /> @@ -315,7 +315,7 @@ if (doc_matters.opt.action.workon) {      <div class="flex-menu-option">        %s      </div> -    %s%s┋", +    %s%s┃",      doc_matters.conf_make_meta.meta.title_full,      (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""        : ", " ~ doc_matters.conf_make_meta.meta.creator_author, @@ -341,27 +341,27 @@ if (doc_matters.opt.action.workon) {  auto epub3_seg_head(M)(    M  doc_matters,  ) { -  string html_base = format(q"┋<!DOCTYPE html> -<html>┋", +  string html_base = format(q"┃<!DOCTYPE html> +<html>┃",  ); -  string html_simple = format(q"┋<!DOCTYPE html> +  string html_simple = format(q"┃<!DOCTYPE html>  <html    xmlns="http://www.w3.org/1999/xhtml"    xmlns:epub="http://www.idpf.org/2007/ops" -  lang="%s" xml:lang="%s">┋", +  lang="%s" xml:lang="%s">┃",      doc_matters.src.language,      doc_matters.src.language,    ); -  string html_strict = format(q"┋<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +  string html_strict = format(q"┃<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"    xmlns:epub="http://www.idpf.org/2007/ops" -  lang="%s" xml:lang="%s">┋", +  lang="%s" xml:lang="%s">┃",      doc_matters.src.language,      doc_matters.src.language,    );    string o; -  o = format(q"┋%s +  o = format(q"┃%s  <head>    <title>      %s%s @@ -384,7 +384,7 @@ auto epub3_seg_head(M)(    <link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />  </head>  <body lang="%s"> -<a name="top" id="top"></a>┋", +<a name="top" id="top"></a>┃",      html_simple,      doc_matters.conf_make_meta.meta.title_full,      (doc_matters.conf_make_meta.meta.creator_author.empty) ? "" @@ -414,11 +414,11 @@ auto epub3_seg_head(M)(  #+BEGIN_SRC d  auto tail() {    string o; -  o = format(q"┋ +  o = format(q"┃    <a name="bottom" id="bottom"></a>    <a name="end" id="end"></a>  </body> -</html>┋"); +</html>┃");    return o;  }  #+END_SRC @@ -682,10 +682,10 @@ string lev4_heading_subtoc(O,M)(        text = font_face(text);        auto link = m.captures[3].to!string;        lev4_subtoc ~= subtoc.replaceFirst(rgx.inline_link_subtoc, -        format(q"┋    <p class="minitoc" indent="h%si%s"> +        format(q"┃    <p class="minitoc" indent="h%si%s">        ۰ <a href="%s">%s</a>      </p> -┋", +┃",            indent,            indent,            link, @@ -711,42 +711,42 @@ auto nav_pre_next_svg(O,M)(      toc = "";      prev = "";    } else { -    toc = format(q"┋<a href="toc.html" target="_top"> +    toc = format(q"┃<a href="toc.html" target="_top">            <div class="toc-button menu">              <svg viewbox="0 0 100 100">                <path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2  s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2  S29.104,22,28,22z"/>              </svg>            </div> -        </a>┋", +        </a>┃",      );    }    if (obj.tags.segname_prev == "") {      prev = "";    } else { -    prev = format(q"┋<a href="%s.html" target="_top"> +    prev = format(q"┃<a href="%s.html" target="_top">            <div class="prev-next-button previous">              <svg viewbox="0 0 100 100">                <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z" transform=" translate(15,0)">              </svg>            </div> -        </a>┋", +        </a>┃",        obj.tags.segname_prev,      );    }    if (obj.tags.segname_next == "") {      next = "";    } else { -    next = format(q"┋<a href="%s.html" target="_top"> +    next = format(q"┃<a href="%s.html" target="_top">            <div class="prev-next-button next">              <svg viewbox="0 0 100 100">                <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z "transform="translate(85,100) rotate(180) ">              </svg>            </div> -        </a>┋", +        </a>┃",        obj.tags.segname_next,      );    } -  string _toc_pre_next = format(q"┋        <div class="flex-menu-option"> +  string _toc_pre_next = format(q"┃        <div class="flex-menu-option">        <div class="nav-bar">          %s          %s @@ -754,19 +754,19 @@ auto nav_pre_next_svg(O,M)(        </div>      </div>    </div> -</div>┋", +</div>┃",      toc,      prev,      next,    ); -  string _pre_next = format(q"┋        <div class="flex-menu-option"> +  string _pre_next = format(q"┃        <div class="flex-menu-option">        <div class="nav-bar">          %s          %s        </div>      </div>    </div> -</div>┋", +</div>┃",      prev,      next,    ); @@ -809,13 +809,13 @@ auto heading(O)(      ? ""      : "<a name=\"" ~ obj.tags.heading_lev_anchor_tag ~ "\"></a>";    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋%s +    o = format(q"┃%s    <div class="substance">      <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>      <h%s class="%s" id="%s"><a name="%s"></a>%s%s        %s      </h%s> -  </div>┋", +  </div>┃",      _horizontal_rule,      obj.metainfo.identifier,      (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier, @@ -829,12 +829,12 @@ auto heading(O)(      obj.metainfo.heading_lev_markup,      );    } else { -    o = format(q"┋%s +    o = format(q"┃%s    <div class="substance">      <h%s class="%s">%s%s        %s      </h%s> -  </div>┋", +  </div>┃",        _horizontal_rule,        obj.metainfo.heading_lev_markup,        obj.metainfo.is_a, @@ -908,12 +908,12 @@ auto para(O)(    _txt = _txt.replaceFirst(rgx.inline_link_anchor,       "<a name=\"$1\"></a>");    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <p class="%s" indent="h%si%s" id="%s">%s      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -924,11 +924,11 @@ auto para(O)(        _txt      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <p class="%s" indent="h%si%s">%s      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.is_a,        obj.attrib.indent_hang,        obj.attrib.indent_base, @@ -996,12 +996,12 @@ auto quote(O)(    _txt = font_face(_txt);    string o;    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <p class="%s" id="%s">      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -1009,11 +1009,11 @@ auto quote(O)(        _txt      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <p class="%s">      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.is_a,        _txt      ); @@ -1078,12 +1078,12 @@ auto group(O)(    _txt = font_face(_txt);    string o;    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <p class="%s" id="%s">      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -1091,11 +1091,11 @@ auto group(O)(        _txt      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <p class="%s">      %s    </p> -</div>┋", +</div>┃",        obj.metainfo.is_a,        _txt      ); @@ -1161,10 +1161,10 @@ auto block(O)(    _txt = font_face(_txt);    string o;    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <p class="%s" id="%s">%s</p> -</div>┋", +</div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -1172,9 +1172,9 @@ auto block(O)(        _txt.stripRight      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <p class="%s">%s</p> -</div>┋", +</div>┃",        obj.metainfo.is_a,        _txt.stripRight      ); @@ -1240,10 +1240,10 @@ auto verse(O)(    _txt = font_face(_txt);    string o;    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" id="%s">%s</p> -    </div>┋", +    </div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -1251,9 +1251,9 @@ auto verse(O)(        _txt      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">        <p class="%s">%s</p> -    </div>┋", +    </div>┃",        obj.metainfo.is_a,        _txt      ); @@ -1317,10 +1317,10 @@ auto code(O)(    assert(obj.metainfo.is_a          == "code");    string o;    if (!(obj.metainfo.identifier.empty)) { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <pre><p class="%s" id="%s">%s</p></pre> -</div>┋", +</div>┃",        obj.metainfo.identifier,        (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,        obj.metainfo.is_a, @@ -1328,9 +1328,9 @@ auto code(O)(        _txt      );    } else { -    o = format(q"┋  <div class="substance"> +    o = format(q"┃  <div class="substance">    <pre><p class="%s">%s</p></pre> -</div>┋", +</div>┃",        obj.metainfo.is_a,        _txt      ); @@ -1405,7 +1405,7 @@ auto table(O)(    _txt = t[0];    string _note = t[1];    string o; -  o = format(q"┋  <div class="substance"> +  o = format(q"┃  <div class="substance">    <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>    <p class="%s" id="%s">%s      <table summary="normal text css" width="95%%" border="0" bgcolor="white" cellpadding="2" align="center"> @@ -1413,7 +1413,7 @@ auto table(O)(      </table>      %s    </p> -</div>┋", +</div>┃",      obj.metainfo.object_number,      obj.metainfo.object_number,      obj.metainfo.is_a, @@ -2119,7 +2119,7 @@ template outputEPub3() {  #+BEGIN_SRC d  string epub3_mimetypes() {    string o; -  o = format(q"┋application/epub+zip┋") ~ "\n"; +  o = format(q"┃application/epub+zip┃") ~ "\n";    return o;  }  #+END_SRC @@ -2132,13 +2132,13 @@ string epub3_mimetypes() {  #+BEGIN_SRC d  string epub3_container_xml() {    string o; -  o = format(q"┋<?xml version='1.0' encoding='utf-8'?>┋") ~ "\n"; -  o ~= format(q"┋<container version="1.0" +  o = format(q"┃<?xml version='1.0' encoding='utf-8'?>┃") ~ "\n"; +  o ~= format(q"┃<container version="1.0"  xmlns="urn:oasis:names:tc:opendocument:xmlns:container">  <rootfiles>    <rootfile full-path="OEBPS/content.opf"      media-type="application/oebps-package+xml" /> -</rootfiles>┋") ~ "\n</container>\n"; +</rootfiles>┃") ~ "\n</container>\n";    return o;  }  #+END_SRC @@ -2156,7 +2156,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {    auto xhtml_format = outputXHTMLs();    auto pth_epub3 = DocReformPathsEPUB!()(doc_matters.output_path, doc_matters.src.language);    string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! -  string content = format(q"┋  <?xml version='1.0' encoding='utf-8'?> +  string content = format(q"┃  <?xml version='1.0' encoding='utf-8'?>  <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">    <metadata      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" @@ -2183,7 +2183,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {        <link rel="stylesheet" href="%s" type="text/css" id="main-css" />      <!-- nav epub3 navigation -->        <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" /> -┋", +┃",      _uuid,      xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_full),      xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main), @@ -2208,8 +2208,8 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {    // TODO sort jpg & png    content ~= "    " ~ "<!-- Images -->" ~ "\n  ";    foreach (image; doc_matters.srcs.image_list) { -    content ~= format(q"┋      <item id="%s" href="%s/%s" media-type="image/%s" /> -┋", +    content ~= format(q"┃      <item id="%s" href="%s/%s" media-type="image/%s" /> +┃",        image.baseName.stripExtension,        (pth_epub3.doc_oebps_image(doc_matters.src.filename)).chompPrefix("OEBPS/"),        image, @@ -2352,7 +2352,7 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {    auto markup = InlineMarkup();    auto rgx = Rgx();    enum DomTags { none, open, close, close_and_open, open_still, } -  string toc = format(q"┋<?xml version='1.0' encoding='utf-8'?> +  string toc = format(q"┃<?xml version='1.0' encoding='utf-8'?>  <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">  <head>    <!-- four required metadata items (for all NCX documents, @@ -2371,7 +2371,7 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {  <docAuthor>    <text>%s</text>  </docAuthor> -<navMap>┋", +<navMap>┃",      doc_matters.conf_make_meta.meta.title_full,                          // title      (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""        : " by " ~ doc_matters.conf_make_meta.meta.creator_author,         // author @@ -2394,12 +2394,12 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {            case DomTags.close_and_open :              ++counter;              toc ~= "\n    </navPoint>"; -            toc ~= format(q"┋ +            toc ~= format(q"┃    <navPoint class="chapter" id="navpoint" playOrder="%s">      <navLabel>        <text>%s</text>      </navLabel> -    <content src="%s.xhtml%s" />┋", +    <content src="%s.xhtml%s" />┃",                counter,                _txt,                obj.tags.segment_anchor_tag_epub, @@ -2408,12 +2408,12 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {              break;            case DomTags.open :              ++counter; -            toc ~= format(q"┋ +            toc ~= format(q"┃    <navPoint class="chapter" id="navpoint" playOrder="%s">      <navLabel>        <text>%s</text>      </navLabel> -    <content src="%s.xhtml%s" />┋", +    <content src="%s.xhtml%s" />┃",                counter,                _txt,                obj.tags.segment_anchor_tag_epub, @@ -2427,12 +2427,12 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {        }      }    } -  toc ~= format(q"┋ +  toc ~= format(q"┃      </navPoint>      </navPoint>      </navPoint>    </navMap> -</ncx>┋"); +</ncx>┃");    return toc;  }  #+END_SRC @@ -2737,40 +2737,40 @@ void outputEPub3(D,I)(          assert(obj.text.length > 0);          if (obj.metainfo.heading_lev_markup <= 4) {            oepbs_content_parts["manifest_documents"] ~= -            format(q"┋      <item id="%s.xhtml" href="%s.xhtml" media-type="application/xhtml+xml" /> -┋", +            format(q"┃      <item id="%s.xhtml" href="%s.xhtml" media-type="application/xhtml+xml" /> +┃",              obj.tags.segment_anchor_tag_epub,              obj.tags.segment_anchor_tag_epub,            );            oepbs_content_parts["spine"] ~= -            format(q"┋    <itemref idref="%s.xhtml" linear="yes" /> -┋", +            format(q"┃    <itemref idref="%s.xhtml" linear="yes" /> +┃",              obj.tags.segment_anchor_tag_epub,            );            oepbs_content_parts["guide"] ~= -            format(q"┋      <reference type="%s" href="%s" /> -┋", +            format(q"┃      <reference type="%s" href="%s" /> +┃",              obj.tags.segment_anchor_tag_epub,              obj.tags.segment_anchor_tag_epub,            );          } else if (obj.metainfo.heading_lev_markup > 4) {            oepbs_content_parts["manifest_documents"] ~= -            format(q"┋      <item id="%s.xhtml#%s" href="%s.xhtml#%s" media-type="application/xhtml+xml" /> -┋", +            format(q"┃      <item id="%s.xhtml#%s" href="%s.xhtml#%s" media-type="application/xhtml+xml" /> +┃",              obj.tags.segment_anchor_tag_epub,              obj.metainfo.object_number,              obj.tags.segment_anchor_tag_epub,              obj.metainfo.object_number,            );            oepbs_content_parts["spine"] ~= -            format(q"┋    <itemref idref="%s.xhtml#%s" linear="yes" /> -┋", +            format(q"┃    <itemref idref="%s.xhtml#%s" linear="yes" /> +┃",              obj.tags.segment_anchor_tag_epub,              obj.metainfo.object_number,            );            oepbs_content_parts["guide"] ~= -            format(q"┋      <reference type="%s#%s" href="%s#%s" /> -┋", +            format(q"┃      <reference type="%s#%s" href="%s#%s" /> +┃",              obj.tags.segment_anchor_tag_epub,              obj.metainfo.object_number,              obj.tags.segment_anchor_tag_epub, diff --git a/src/doc_reform/meta/metadoc_from_src.d b/src/doc_reform/meta/metadoc_from_src.d index f089a15..3862403 100644 --- a/src/doc_reform/meta/metadoc_from_src.d +++ b/src/doc_reform/meta/metadoc_from_src.d @@ -1788,7 +1788,7 @@ template DocReformDocAbstraction() {            }            obj.text = obj.text.replaceFirst(              rgx.inline_image_without_dimensions, -            format(q"┋%s☼%s,w%sh%s %s┋", +            format(q"┃%s☼%s,w%sh%s %s┃",                "$1",                "$3",                _w.to!string, @@ -1815,7 +1815,7 @@ template DocReformDocAbstraction() {              obj.stow.link ~= obj.text.matchFirst(rgx.inline_link_stow_uri)[2];              obj.text = obj.text.replaceFirst(                rgx.inline_link_stow_uri, -              format(q"┋┥%s┝┤%s├┋", "$1", i) +              format(q"┃┥%s┝┤%s├┃", "$1", i)              );            }          } @@ -4062,10 +4062,10 @@ template DocReformDocAbstraction() {      static auto mkup = InlineMarkup();      if (textline.match(rgx.inline_faces_line)) {        textline = textline -        .replaceFirst(rgx.inline_emphasis_line,   format(q"┋%s%s%s%s%s%s┋", mkup.emph,       mkup.ff_o, "$1", mkup.ff_c, mkup.emph, "$2")) -        .replaceFirst(rgx.inline_bold_line,       format(q"┋%s%s%s%s%s%s┋", mkup.bold,       mkup.ff_o, "$1", mkup.ff_c, mkup.bold, "$2")) -        .replaceFirst(rgx.inline_underscore_line, format(q"┋%s%s%s%s%s%s┋", mkup.underscore, mkup.ff_o, "$1", mkup.ff_c, mkup.underscore, "$2")) -        .replaceFirst(rgx.inline_italics_line,    format(q"┋%s%s%s%s%s%s┋", mkup.italic,     mkup.ff_o, "$1", mkup.ff_c, mkup.italic, "$2")); +        .replaceFirst(rgx.inline_emphasis_line,   format(q"┃%s%s%s%s%s%s┃", mkup.emph,       mkup.ff_o, "$1", mkup.ff_c, mkup.emph, "$2")) +        .replaceFirst(rgx.inline_bold_line,       format(q"┃%s%s%s%s%s%s┃", mkup.bold,       mkup.ff_o, "$1", mkup.ff_c, mkup.bold, "$2")) +        .replaceFirst(rgx.inline_underscore_line, format(q"┃%s%s%s%s%s%s┃", mkup.underscore, mkup.ff_o, "$1", mkup.ff_c, mkup.underscore, "$2")) +        .replaceFirst(rgx.inline_italics_line,    format(q"┃%s%s%s%s%s%s┃", mkup.italic,     mkup.ff_o, "$1", mkup.ff_c, mkup.italic, "$2"));      }      return textline;    } @@ -4469,7 +4469,7 @@ template DocReformDocAbstraction() {        }        if (auto m = obj_txt_in.match(rgx.para_inline_link_anchor)) {          obj_txt_in = obj_txt_in -          .replaceAll(rgx.para_inline_link_anchor, "┋$1┋"); +          .replaceAll(rgx.para_inline_link_anchor, "┃$1┃");        }        auto ftn = footnotes_endnotes_markup_and_number_or_stars(obj_txt_in, reset_note_numbers);        obj_txt_out = ftn[0]; @@ -4924,7 +4924,7 @@ template DocReformDocAbstraction() {              heading_number_auto_composite                = (conf_make_meta.make.auto_num_depth.to!uint == 3                  && auto_heading_numbering[3]) -              ? (format(q"┋%s.%s.%s.%s┋", +              ? (format(q"┃%s.%s.%s.%s┃",                    heading_num[0].to!string,                    heading_num[1].to!string,                    heading_num[2].to!string, @@ -4936,7 +4936,7 @@ template DocReformDocAbstraction() {                = ((conf_make_meta.make.auto_num_depth.to!uint >= 2)                  && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                  && auto_heading_numbering[2]) -              ? (format(q"┋%s.%s.%s┋", +              ? (format(q"┃%s.%s.%s┃",                    heading_num[0].to!string,                    heading_num[1].to!string,                    heading_num[2].to!string @@ -4947,7 +4947,7 @@ template DocReformDocAbstraction() {                = ((conf_make_meta.make.auto_num_depth.to!uint >= 1)                  && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                  && auto_heading_numbering[1]) -              ? (format(q"┋%s.%s┋", +              ? (format(q"┃%s.%s┃",                    heading_num[0].to!string,                    heading_num[1].to!string                  )) @@ -4959,7 +4959,7 @@ template DocReformDocAbstraction() {                = ((conf_make_meta.make.auto_num_depth.to!uint >= 0)                  && (conf_make_meta.make.auto_num_depth.to!uint <= 3)                  && auto_heading_numbering[0]) -              ? (format(q"┋%s┋", +              ? (format(q"┃%s┃",                    heading_num[0].to!string                  ))                : ""; diff --git a/src/doc_reform/meta/rgx.d b/src/doc_reform/meta/rgx.d index 73900b6..3dcc214 100644 --- a/src/doc_reform/meta/rgx.d +++ b/src/doc_reform/meta/rgx.d @@ -281,7 +281,7 @@ static template DocReformRgxInit() {      static inline_image                                   = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");      static inline_image_without_dimensions                = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>0)h(?P<height>0))\s*(?P<post>.*?┝┤.*?├)`, "mg");      static inline_image_info                              = ctRegex!(`☼?(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+)`, "mg"); -    static inline_link_anchor                             = ctRegex!(`┋(?P<anchor>\S+?)┋`, "mg"); // TODO *~text_link_anchor +    static inline_link_anchor                             = ctRegex!(`┃(?P<anchor>\S+?)┃`, "mg"); // TODO *~text_link_anchor      static inline_link_                                   = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>.+?)├`, "mg");      static inline_link                                    = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>\S+?)├`, "mg");      static inline_link_empty                              = ctRegex!(`┥(?P<text>.+?)┝┤├`, "mg"); @@ -299,7 +299,7 @@ static template DocReformRgxInit() {      static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");      static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");      static quotation_mark_sql_insert_delimiter            = ctRegex!("[']", "mg"); -    static quotation_mark_various                         = ctRegex!(q"┋['‘’“”"`´¨]┋", "mg"); +    static quotation_mark_various                         = ctRegex!(q"┃['‘’“”"`´¨]┃", "mg");      /+ inline markup font face mod +/      static inline_mark_faces                            = ctRegex!(`(?P<markup>(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}[*!/_^,+#"-])`, "mg");      static inline_mark_faces_to_mod                     = ctRegex!(`(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}([*!/_^,+#"-])`, "mg"); diff --git a/src/doc_reform/output/epub3.d b/src/doc_reform/output/epub3.d index e02637c..a49bb5d 100644 --- a/src/doc_reform/output/epub3.d +++ b/src/doc_reform/output/epub3.d @@ -16,25 +16,25 @@ template outputEPub3() {    mixin outputXHTMLs;    string epub3_mimetypes() {      string o; -    o = format(q"┋application/epub+zip┋") ~ "\n"; +    o = format(q"┃application/epub+zip┃") ~ "\n";      return o;    }    string epub3_container_xml() {      string o; -    o = format(q"┋<?xml version='1.0' encoding='utf-8'?>┋") ~ "\n"; -    o ~= format(q"┋<container version="1.0" +    o = format(q"┃<?xml version='1.0' encoding='utf-8'?>┃") ~ "\n"; +    o ~= format(q"┃<container version="1.0"    xmlns="urn:oasis:names:tc:opendocument:xmlns:container">    <rootfiles>      <rootfile full-path="OEBPS/content.opf"        media-type="application/oebps-package+xml" /> -  </rootfiles>┋") ~ "\n</container>\n"; +  </rootfiles>┃") ~ "\n</container>\n";      return o;    }    string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {      auto xhtml_format = outputXHTMLs();      auto pth_epub3 = DocReformPathsEPUB!()(doc_matters.output_path, doc_matters.src.language);      string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! -    string content = format(q"┋  <?xml version='1.0' encoding='utf-8'?> +    string content = format(q"┃  <?xml version='1.0' encoding='utf-8'?>    <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">      <metadata        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" @@ -61,7 +61,7 @@ template outputEPub3() {          <link rel="stylesheet" href="%s" type="text/css" id="main-css" />        <!-- nav epub3 navigation -->          <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" /> -  ┋", +  ┃",        _uuid,        xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_full),        xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main), @@ -86,8 +86,8 @@ template outputEPub3() {      // TODO sort jpg & png      content ~= "    " ~ "<!-- Images -->" ~ "\n  ";      foreach (image; doc_matters.srcs.image_list) { -      content ~= format(q"┋      <item id="%s" href="%s/%s" media-type="image/%s" /> -  ┋", +      content ~= format(q"┃      <item id="%s" href="%s/%s" media-type="image/%s" /> +  ┃",          image.baseName.stripExtension,          (pth_epub3.doc_oebps_image(doc_matters.src.filename)).chompPrefix("OEBPS/"),          image, @@ -213,7 +213,7 @@ template outputEPub3() {      auto markup = InlineMarkup();      auto rgx = Rgx();      enum DomTags { none, open, close, close_and_open, open_still, } -    string toc = format(q"┋<?xml version='1.0' encoding='utf-8'?> +    string toc = format(q"┃<?xml version='1.0' encoding='utf-8'?>    <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">    <head>      <!-- four required metadata items (for all NCX documents, @@ -232,7 +232,7 @@ template outputEPub3() {    <docAuthor>      <text>%s</text>    </docAuthor> -  <navMap>┋", +  <navMap>┃",        doc_matters.conf_make_meta.meta.title_full,                          // title        (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""          : " by " ~ doc_matters.conf_make_meta.meta.creator_author,         // author @@ -255,12 +255,12 @@ template outputEPub3() {              case DomTags.close_and_open :                ++counter;                toc ~= "\n    </navPoint>"; -              toc ~= format(q"┋ +              toc ~= format(q"┃      <navPoint class="chapter" id="navpoint" playOrder="%s">        <navLabel>          <text>%s</text>        </navLabel> -      <content src="%s.xhtml%s" />┋", +      <content src="%s.xhtml%s" />┃",                  counter,                  _txt,                  obj.tags.segment_anchor_tag_epub, @@ -269,12 +269,12 @@ template outputEPub3() {                break;              case DomTags.open :                ++counter; -              toc ~= format(q"┋ +              toc ~= format(q"┃      <navPoint class="chapter" id="navpoint" playOrder="%s">        <navLabel>          <text>%s</text>        </navLabel> -      <content src="%s.xhtml%s" />┋", +      <content src="%s.xhtml%s" />┃",                  counter,                  _txt,                  obj.tags.segment_anchor_tag_epub, @@ -288,12 +288,12 @@ template outputEPub3() {          }        }      } -    toc ~= format(q"┋ +    toc ~= format(q"┃        </navPoint>        </navPoint>        </navPoint>      </navMap> -  </ncx>┋"); +  </ncx>┃");      return toc;    } @@ -556,40 +556,40 @@ template outputEPub3() {            assert(obj.text.length > 0);            if (obj.metainfo.heading_lev_markup <= 4) {              oepbs_content_parts["manifest_documents"] ~= -              format(q"┋      <item id="%s.xhtml" href="%s.xhtml" media-type="application/xhtml+xml" /> -  ┋", +              format(q"┃      <item id="%s.xhtml" href="%s.xhtml" media-type="application/xhtml+xml" /> +  ┃",                obj.tags.segment_anchor_tag_epub,                obj.tags.segment_anchor_tag_epub,              );              oepbs_content_parts["spine"] ~= -              format(q"┋    <itemref idref="%s.xhtml" linear="yes" /> -  ┋", +              format(q"┃    <itemref idref="%s.xhtml" linear="yes" /> +  ┃",                obj.tags.segment_anchor_tag_epub,              );              oepbs_content_parts["guide"] ~= -              format(q"┋      <reference type="%s" href="%s" /> -  ┋", +              format(q"┃      <reference type="%s" href="%s" /> +  ┃",                obj.tags.segment_anchor_tag_epub,                obj.tags.segment_anchor_tag_epub,              );            } else if (obj.metainfo.heading_lev_markup > 4) {              oepbs_content_parts["manifest_documents"] ~= -              format(q"┋      <item id="%s.xhtml#%s" href="%s.xhtml#%s" media-type="application/xhtml+xml" /> -  ┋", +              format(q"┃      <item id="%s.xhtml#%s" href="%s.xhtml#%s" media-type="application/xhtml+xml" /> +  ┃",                obj.tags.segment_anchor_tag_epub,                obj.metainfo.object_number,                obj.tags.segment_anchor_tag_epub,                obj.metainfo.object_number,              );              oepbs_content_parts["spine"] ~= -              format(q"┋    <itemref idref="%s.xhtml#%s" linear="yes" /> -  ┋", +              format(q"┃    <itemref idref="%s.xhtml#%s" linear="yes" /> +  ┃",                obj.tags.segment_anchor_tag_epub,                obj.metainfo.object_number,              );              oepbs_content_parts["guide"] ~= -              format(q"┋      <reference type="%s#%s" href="%s#%s" /> -  ┋", +              format(q"┃      <reference type="%s#%s" href="%s#%s" /> +  ┃",                obj.tags.segment_anchor_tag_epub,                obj.metainfo.object_number,                obj.tags.segment_anchor_tag_epub, diff --git a/src/doc_reform/output/paths_output.d b/src/doc_reform/output/paths_output.d index 7980594..f33db27 100644 --- a/src/doc_reform/output/paths_output.d +++ b/src/doc_reform/output/paths_output.d @@ -92,7 +92,7 @@ template DocReformPathsUrl() {          return _doc_root;        }        string html_seg(string html_segname, string obj_id) { // TODO bespoke for sqlite -        string _url = format(q"┋%s/%s/html/%s/%s.html#%s┋", +        string _url = format(q"┃%s/%s/html/%s/%s.html#%s┃",            doc_root,            doc_matters.src.language,            doc_matters.src.filename_base, diff --git a/src/doc_reform/output/rgx.d b/src/doc_reform/output/rgx.d index 8cb4581..2ddc57f 100644 --- a/src/doc_reform/output/rgx.d +++ b/src/doc_reform/output/rgx.d @@ -70,7 +70,7 @@ static template DocReformOutputRgxInit() {      static inline_image                                   = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");      static inline_image_without_dimensions                = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>0)h(?P<height>0))\s*(?P<post>.*?┝┤.*?├)`, "mg");      static inline_image_info                              = ctRegex!(`☼?(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+)`, "mg"); -    static inline_link_anchor                             = ctRegex!(`┋(?P<anchor>\S+?)┋`, "mg"); // TODO *~text_link_anchor +    static inline_link_anchor                             = ctRegex!(`┃(?P<anchor>\S+?)┃`, "mg"); // TODO *~text_link_anchor      static inline_link_                                   = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>.+?)├`, "mg");      static inline_link                                    = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>\S+?)├`, "mg");      static inline_link_empty                              = ctRegex!(`┥(?P<text>.+?)┝┤├`, "mg"); @@ -88,7 +88,7 @@ static template DocReformOutputRgxInit() {      static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");      static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");      static quotation_mark_sql_insert_delimiter            = ctRegex!("[']", "mg"); -    static quotation_mark_various                         = ctRegex!(q"┋['‘’“”"`´¨]┋", "mg"); +    static quotation_mark_various                         = ctRegex!(q"┃['‘’“”"`´¨]┃", "mg");      /+ inline markup font face mod +/      static inline_mark_faces                            = ctRegex!(`(?P<markup>(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}[*!/_^,+#"-])`, "mg");      static inline_mark_faces_to_mod                     = ctRegex!(`(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}([*!/_^,+#"-])`, "mg"); diff --git a/src/doc_reform/output/sqlite.d b/src/doc_reform/output/sqlite.d index 113af10..0be198b 100644 --- a/src/doc_reform/output/sqlite.d +++ b/src/doc_reform/output/sqlite.d @@ -463,9 +463,9 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_a          == "heading");          string _txt = munge_html(doc_matters, obj);          _txt = inline_markup(doc_matters, obj, _txt); -        string o = format(q"┋<p class="%s"><b> +        string o = format(q"┃<p class="%s"><b>              %s -          </b></p>┋", +          </b></p>┃",              obj.metainfo.is_a,              _txt,            ); @@ -482,9 +482,9 @@ template SQLiteFormatAndLoadObject() {          string _txt = munge_html(doc_matters, obj);          _txt = (obj.attrib.bullet) ? ("●  " ~ _txt) : _txt;          _txt = inline_markup(doc_matters, obj, _txt); -        string o = format(q"┋<p class="%s" indent="h%si%s"> +        string o = format(q"┃<p class="%s" indent="h%si%s">            %s -        </p>┋", +        </p>┃",              obj.metainfo.is_a,              obj.attrib.indent_hang,              obj.attrib.indent_base, @@ -501,9 +501,9 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_of_type    == "block");          assert(obj.metainfo.is_a          == "quote");          string _txt = munge_html(doc_matters, obj); -        string o = format(q"┋<p class="%s"> +        string o = format(q"┃<p class="%s">            %s -        </p>┋", +        </p>┃",              obj.metainfo.is_a,              _txt            ); @@ -518,9 +518,9 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_of_type    == "block");          assert(obj.metainfo.is_a          == "group");          string _txt = munge_html(doc_matters, obj); -        string o = format(q"┋<p class="%s"> +        string o = format(q"┃<p class="%s">            %s -        </p>┋", +        </p>┃",              obj.metainfo.is_a,              _txt            ); @@ -535,8 +535,8 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_of_type    == "block");          assert(obj.metainfo.is_a          == "block");          string _txt = munge_html(doc_matters, obj); -        string o = format(q"┋ -        <p class="%s">%s</p>┋", +        string o = format(q"┃ +        <p class="%s">%s</p>┃",              obj.metainfo.is_a,              _txt.stripRight            ); @@ -551,7 +551,7 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_of_type    == "block");          assert(obj.metainfo.is_a          == "verse");          string _txt = munge_html(doc_matters, obj); -        string o = format(q"┋<p class="%s">%s</p>┋", +        string o = format(q"┃<p class="%s">%s</p>┃",              obj.metainfo.is_a,              _txt            ); @@ -565,7 +565,7 @@ template SQLiteFormatAndLoadObject() {          assert(obj.metainfo.is_of_type    == "block");          assert(obj.metainfo.is_a          == "code");          string _txt = html_special_characters_code(obj.text); -        string o = format(q"┋<p class="%s">%s</p>┋", +        string o = format(q"┃<p class="%s">%s</p>┃",              obj.metainfo.is_a,              _txt            ); @@ -624,12 +624,12 @@ template SQLiteFormatAndLoadObject() {          auto t = _tablarize(obj, _txt);          _txt = t[0];          string _note = t[1]; -        string o = format(q"┋<p class="%s"> +        string o = format(q"┃<p class="%s">            <table summary="normal text css" width="95%%" border="0" bgcolor="white" cellpadding="2" align="center">              %s            </table>            %s -        </p>┋", +        </p>┃",            obj.metainfo.is_a,            _txt,            _note @@ -855,7 +855,7 @@ template SQLiteFormatAndLoadObject() {  template SQLiteTablesReCreate() {    string SQLiteTablesReCreate()() {      string _sql_instruct; -    _sql_instruct = format(q"┋ +    _sql_instruct = format(q"┃        DROP INDEX IF EXISTS idx_ocn;        DROP INDEX IF EXISTS idx_uid;        DROP INDEX IF EXISTS idx_digest_clean; @@ -984,7 +984,7 @@ template SQLiteTablesReCreate() {        CREATE INDEX idx_filename ON metadata_and_text(src_filename);        CREATE INDEX idx_language ON metadata_and_text(language_document_char);        CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register); -    ┋",); +    ┃",);      return _sql_instruct;    }  } @@ -993,12 +993,12 @@ template SQLiteDeleteDocument() {      M doc_matters,    ) {      string _uid = doc_matters.src.doc_uid; -    string _delete_uid = format(q"┋ +    string _delete_uid = format(q"┃      DELETE FROM metadata_and_text      WHERE uid = '%s';      DELETE FROM doc_objects      WHERE uid_metadata_and_text = '%s'; -    ┋", +    ┃",        _uid,        _uid,      ); @@ -1010,7 +1010,7 @@ template SQLiteInsertMetadata() {      M doc_matters,    ) {      string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); -    string _insert_metadata = format(q"┋ +    string _insert_metadata = format(q"┃        INSERT INTO metadata_and_text (          uid,          src_filename, @@ -1111,7 +1111,7 @@ template SQLiteInsertMetadata() {          '%s',          '%s'        ); -    ┋", +    ┃",        _uid,        SQLinsertDelimiter!()(doc_matters.src.filename),        SQLinsertDelimiter!()(doc_matters.src.docname_composite_unique_per_src_doc), @@ -1172,7 +1172,7 @@ template SQLiteInsertDocObjectsLoop() {      string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);      auto site_url = DocReformPathsUrl!()(doc_matters);      string insertDocObjectsRow(O)(O obj) { -      string _insert_doc_objects_row = format(q"┋ +      string _insert_doc_objects_row = format(q"┃          INSERT INTO doc_objects (            uid_metadata_and_text,            ocn, @@ -1195,7 +1195,7 @@ template SQLiteInsertDocObjectsLoop() {            '%s',            '%s'          ); -      ┋", +      ┃",          _uid,          obj.metainfo.ocn,          obj.metainfo.identifier, @@ -1391,7 +1391,7 @@ template SQLiteTablesCreate() {      template SQLiteTablesReCreate() {        string SQLiteTablesReCreate()() {          string _sql_instruct; -        _sql_instruct = format(q"┋ +        _sql_instruct = format(q"┃            DROP INDEX IF EXISTS idx_ocn;            DROP INDEX IF EXISTS idx_uid;            DROP INDEX IF EXISTS idx_digest_clean; @@ -1520,7 +1520,7 @@ template SQLiteTablesCreate() {            CREATE INDEX idx_filename ON metadata_and_text(src_filename);            CREATE INDEX idx_language ON metadata_and_text(language_document_char);            CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register); -        ┋",); +        ┃",);          return _sql_instruct;        }      } diff --git a/src/doc_reform/output/xmls.d b/src/doc_reform/output/xmls.d index eb8debd..30e876d 100644 --- a/src/doc_reform/output/xmls.d +++ b/src/doc_reform/output/xmls.d @@ -95,7 +95,7 @@ template outputXHTMLs() {      ) {        string _publisher="Publisher"; // TODO        string o; -      o = format(q"┋<!-- DocReform header metadata --> +      o = format(q"┃<!-- DocReform header metadata -->      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />      <meta name="dc.title" content="%s" />      <meta name="dc.author" content="%s" /> @@ -110,7 +110,7 @@ template outputXHTMLs() {      <meta name="dc.rights" content="%s" />      <meta name="generator" content="%s" />      <link rel="generator" href="%s" /> -    <!-- DocReform header metadata -->┋", +    <!-- DocReform header metadata -->┃",          doc_matters.conf_make_meta.meta.title_full,          doc_matters.conf_make_meta.meta.creator_author,          _publisher, @@ -144,9 +144,9 @@ template outputXHTMLs() {           _locations = "<p class=\"tiny_left\"><a href=\"http://www.doc-reform.org\">doc-reform</a></p>\n<p class=\"tiny_left\"><a href=\"http://git.sisudoc.org/software/doc-reform/\">sources / git</a></p>\n<p class=\"tiny_left\"><a href=\"http://www.sisudoc.org\">www.sisudoc.org</a></p>";        }        string o; -      o = format(q"┋<div class="flex-menu-option"> +      o = format(q"┃<div class="flex-menu-option">            %s -        </div>┋", +        </div>┃",          _locations,        );        return o; @@ -159,7 +159,7 @@ template outputXHTMLs() {        string o;        string _form;        if (doc_matters.opt.action.workon) { -        _form = format(q"┋ +        _form = format(q"┃      <a name="search"></a>      <form method="get" action="%s" target="_top">      <font size="2"> @@ -171,17 +171,17 @@ template outputXHTMLs() {      <input type="submit" name="search" value="search doc" />      <input type="submit" name="search" value="search db" />      </font></form> -          ┋", +          ┃",          _action,          _db,          );        } else { -        _form = format(q"┋%s┋", +        _form = format(q"┃%s┃",            "",          );        } -      o = format(q"┋<div class="flex-menu-option">%s -        </div>┋", +      o = format(q"┃<div class="flex-menu-option">%s +        </div>┃",          _form,        );        return o; @@ -192,17 +192,17 @@ template outputXHTMLs() {      ) {      string _manifest = "";      if (doc_matters.opt.action.workon) { -      _manifest = format(q"┋ +      _manifest = format(q"┃           <a href="../../manifest/sisu.en.html" target="_top">             <font face="verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman" size="2">               [ document manifest ]             </font>           </a> -         ┋", +         ┃",        );      }        string o; -      o = format(q"┋<!DOCTYPE html> +      o = format(q"┃<!DOCTYPE html>      <html>      <head>        <meta charset="utf-8" /> @@ -224,7 +224,7 @@ template outputXHTMLs() {          <div class="flex-menu-option">            %s          </div> -        %s%s┋", +        %s%s┃",          doc_matters.conf_make_meta.meta.title_full,          (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""            : ", " ~ doc_matters.conf_make_meta.meta.creator_author, @@ -244,27 +244,27 @@ template outputXHTMLs() {      auto epub3_seg_head(M)(        M  doc_matters,      ) { -      string html_base = format(q"┋<!DOCTYPE html> -    <html>┋", +      string html_base = format(q"┃<!DOCTYPE html> +    <html>┃",      ); -      string html_simple = format(q"┋<!DOCTYPE html> +      string html_simple = format(q"┃<!DOCTYPE html>      <html        xmlns="http://www.w3.org/1999/xhtml"        xmlns:epub="http://www.idpf.org/2007/ops" -      lang="%s" xml:lang="%s">┋", +      lang="%s" xml:lang="%s">┃",          doc_matters.src.language,          doc_matters.src.language,        ); -      string html_strict = format(q"┋<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +      string html_strict = format(q"┃<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">      <html xmlns="http://www.w3.org/1999/xhtml"        xmlns:epub="http://www.idpf.org/2007/ops" -      lang="%s" xml:lang="%s">┋", +      lang="%s" xml:lang="%s">┃",          doc_matters.src.language,          doc_matters.src.language,        );        string o; -      o = format(q"┋%s +      o = format(q"┃%s      <head>        <title>          %s%s @@ -287,7 +287,7 @@ template outputXHTMLs() {        <link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />      </head>      <body lang="%s"> -    <a name="top" id="top"></a>┋", +    <a name="top" id="top"></a>┃",          html_simple,          doc_matters.conf_make_meta.meta.title_full,          (doc_matters.conf_make_meta.meta.creator_author.empty) ? "" @@ -311,11 +311,11 @@ template outputXHTMLs() {      }      auto tail() {        string o; -      o = format(q"┋ +      o = format(q"┃        <a name="bottom" id="bottom"></a>        <a name="end" id="end"></a>      </body> -    </html>┋"); +    </html>┃");        return o;      }      auto inline_images(O,M)( @@ -532,10 +532,10 @@ template outputXHTMLs() {            text = font_face(text);            auto link = m.captures[3].to!string;            lev4_subtoc ~= subtoc.replaceFirst(rgx.inline_link_subtoc, -            format(q"┋    <p class="minitoc" indent="h%si%s"> +            format(q"┃    <p class="minitoc" indent="h%si%s">            ۰ <a href="%s">%s</a>          </p> -    ┋", +    ┃",                indent,                indent,                link, @@ -555,42 +555,42 @@ template outputXHTMLs() {          toc = "";          prev = "";        } else { -        toc = format(q"┋<a href="toc.html" target="_top"> +        toc = format(q"┃<a href="toc.html" target="_top">                <div class="toc-button menu">                  <svg viewbox="0 0 100 100">                    <path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2  s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2  S29.104,22,28,22z"/>                  </svg>                </div> -            </a>┋", +            </a>┃",          );        }        if (obj.tags.segname_prev == "") {          prev = "";        } else { -        prev = format(q"┋<a href="%s.html" target="_top"> +        prev = format(q"┃<a href="%s.html" target="_top">                <div class="prev-next-button previous">                  <svg viewbox="0 0 100 100">                    <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z" transform=" translate(15,0)">                  </svg>                </div> -            </a>┋", +            </a>┃",            obj.tags.segname_prev,          );        }        if (obj.tags.segname_next == "") {          next = "";        } else { -        next = format(q"┋<a href="%s.html" target="_top"> +        next = format(q"┃<a href="%s.html" target="_top">                <div class="prev-next-button next">                  <svg viewbox="0 0 100 100">                    <path class="arrow" d="M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z "transform="translate(85,100) rotate(180) ">                  </svg>                </div> -            </a>┋", +            </a>┃",            obj.tags.segname_next,          );        } -      string _toc_pre_next = format(q"┋        <div class="flex-menu-option"> +      string _toc_pre_next = format(q"┃        <div class="flex-menu-option">            <div class="nav-bar">              %s              %s @@ -598,19 +598,19 @@ template outputXHTMLs() {            </div>          </div>        </div> -    </div>┋", +    </div>┃",          toc,          prev,          next,        ); -      string _pre_next = format(q"┋        <div class="flex-menu-option"> +      string _pre_next = format(q"┃        <div class="flex-menu-option">            <div class="nav-bar">              %s              %s            </div>          </div>        </div> -    </div>┋", +    </div>┃",          prev,          next,        ); @@ -646,13 +646,13 @@ template outputXHTMLs() {          ? ""          : "<a name=\"" ~ obj.tags.heading_lev_anchor_tag ~ "\"></a>";        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋%s +        o = format(q"┃%s        <div class="substance">          <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>          <h%s class="%s" id="%s"><a name="%s"></a>%s%s            %s          </h%s> -      </div>┋", +      </div>┃",          _horizontal_rule,          obj.metainfo.identifier,          (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier, @@ -666,12 +666,12 @@ template outputXHTMLs() {          obj.metainfo.heading_lev_markup,          );        } else { -        o = format(q"┋%s +        o = format(q"┃%s        <div class="substance">          <h%s class="%s">%s%s            %s          </h%s> -      </div>┋", +      </div>┃",            _horizontal_rule,            obj.metainfo.heading_lev_markup,            obj.metainfo.is_a, @@ -726,12 +726,12 @@ template outputXHTMLs() {        _txt = _txt.replaceFirst(rgx.inline_link_anchor,           "<a name=\"$1\"></a>");        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" indent="h%si%s" id="%s">%s          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -742,11 +742,11 @@ template outputXHTMLs() {            _txt          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <p class="%s" indent="h%si%s">%s          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.is_a,            obj.attrib.indent_hang,            obj.attrib.indent_base, @@ -795,12 +795,12 @@ template outputXHTMLs() {        _txt = font_face(_txt);        string o;        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" id="%s">          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -808,11 +808,11 @@ template outputXHTMLs() {            _txt          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <p class="%s">          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.is_a,            _txt          ); @@ -858,12 +858,12 @@ template outputXHTMLs() {        _txt = font_face(_txt);        string o;        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" id="%s">          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -871,11 +871,11 @@ template outputXHTMLs() {            _txt          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <p class="%s">          %s        </p> -    </div>┋", +    </div>┃",            obj.metainfo.is_a,            _txt          ); @@ -922,10 +922,10 @@ template outputXHTMLs() {        _txt = font_face(_txt);        string o;        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" id="%s">%s</p> -    </div>┋", +    </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -933,9 +933,9 @@ template outputXHTMLs() {            _txt.stripRight          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <p class="%s">%s</p> -    </div>┋", +    </div>┃",            obj.metainfo.is_a,            _txt.stripRight          ); @@ -982,10 +982,10 @@ template outputXHTMLs() {        _txt = font_face(_txt);        string o;        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">            <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>            <p class="%s" id="%s">%s</p> -        </div>┋", +        </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -993,9 +993,9 @@ template outputXHTMLs() {            _txt          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">            <p class="%s">%s</p> -        </div>┋", +        </div>┃",            obj.metainfo.is_a,            _txt          ); @@ -1078,7 +1078,7 @@ template outputXHTMLs() {        _txt = t[0];        string _note = t[1];        string o; -      o = format(q"┋  <div class="substance"> +      o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <p class="%s" id="%s">%s          <table summary="normal text css" width="95%%" border="0" bgcolor="white" cellpadding="2" align="center"> @@ -1086,7 +1086,7 @@ template outputXHTMLs() {          </table>          %s        </p> -    </div>┋", +    </div>┃",          obj.metainfo.object_number,          obj.metainfo.object_number,          obj.metainfo.is_a, @@ -1107,10 +1107,10 @@ template outputXHTMLs() {        assert(obj.metainfo.is_a          == "code");        string o;        if (!(obj.metainfo.identifier.empty)) { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>        <pre><p class="%s" id="%s">%s</p></pre> -    </div>┋", +    </div>┃",            obj.metainfo.identifier,            (obj.metainfo.object_number.empty) ? "" : obj.metainfo.identifier,            obj.metainfo.is_a, @@ -1118,9 +1118,9 @@ template outputXHTMLs() {            _txt          );        } else { -        o = format(q"┋  <div class="substance"> +        o = format(q"┃  <div class="substance">        <pre><p class="%s">%s</p></pre> -    </div>┋", +    </div>┃",            obj.metainfo.is_a,            _txt          ); | 
