From 5f6caf585c7ccaac0a4310987c85fdcfd3bcff3d Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 29 Jan 2019 17:00:31 -0500 Subject: =?UTF-8?q?format=20delimiter=20s/=C2=B6/=E2=94=8B/g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- org/default_paths.org | 2 +- org/default_regex.org | 2 +- org/meta_abstraction.org | 2 +- org/output_sqlite.org | 52 ++++----- org/output_xmls.org | 186 ++++++++++++++++----------------- src/doc_reform/meta/metadoc_from_src.d | 10 +- src/doc_reform/meta/rgx.d | 3 +- src/doc_reform/output/epub3.d | 56 +++++----- src/doc_reform/output/paths_output.d | 2 +- src/doc_reform/output/rgx.d | 3 +- src/doc_reform/output/sqlite.d | 48 ++++----- src/doc_reform/output/xmls.d | 130 +++++++++++------------ 12 files changed, 247 insertions(+), 249 deletions(-) diff --git a/org/default_paths.org b/org/default_paths.org index 6d38825..68c7da8 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -1030,7 +1030,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 5705fb2..e02c3a3 100644 --- a/org/default_regex.org +++ b/org/default_regex.org @@ -517,7 +517,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 10eeddd..10153c8 100644 --- a/org/meta_abstraction.org +++ b/org/meta_abstraction.org @@ -2316,7 +2316,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) ); } } diff --git a/org/output_sqlite.org b/org/output_sqlite.org index 06e7f01..13b8702 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -158,13 +158,13 @@ template SQLiteFormatAndLoadObject() { template SQLiteTablesReCreate() { string SQLiteTablesReCreate()() { string _sql_instruct; - _sql_instruct = format(q"¶ + _sql_instruct = format(q"┋ <> <> <> <> <> - ¶",); + ┋",); return _sql_instruct; } } @@ -224,13 +224,13 @@ template SQLiteTablesCreate() { template SQLiteTablesReCreate() { string SQLiteTablesReCreate()() { string _sql_instruct; - _sql_instruct = format(q"¶ + _sql_instruct = format(q"┋ <> <> <> <> <> - ¶",); + ┋",); return _sql_instruct; } } @@ -735,9 +735,9 @@ auto html_heading(M,O)( ) { string _txt = munge_html(doc_matters, obj); _txt = inline_markup(doc_matters, obj, _txt); - string o = format(q"¶

+ string o = format(q"┋

%s -

¶", +

┋", obj.metainfo.is_a, _txt, ); @@ -755,9 +755,9 @@ auto html_heading(M,O)( ) { string o; string _txt = munge_html(doc_matters, obj); - o = format(q"¶ + o = format(q"┋ %s - ¶", + ┋", obj.metainfo.heading_lev_markup, obj.metainfo.is_a, _txt, @@ -778,9 +778,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"¶

+ string o = format(q"┋

%s -

¶", +

┋", obj.metainfo.is_a, obj.attrib.indent_hang, obj.attrib.indent_base, @@ -799,9 +799,9 @@ auto html_quote(M,O)( auto ref const O obj, ) { string _txt = munge_html(doc_matters, obj); - string o = format(q"¶

+ string o = format(q"┋

%s -

¶", +

┋", obj.metainfo.is_a, _txt ); @@ -818,9 +818,9 @@ auto html_group(M,O)( auto ref const O obj, ) { string _txt = munge_html(doc_matters, obj); - string o = format(q"¶

+ string o = format(q"┋

%s -

¶", +

┋", obj.metainfo.is_a, _txt ); @@ -837,8 +837,8 @@ auto html_block(M,O)( auto ref const O obj, ) { string _txt = munge_html(doc_matters, obj); - string o = format(q"¶ -

%s

¶", + string o = format(q"┋ +

%s

┋", obj.metainfo.is_a, _txt.stripRight ); @@ -855,7 +855,7 @@ auto html_verse(M,O)( auto ref const O obj, ) { string _txt = munge_html(doc_matters, obj); - string o = format(q"¶

%s

¶", + string o = format(q"┋

%s

┋", obj.metainfo.is_a, _txt ); @@ -871,7 +871,7 @@ auto html_code(O)( auto ref const O obj, ) { string _txt = html_special_characters_code(obj.text); - string o = format(q"¶

%s

¶", + string o = format(q"┋

%s

┋", obj.metainfo.is_a, _txt ); @@ -932,12 +932,12 @@ auto html_table(M,O)( auto t = _tablarize(obj, _txt); _txt = t[0]; string _note = t[1]; - string o = format(q"¶

+ string o = format(q"┋

%s
%s -

¶", +

┋", obj.metainfo.is_a, _txt, _note @@ -1571,7 +1571,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 @@ -1588,7 +1588,7 @@ WHERE uid_metadata_and_text = '%s'; #+name: sqlite_formatted_delete #+BEGIN_SRC d -¶", +┋", _uid, _uid, ); @@ -1608,7 +1608,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 @@ -1649,7 +1649,7 @@ string _insert_doc_objects_row = format(q"¶ #+name: sqlite_formatted_insertions_doc_objects #+BEGIN_SRC d -¶", +┋", _uid, obj.metainfo.ocn, obj.metainfo.identifier, @@ -1668,7 +1668,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 @@ -1787,7 +1787,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 979534c..27069fd 100644 --- a/org/output_xmls.org +++ b/org/output_xmls.org @@ -167,7 +167,7 @@ auto header_metadata(M)( ) { string _publisher="Publisher"; // TODO string o; - o = format(q"¶ + o = format(q"┋ @@ -182,7 +182,7 @@ auto header_metadata(M)( -¶", +┋", doc_matters.conf_make_meta.meta.title_full, doc_matters.conf_make_meta.meta.creator_author, _publisher, @@ -222,9 +222,9 @@ auto site_info_button(M)( _locations = "

doc-reform

\n

sources / git

\n

www.sisudoc.org

"; } string o; - o = format(q"¶
+ o = format(q"┋
%s -
¶", +
┋", _locations, ); return o; @@ -243,7 +243,7 @@ auto inline_search_form(M)( string o; string _form; if (doc_matters.opt.action.workon) { - _form = format(q"¶ + _form = format(q"┋
@@ -255,17 +255,17 @@ auto inline_search_form(M)(
- ¶", + ┋", _action, _db, ); } else { - _form = format(q"¶%s¶", + _form = format(q"┋%s┋", "", ); } - o = format(q"¶
%s -
¶", + o = format(q"┋
%s +
┋", _form, ); return o; @@ -282,17 +282,17 @@ auto html_head(M)( ) { string _manifest = ""; if (doc_matters.opt.action.workon) { - _manifest = format(q"¶ + _manifest = format(q"┋ [ document manifest ] - ¶", + ┋", ); } string o; - o = format(q"¶ + o = format(q"┋ @@ -314,7 +314,7 @@ if (doc_matters.opt.action.workon) {
%s
- %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, @@ -340,27 +340,27 @@ if (doc_matters.opt.action.workon) { auto epub3_seg_head(M)( M doc_matters, ) { - string html_base = format(q"¶ -¶", + string html_base = format(q"┋ +┋", ); - string html_simple = format(q"¶ + string html_simple = format(q"┋ ¶", + lang="%s" xml:lang="%s">┋", doc_matters.src.language, doc_matters.src.language, ); - string html_strict = format(q"¶ ¶", + lang="%s" xml:lang="%s">┋", doc_matters.src.language, doc_matters.src.language, ); string o; - o = format(q"¶%s + o = format(q"┋%s %s%s @@ -383,7 +383,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) ? "" @@ -413,11 +413,11 @@ auto epub3_seg_head(M)( #+BEGIN_SRC d auto tail() { string o; - o = format(q"¶ </div> + o = format(q"┋ </div> <a name="bottom" id="bottom"></a> <a name="end" id="end"></a> </body> -</html>¶"); +</html>┋"); return o; } #+END_SRC @@ -678,10 +678,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, @@ -707,42 +707,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 @@ -750,19 +750,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, ); @@ -805,13 +805,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, @@ -825,12 +825,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, @@ -904,12 +904,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, @@ -920,11 +920,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, @@ -992,12 +992,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, @@ -1005,11 +1005,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 ); @@ -1074,12 +1074,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, @@ -1087,11 +1087,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 ); @@ -1157,10 +1157,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, @@ -1168,9 +1168,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 ); @@ -1236,10 +1236,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, @@ -1247,9 +1247,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 ); @@ -1313,10 +1313,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, @@ -1324,9 +1324,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 ); @@ -1401,7 +1401,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"> @@ -1409,7 +1409,7 @@ auto table(O)( </table> %s </p> -</div>¶", +</div>┋", obj.metainfo.object_number, obj.metainfo.object_number, obj.metainfo.is_a, @@ -2115,7 +2115,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 @@ -2128,13 +2128,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 @@ -2152,7 +2152,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" @@ -2179,7 +2179,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), @@ -2204,8 +2204,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, @@ -2348,7 +2348,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, @@ -2367,7 +2367,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 @@ -2390,12 +2390,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, @@ -2404,12 +2404,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, @@ -2423,8 +2423,8 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) { } } } - toc ~= format(q"¶ </navMap> -</ncx>¶"); + toc ~= format(q"┋ </navMap> +</ncx>┋"); return toc; } #+END_SRC @@ -2729,40 +2729,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 5df5e87..2dfd746 100644 --- a/src/doc_reform/meta/metadoc_from_src.d +++ b/src/doc_reform/meta/metadoc_from_src.d @@ -712,13 +712,9 @@ template DocReformDocAbstraction() { /+ within block object: block +/ line = line._doc_header_and_make_substitutions_(conf_make_meta); line = line._doc_header_and_make_substitutions_fontface_(conf_make_meta); - if (auto m = line.match(rgx.spaces_line_start)) { + if (auto m = line.match(rgx.spaces_keep)) { line = line - .replaceAll(rgx.spaces_line_start, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); - } - if (auto m = line.match(rgx.spaces_multiple)) { - line = line - .replaceAll(rgx.spaces_multiple, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); + .replaceAll(rgx.spaces_keep, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); } line._block_block_(an_object, obj_type_status); continue; @@ -1743,7 +1739,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) ); } } diff --git a/src/doc_reform/meta/rgx.d b/src/doc_reform/meta/rgx.d index dcfc245..df294e8 100644 --- a/src/doc_reform/meta/rgx.d +++ b/src/doc_reform/meta/rgx.d @@ -200,6 +200,7 @@ static template DocReformRgxInit() { static newline = ctRegex!("\n", "mg"); static strip_br = ctRegex!("^<br>\n|<br>\n*$"); static space = ctRegex!(`[ ]`, "mg"); + static spaces_keep = ctRegex!(`(?P<keep_spaces>^[ ]+|[ ]{2,})`, "mg"); // code, verse, block static spaces_line_start = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); static spaces_multiple = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); static two_spaces = ctRegex!(`[ ]{2}`, "mg"); @@ -269,7 +270,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_faces = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+#-])\{(?P<text>.+?)\}[*!_^,+#-])`, "mg"); static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`, "mg"); diff --git a/src/doc_reform/output/epub3.d b/src/doc_reform/output/epub3.d index f57229b..97d8427 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,8 +288,8 @@ template outputEPub3() { } } } - toc ~= format(q"¶ </navMap> - </ncx>¶"); + toc ~= format(q"┋ </navMap> + </ncx>┋"); return toc; } @@ -552,40 +552,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 f6e8f1b..c35fa55 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 bfd2a4e..0483f1b 100644 --- a/src/doc_reform/output/rgx.d +++ b/src/doc_reform/output/rgx.d @@ -8,6 +8,7 @@ static template DocReformOutputRgxInit() { static newline = ctRegex!("\n", "mg"); static strip_br = ctRegex!("^<br>\n|<br>\n*$"); static space = ctRegex!(`[ ]`, "mg"); + static spaces_keep = ctRegex!(`(?P<keep_spaces>^[ ]+|[ ]{2,})`, "mg"); // code, verse, block static spaces_line_start = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); static spaces_multiple = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); static two_spaces = ctRegex!(`[ ]{2}`, "mg"); @@ -77,7 +78,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_faces = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+#-])\{(?P<text>.+?)\}[*!_^,+#-])`, "mg"); static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`, "mg"); diff --git a/src/doc_reform/output/sqlite.d b/src/doc_reform/output/sqlite.d index acfbff3..5f4e99d 100644 --- a/src/doc_reform/output/sqlite.d +++ b/src/doc_reform/output/sqlite.d @@ -459,9 +459,9 @@ template SQLiteFormatAndLoadObject() { ) { 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, ); @@ -474,9 +474,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, @@ -489,9 +489,9 @@ template SQLiteFormatAndLoadObject() { auto ref const O obj, ) { 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 ); @@ -502,9 +502,9 @@ template SQLiteFormatAndLoadObject() { auto ref const O obj, ) { 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 ); @@ -515,8 +515,8 @@ template SQLiteFormatAndLoadObject() { auto ref const O obj, ) { 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 ); @@ -527,7 +527,7 @@ template SQLiteFormatAndLoadObject() { auto ref const O obj, ) { 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 ); @@ -537,7 +537,7 @@ template SQLiteFormatAndLoadObject() { auto ref const O obj, ) { 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 ); @@ -592,12 +592,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 @@ -823,7 +823,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; @@ -952,7 +952,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; } } @@ -961,12 +961,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, ); @@ -978,7 +978,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, @@ -1079,7 +1079,7 @@ template SQLiteInsertMetadata() { '%s', '%s' ); - ¶", + ┋", _uid, SQLinsertDelimiter!()(doc_matters.src.filename), SQLinsertDelimiter!()(doc_matters.src.docname_composite_unique_per_src_doc), @@ -1140,7 +1140,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, @@ -1163,7 +1163,7 @@ template SQLiteInsertDocObjectsLoop() { '%s', '%s' ); - ¶", + ┋", _uid, obj.metainfo.ocn, obj.metainfo.identifier, @@ -1359,7 +1359,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; @@ -1488,7 +1488,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 97262a1..266ad55 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"¶ </div> + o = format(q"┋ </div> <a name="bottom" id="bottom"></a> <a name="end" id="end"></a> </body> - </html>¶"); + </html>┋"); return o; } auto inline_images(O,M)( @@ -529,10 +529,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, @@ -552,42 +552,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 @@ -595,19 +595,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, ); @@ -643,13 +643,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, @@ -663,12 +663,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, @@ -723,12 +723,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, @@ -739,11 +739,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, @@ -792,12 +792,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, @@ -805,11 +805,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 ); @@ -855,12 +855,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, @@ -868,11 +868,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 ); @@ -919,10 +919,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, @@ -930,9 +930,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 ); @@ -979,10 +979,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, @@ -990,9 +990,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 ); @@ -1075,7 +1075,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"> @@ -1083,7 +1083,7 @@ template outputXHTMLs() { </table> %s </p> - </div>¶", + </div>┋", obj.metainfo.object_number, obj.metainfo.object_number, obj.metainfo.is_a, @@ -1104,10 +1104,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, @@ -1115,9 +1115,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 ); -- cgit v1.2.3