aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--org/default_paths.org2
-rw-r--r--org/default_regex.org2
-rw-r--r--org/meta_abstraction.org2
-rw-r--r--org/output_sqlite.org52
-rw-r--r--org/output_xmls.org186
-rw-r--r--src/doc_reform/meta/metadoc_from_src.d10
-rw-r--r--src/doc_reform/meta/rgx.d3
-rw-r--r--src/doc_reform/output/epub3.d56
-rw-r--r--src/doc_reform/output/paths_output.d2
-rw-r--r--src/doc_reform/output/rgx.d3
-rw-r--r--src/doc_reform/output/sqlite.d48
-rw-r--r--src/doc_reform/output/xmls.d130
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"┋
<<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;
}
}
@@ -224,13 +224,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;
}
}
@@ -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"¶<p class="%s"><b>
+ string o = format(q"┋<p class="%s"><b>
%s
- </b></p>¶",
+ </b></p>┋",
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"¶<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,
@@ -778,9 +778,9 @@ auto html_para(M,O)(
string _txt = munge_html(doc_matters, obj);
_txt = (obj.attrib.bullet) ? ("●&#160;&#160;" ~ _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,
@@ -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"¶<p class="%s">
+ string o = format(q"┋<p class="%s">
%s
- </p>¶",
+ </p>┋",
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"¶<p class="%s">
+ string o = format(q"┋<p class="%s">
%s
- </p>¶",
+ </p>┋",
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"¶
- <p class="%s">%s</p>¶",
+ string o = format(q"┋
+ <p class="%s">%s</p>┋",
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"¶<p class="%s">%s</p>¶",
+ string o = format(q"┋<p class="%s">%s</p>┋",
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"¶<p class="%s">%s</p>¶",
+ string o = format(q"┋<p class="%s">%s</p>┋",
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"¶<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
@@ -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"¶<!-- 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" />
@@ -182,7 +182,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,
@@ -222,9 +222,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;
@@ -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"┋
<a name="search"></a>
<form method="get" action="%s" target="_top">
<font size="2">
@@ -255,17 +255,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;
@@ -282,17 +282,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">
[&nbsp;document&nbsp;manifest&nbsp;]
</font>
</a>
- ¶",
+ ┋",
);
}
string o;
- o = format(q"¶<!DOCTYPE html>
+ o = format(q"┋<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
@@ -314,7 +314,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,
@@ -340,27 +340,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
@@ -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) ? ("●&#160;&#160;" ~ _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">
[&nbsp;document&nbsp;manifest&nbsp;]
</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
);