aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--org/doc_reform.org2
-rw-r--r--org/output_xmls.org302
-rw-r--r--src/doc_reform/output/epub3.d20
-rw-r--r--src/doc_reform/output/html.d12
-rw-r--r--src/doc_reform/output/xmls.d152
-rw-r--r--views/version.txt2
6 files changed, 284 insertions, 206 deletions
diff --git a/org/doc_reform.org b/org/doc_reform.org
index 6b2f87c..55bd41d 100644
--- a/org/doc_reform.org
+++ b/org/doc_reform.org
@@ -26,7 +26,7 @@ struct Version {
int minor;
int patch;
}
-enum ver = Version(0, 4, 1);
+enum _ver = Version(0, 4, 2);
#+END_SRC
** compilation restrictions (supported compilers)
diff --git a/org/output_xmls.org b/org/output_xmls.org
index 29b999b..b9302bd 100644
--- a/org/output_xmls.org
+++ b/org/output_xmls.org
@@ -91,20 +91,13 @@ string div_delimit(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-string special_characters(O)(
- const O obj,
- string _txt
-){
+string special_characters_text(string _txt){
_txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&")
.replaceAll(rgx.xhtml_quotation, """)
.replaceAll(rgx.xhtml_less_than, "<")
.replaceAll(rgx.xhtml_greater_than, ">")
.replaceAll(rgx.nbsp_char, " ");
- if (!(obj.metainfo.is_a == "code")) {
- _txt = (_txt)
- .replaceAll(rgx.xhtml_line_break, "<br />");
- }
return _txt;
}
#+END_SRC
@@ -113,13 +106,14 @@ string special_characters(O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-string special_characters_text(string _txt){
- _txt = _txt
- .replaceAll(rgx.xhtml_ampersand, "&#38;")
- .replaceAll(rgx.xhtml_quotation, "&#34;")
- .replaceAll(rgx.xhtml_less_than, "&#60;")
- .replaceAll(rgx.xhtml_greater_than, "&#62;")
- .replaceAll(rgx.nbsp_char, " ");
+string special_characters(O)(
+ const O obj,
+){
+ string _txt = special_characters_text(obj.text);
+ if (!(obj.metainfo.is_a == "code")) {
+ _txt = (_txt)
+ .replaceAll(rgx.xhtml_line_break, "<br />");
+ }
return _txt;
}
#+END_SRC
@@ -170,19 +164,7 @@ string _xhtml_anchor_tags(O)(O obj) {
auto header_metadata(M)(
M doc_matters,
) {
- string _title="Title";
- string _author="Author";
- string _publisher="Publisher";
- string _date="Date";
- string _date_created="Date";
- string _date_issued="Date";
- string _date_available="Date";
- string _date_valid="Date";
- string _date_modified="Date";
- string _language="en";
- string _rights="Copyright: Copyright (C) year holder";
- string _generator="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)";
- string _generator_home="http://www.sisudoc.org";
+ string _publisher="Publisher"; // TODO
string o;
o = format(q"¶<!-- DocReform header metadata -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
@@ -200,19 +182,19 @@ auto header_metadata(M)(
<meta name="generator" content="%s" />
<link rel="generator" href="%s" />
<!-- DocReform header metadata -->¶",
- _title,
- _author,
- _publisher,
- _date,
- _date_created,
- _date_issued,
- _date_available,
- _date_valid,
- _date_modified,
- _language,
- _rights,
- _generator,
- _generator_home,
+ doc_matters.conf_make_meta.meta.title_full,
+ doc_matters.conf_make_meta.meta.creator_author,
+ _publisher,
+ doc_matters.conf_make_meta.meta.date_published,
+ doc_matters.conf_make_meta.meta.date_created,
+ doc_matters.conf_make_meta.meta.date_issued,
+ doc_matters.conf_make_meta.meta.date_available,
+ doc_matters.conf_make_meta.meta.date_valid,
+ doc_matters.conf_make_meta.meta.date_modified,
+ doc_matters.src.language,
+ doc_matters.conf_make_meta.meta.rights_copyright,
+ doc_matters.generator_program.name_and_version,
+ doc_matters.generator_program.url_home,
);
return o;
}
@@ -242,7 +224,7 @@ auto site_info_button(M)(
o = format(q"¶<div class="flex-menu-option">
%s
</div>¶",
- _locations,
+ _locations,
);
return o;
}
@@ -385,18 +367,18 @@ auto epub3_seg_head(M)(
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="dc.title" content="%s" />
<meta name="dc.author" content="%s" />
- <meta name="dc.publisher" content="DocReform http://www.jus.uio.no/sisu (this copy)" />
- <meta name="dc.date" content="year" />
- <meta name="dc.date.created" content="year" />
- <meta name="dc.date.issued" content="year" />
- <meta name="dc.date.available" content="year" />
- <meta name="dc.date.valid" content="year" />
- <meta name="dc.date.modified" content="year" />
- <meta name="dc.language" content="US" />
- <meta name="dc.rights" content="Copyright: Copyright (C) year holder" />
- <meta name="generator" content="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
- <link rel="generator" href="http://www.sisudoc.org/" />
- <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
+ <meta name="dc.publisher" content="FIX" />
+ <meta name="dc.date" content="%s" />
+ <meta name="dc.date.created" content="%s" />
+ <meta name="dc.date.issued" content="%s" />
+ <meta name="dc.date.available" content="%s" />
+ <meta name="dc.date.valid" content="%s" />
+ <meta name="dc.date.modified" content="%s" />
+ <meta name="dc.language" content="%s" />
+ <meta name="dc.rights" content="%s" />
+ <meta name="generator" content="%s" />
+ <link rel="generator" href="%s" />
+ <link rel="shortcut icon" href="../_sisu/image/d.ico" />
<link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />
</head>
<body lang="%s">
@@ -408,6 +390,16 @@ auto epub3_seg_head(M)(
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,
+ doc_matters.conf_make_meta.meta.date_published,
+ doc_matters.conf_make_meta.meta.date_created,
+ doc_matters.conf_make_meta.meta.date_issued,
+ doc_matters.conf_make_meta.meta.date_available,
+ doc_matters.conf_make_meta.meta.date_valid,
+ doc_matters.conf_make_meta.meta.date_modified,
+ doc_matters.src.language,
+ doc_matters.conf_make_meta.meta.rights_copyright,
+ doc_matters.generator_program.name_and_version,
+ doc_matters.generator_program.url_home,
doc_matters.src.language,
);
return o;
@@ -786,8 +778,7 @@ auto nav_pre_next_svg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto heading(M,O)(
- M doc_matters,
+auto heading(O)(
const O obj,
string _txt,
string _xml_type = "html",
@@ -856,7 +847,7 @@ auto heading_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = heading(doc_matters, obj, _txt);
+ string o = heading(obj, _txt);
return o;
}
#+END_SRC
@@ -875,7 +866,7 @@ auto heading_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0];
string[] _endnotes = t[1];
- string o = heading(doc_matters, obj, _txt, _xml_type);
+ string o = heading(obj, _txt, _xml_type);
auto u = tuple(
o,
_endnotes,
@@ -889,8 +880,7 @@ auto heading_seg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto para(M,O)(
- M doc_matters,
+auto para(O)(
const O obj,
string _txt,
) {
@@ -945,7 +935,7 @@ auto para_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = para(doc_matters, obj, _txt);
+ string o = para(obj, _txt);
return o;
}
#+END_SRC
@@ -964,7 +954,7 @@ auto para_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = para(doc_matters, obj, _txt);
+ string o = para(obj, _txt);
auto u = tuple(
o,
_endnotes,
@@ -978,8 +968,7 @@ auto para_seg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto quote(M,O)(
- M doc_matters,
+auto quote(O)(
const O obj,
string _txt,
) {
@@ -1024,7 +1013,7 @@ auto quote_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = quote(doc_matters, obj, _txt);
+ string o = quote(obj, _txt);
return o;
}
#+END_SRC
@@ -1043,7 +1032,7 @@ auto quote_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = quote(doc_matters, obj, _txt);
+ string o = quote(obj, _txt);
auto u = tuple(
o,
_endnotes,
@@ -1057,8 +1046,7 @@ auto quote_seg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto group(M,O)(
- M doc_matters,
+auto group(O)(
const O obj,
string _txt,
) {
@@ -1104,7 +1092,7 @@ auto group_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = group(doc_matters, obj, _txt);
+ string o = group(obj, _txt);
return o;
}
#+END_SRC
@@ -1123,7 +1111,7 @@ auto group_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = group(doc_matters, obj, _txt);
+ string o = group(obj, _txt);
auto u = tuple(
o,
_endnotes,
@@ -1137,8 +1125,7 @@ auto group_seg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto block(M,O)(
- M doc_matters,
+auto block(O)(
const O obj,
string _txt,
) {
@@ -1180,7 +1167,7 @@ auto block_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = block(doc_matters, obj, _txt);
+ string o = block(obj, _txt);
return o;
}
#+END_SRC
@@ -1199,7 +1186,7 @@ auto block_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = block(doc_matters, obj, _txt);
+ string o = block(obj, _txt);
auto u = tuple(
o,
_endnotes,
@@ -1213,8 +1200,7 @@ auto block_seg(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto verse(M,O)(
- M doc_matters,
+auto verse(O)(
const O obj,
string _txt,
) {
@@ -1256,7 +1242,7 @@ auto verse_scroll(M,O)(
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = verse(doc_matters, obj, _txt);
+ string o = verse(obj, _txt);
return o;
}
#+END_SRC
@@ -1275,7 +1261,7 @@ auto verse_seg(M,O)(
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = verse(doc_matters, obj, _txt);
+ string o = verse(obj, _txt);
auto u = tuple(
o,
_endnotes,
@@ -1288,8 +1274,7 @@ auto verse_seg(M,O)(
#+name: xhtml_format_objects_code
#+BEGIN_SRC d
-auto code(M,O)(
- M doc_matters,
+auto code(O)(
const O obj,
string _txt,
) {
@@ -1330,8 +1315,7 @@ align="left|right|center"
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto tablarize(M,O)(
- M doc_matters,
+auto tablarize(O)(
const O obj,
string _txt,
) {
@@ -1370,14 +1354,13 @@ auto tablarize(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto table(M,O)(
- M doc_matters,
+auto table(O)(
const O obj,
string _txt,
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = font_face(_txt);
- auto t = tablarize(doc_matters, obj, _txt);
+ auto t = tablarize(obj, _txt);
_txt = t[0];
string _note = t[1];
string o;
@@ -1406,8 +1389,7 @@ auto table(M,O)(
#+name: xhtml_format_objects
#+BEGIN_SRC d
-auto endnote(M,O)(
- M doc_matters,
+auto endnote(O)(
const O obj,
string _txt,
) {
@@ -1456,11 +1438,23 @@ void scroll(D,M)(
string suffix = ".html";
string previous_part = "";
string delimit = "";
+#+END_SRC
+
+**** the loops & outer switch (sections & objects) format output
+
+#+name: output_html_scroll
+#+BEGIN_SRC d
foreach (part; doc_matters.xml.keys_seq.scroll) {
foreach (obj; doc_abstraction[part]) {
delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
switch (obj.metainfo.is_of_part) {
+#+END_SRC
+
+***** frontmatter
+
+#+name: output_html_scroll
+#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -1491,6 +1485,12 @@ void scroll(D,M)(
break;
}
break;
+#+END_SRC
+
+***** body
+
+#+name: output_html_scroll
+#+BEGIN_SRC d
case "body": assert(part == "body" || "head");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -1528,10 +1528,10 @@ void scroll(D,M)(
doc_html ~= xhtml_format.verse_scroll(doc_matters, obj, _txt, suffix);
break;
case "code":
- doc_html ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_html ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_html ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_html ~= xhtml_format.table(obj, _txt);
break;
default:
{ /+ debug +/
@@ -1553,6 +1553,12 @@ void scroll(D,M)(
break;
}
break;
+#+END_SRC
+
+***** backmatter
+
+#+name: output_html_scroll
+#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.is_of_type) {
@@ -1608,6 +1614,12 @@ void scroll(D,M)(
}
}
break;
+#+END_SRC
+
+***** closings & post loop
+
+#+name: output_html_scroll
+#+BEGIN_SRC d
}
}
}
@@ -1666,10 +1678,22 @@ void seg(D,M)(
string suffix = ".html";
string previous_part = "";
string delimit = "";
+#+END_SRC
+
+**** ↻ the loop (sections & objects) format output
+
+#+name: output_html_seg
+#+BEGIN_SRC d
foreach (part; doc_matters.xml.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
+#+END_SRC
+
+***** all headings
+
+#+name: output_html_seg
+#+BEGIN_SRC d
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.heading_lev_markup) {
@@ -1737,9 +1761,21 @@ void seg(D,M)(
}
break;
}
+#+END_SRC
+
+***** non-heading
+
+#+name: output_html_seg
+#+BEGIN_SRC d
} else {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.is_of_part) {
+#+END_SRC
+
+****** frontmatter
+
+#+name: output_html_seg
+#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -1768,6 +1804,12 @@ void seg(D,M)(
break;
}
break;
+#+END_SRC
+
+****** body
+
+#+name: output_html_seg
+#+BEGIN_SRC d
case "body": assert(part == "body");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -1812,10 +1854,10 @@ void seg(D,M)(
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "code":
- doc_html[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_html[segment_filename] ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_html[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_html[segment_filename] ~= xhtml_format.table(obj, _txt);
doc_html_endnotes[segment_filename] ~= "";
break;
default:
@@ -1838,6 +1880,12 @@ void seg(D,M)(
break;
}
break;
+#+END_SRC
+
+****** backmatter
+
+#+name: output_html_seg
+#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.is_of_type) {
@@ -1898,6 +1946,12 @@ void seg(D,M)(
}
break;
}
+#+END_SRC
+
+***** closings & post loop
+
+#+name: output_html_seg
+#+BEGIN_SRC d
}
}
}
@@ -2081,7 +2135,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
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 _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters!
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
@@ -2110,7 +2164,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
<!-- nav epub3 navigation -->
<item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
¶",
- uuid,
+ _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),
(doc_matters.conf_make_meta.meta.title_sub.empty)
@@ -2124,9 +2178,9 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.date_published),
(doc_matters.conf_make_meta.meta.rights_copyright.empty)
? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright),
- uuid,
- uuid,
- uuid,
+ _uuid,
+ _uuid,
+ _uuid,
(pth_epub3.fn_oebps_css(doc_matters.src.filename)).chompPrefix("OEBPS/"),
);
content ~= " " ~ "<!-- Content Documents -->" ~ "\n ";
@@ -2274,7 +2328,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
#+BEGIN_SRC d
string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {
int counter = 0;
- string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
+ string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
auto markup = InlineMarkup();
auto rgx = Rgx();
enum DomTags { none, open, close, close_and_open, open_still, }
@@ -2301,7 +2355,7 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {
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
- uuid, // uuid
+ _uuid, // uuid
"3", // content depth
doc_matters.conf_make_meta.meta.title_full, // title
(doc_matters.conf_make_meta.meta.creator_author.empty) ? ""
@@ -2379,9 +2433,21 @@ void outputEPub3(D,I)(
string[string] oepbs_content_parts;
string suffix = ".xhtml";
string[] doc_parts_;
+#+END_SRC
+
+**** ↻ the loop (sections & objects) format output
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
foreach (part; doc_matters.xml.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
+#+END_SRC
+
+***** all headings
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.heading_lev_markup) {
@@ -2445,9 +2511,21 @@ void outputEPub3(D,I)(
}
break;
}
+#+END_SRC
+
+***** non-heading
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
} else {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.is_of_part) {
+#+END_SRC
+
+****** frontmatter
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -2477,6 +2555,12 @@ void outputEPub3(D,I)(
break;
}
break;
+#+END_SRC
+
+****** body
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
case "body": assert(part == "body");
switch (obj.metainfo.is_of_type) {
case "para":
@@ -2521,10 +2605,10 @@ void outputEPub3(D,I)(
doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "code":
- doc_epub3[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_epub3[segment_filename] ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_epub3[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_epub3[segment_filename] ~= xhtml_format.table(obj, _txt);
doc_epub3_endnotes[segment_filename] ~= "";
break;
default:
@@ -2547,6 +2631,12 @@ void outputEPub3(D,I)(
break;
}
break;
+#+END_SRC
+
+****** backmatter
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
case "backmatter":
assert(part == "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.is_of_type) {
@@ -2652,6 +2742,12 @@ void outputEPub3(D,I)(
obj.metainfo.object_number,
);
}
+#+END_SRC
+
+***** closings & post loop
+
+#+name: output_epub3_xhtml_seg
+#+BEGIN_SRC d
}
}
}
diff --git a/src/doc_reform/output/epub3.d b/src/doc_reform/output/epub3.d
index 4d86036..026a2b5 100644
--- a/src/doc_reform/output/epub3.d
+++ b/src/doc_reform/output/epub3.d
@@ -32,7 +32,7 @@ template outputEPub3() {
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 _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters!
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
@@ -61,7 +61,7 @@ template outputEPub3() {
<!-- nav epub3 navigation -->
<item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
¶",
- uuid,
+ _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),
(doc_matters.conf_make_meta.meta.title_sub.empty)
@@ -75,9 +75,9 @@ template outputEPub3() {
? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.date_published),
(doc_matters.conf_make_meta.meta.rights_copyright.empty)
? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright),
- uuid,
- uuid,
- uuid,
+ _uuid,
+ _uuid,
+ _uuid,
(pth_epub3.fn_oebps_css(doc_matters.src.filename)).chompPrefix("OEBPS/"),
);
content ~= " " ~ "<!-- Content Documents -->" ~ "\n ";
@@ -208,7 +208,7 @@ template outputEPub3() {
}
string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {
int counter = 0;
- string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
+ string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
auto markup = InlineMarkup();
auto rgx = Rgx();
enum DomTags { none, open, close, close_and_open, open_still, }
@@ -235,7 +235,7 @@ template outputEPub3() {
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
- uuid, // uuid
+ _uuid, // uuid
"3", // content depth
doc_matters.conf_make_meta.meta.title_full, // title
(doc_matters.conf_make_meta.meta.creator_author.empty) ? ""
@@ -309,7 +309,7 @@ template outputEPub3() {
string[] doc_parts_;
foreach (part; doc_matters.xml.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.heading_lev_markup) {
@@ -449,10 +449,10 @@ template outputEPub3() {
doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "code":
- doc_epub3[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_epub3[segment_filename] ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_epub3[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_epub3[segment_filename] ~= xhtml_format.table(obj, _txt);
doc_epub3_endnotes[segment_filename] ~= "";
break;
default:
diff --git a/src/doc_reform/output/html.d b/src/doc_reform/output/html.d
index 63a5dc2..97ba0ce 100644
--- a/src/doc_reform/output/html.d
+++ b/src/doc_reform/output/html.d
@@ -27,7 +27,7 @@ template outputHTML() {
foreach (part; doc_matters.xml.keys_seq.scroll) {
foreach (obj; doc_abstraction[part]) {
delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
switch (obj.metainfo.is_of_part) {
case "frontmatter": assert(part == "head" || "toc");
switch (obj.metainfo.is_of_type) {
@@ -96,10 +96,10 @@ template outputHTML() {
doc_html ~= xhtml_format.verse_scroll(doc_matters, obj, _txt, suffix);
break;
case "code":
- doc_html ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_html ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_html ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_html ~= xhtml_format.table(obj, _txt);
break;
default:
{ /+ debug +/
@@ -224,7 +224,7 @@ template outputHTML() {
foreach (part; doc_matters.xml.keys_seq.seg) {
foreach (obj; doc_abstraction[part]) {
delimit = xhtml_format.div_delimit(part, previous_part);
- string _txt = xhtml_format.special_characters(obj, obj.text);
+ string _txt = xhtml_format.special_characters(obj);
if (obj.metainfo.is_a == "heading") {
assert(part == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail");
switch (obj.metainfo.heading_lev_markup) {
@@ -367,10 +367,10 @@ template outputHTML() {
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "code":
- doc_html[segment_filename] ~= xhtml_format.code(doc_matters, obj, _txt);
+ doc_html[segment_filename] ~= xhtml_format.code(obj, _txt);
break;
case "table":
- doc_html[segment_filename] ~= xhtml_format.table(doc_matters, obj, _txt);
+ doc_html[segment_filename] ~= xhtml_format.table(obj, _txt);
doc_html_endnotes[segment_filename] ~= "";
break;
default:
diff --git a/src/doc_reform/output/xmls.d b/src/doc_reform/output/xmls.d
index ef35e10..58cfb4e 100644
--- a/src/doc_reform/output/xmls.d
+++ b/src/doc_reform/output/xmls.d
@@ -44,31 +44,25 @@ template outputXHTMLs() {
// you also need to close the last div, introduce a footer?
return delimit;
}
- string special_characters(O)(
- const O obj,
- string _txt
- ){
+ string special_characters_text(string _txt){
_txt = _txt
.replaceAll(rgx.xhtml_ampersand, "&#38;")
.replaceAll(rgx.xhtml_quotation, "&#34;")
.replaceAll(rgx.xhtml_less_than, "&#60;")
.replaceAll(rgx.xhtml_greater_than, "&#62;")
.replaceAll(rgx.nbsp_char, " ");
+ return _txt;
+ }
+ string special_characters(O)(
+ const O obj,
+ ){
+ string _txt = special_characters_text(obj.text);
if (!(obj.metainfo.is_a == "code")) {
_txt = (_txt)
.replaceAll(rgx.xhtml_line_break, "<br />");
}
return _txt;
}
- string special_characters_text(string _txt){
- _txt = _txt
- .replaceAll(rgx.xhtml_ampersand, "&#38;")
- .replaceAll(rgx.xhtml_quotation, "&#34;")
- .replaceAll(rgx.xhtml_less_than, "&#60;")
- .replaceAll(rgx.xhtml_greater_than, "&#62;")
- .replaceAll(rgx.nbsp_char, " ");
- return _txt;
- }
string font_face(string _txt){
_txt = _txt
.replaceAll(rgx.inline_emphasis, ("<em>$1</em>"))
@@ -98,19 +92,7 @@ template outputXHTMLs() {
auto header_metadata(M)(
M doc_matters,
) {
- string _title="Title";
- string _author="Author";
- string _publisher="Publisher";
- string _date="Date";
- string _date_created="Date";
- string _date_issued="Date";
- string _date_available="Date";
- string _date_valid="Date";
- string _date_modified="Date";
- string _language="en";
- string _rights="Copyright: Copyright (C) year holder";
- string _generator="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)";
- string _generator_home="http://www.sisudoc.org";
+ string _publisher="Publisher"; // TODO
string o;
o = format(q"¶<!-- DocReform header metadata -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
@@ -128,19 +110,19 @@ template outputXHTMLs() {
<meta name="generator" content="%s" />
<link rel="generator" href="%s" />
<!-- DocReform header metadata -->¶",
- _title,
- _author,
- _publisher,
- _date,
- _date_created,
- _date_issued,
- _date_available,
- _date_valid,
- _date_modified,
- _language,
- _rights,
- _generator,
- _generator_home,
+ doc_matters.conf_make_meta.meta.title_full,
+ doc_matters.conf_make_meta.meta.creator_author,
+ _publisher,
+ doc_matters.conf_make_meta.meta.date_published,
+ doc_matters.conf_make_meta.meta.date_created,
+ doc_matters.conf_make_meta.meta.date_issued,
+ doc_matters.conf_make_meta.meta.date_available,
+ doc_matters.conf_make_meta.meta.date_valid,
+ doc_matters.conf_make_meta.meta.date_modified,
+ doc_matters.src.language,
+ doc_matters.conf_make_meta.meta.rights_copyright,
+ doc_matters.generator_program.name_and_version,
+ doc_matters.generator_program.url_home,
);
return o;
}
@@ -164,7 +146,7 @@ template outputXHTMLs() {
o = format(q"¶<div class="flex-menu-option">
%s
</div>¶",
- _locations,
+ _locations,
);
return o;
}
@@ -289,18 +271,18 @@ template outputXHTMLs() {
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="dc.title" content="%s" />
<meta name="dc.author" content="%s" />
- <meta name="dc.publisher" content="DocReform http://www.jus.uio.no/sisu (this copy)" />
- <meta name="dc.date" content="year" />
- <meta name="dc.date.created" content="year" />
- <meta name="dc.date.issued" content="year" />
- <meta name="dc.date.available" content="year" />
- <meta name="dc.date.valid" content="year" />
- <meta name="dc.date.modified" content="year" />
- <meta name="dc.language" content="US" />
- <meta name="dc.rights" content="Copyright: Copyright (C) year holder" />
- <meta name="generator" content="doc_reform [DocReform 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
- <link rel="generator" href="http://www.sisudoc.org/" />
- <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
+ <meta name="dc.publisher" content="FIX" />
+ <meta name="dc.date" content="%s" />
+ <meta name="dc.date.created" content="%s" />
+ <meta name="dc.date.issued" content="%s" />
+ <meta name="dc.date.available" content="%s" />
+ <meta name="dc.date.valid" content="%s" />
+ <meta name="dc.date.modified" content="%s" />
+ <meta name="dc.language" content="%s" />
+ <meta name="dc.rights" content="%s" />
+ <meta name="generator" content="%s" />
+ <link rel="generator" href="%s" />
+ <link rel="shortcut icon" href="../_sisu/image/d.ico" />
<link rel="stylesheet" href="css/epub.css" type="text/css" id="main-css" />
</head>
<body lang="%s">
@@ -312,6 +294,16 @@ template outputXHTMLs() {
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,
+ doc_matters.conf_make_meta.meta.date_published,
+ doc_matters.conf_make_meta.meta.date_created,
+ doc_matters.conf_make_meta.meta.date_issued,
+ doc_matters.conf_make_meta.meta.date_available,
+ doc_matters.conf_make_meta.meta.date_valid,
+ doc_matters.conf_make_meta.meta.date_modified,
+ doc_matters.src.language,
+ doc_matters.conf_make_meta.meta.rights_copyright,
+ doc_matters.generator_program.name_and_version,
+ doc_matters.generator_program.url_home,
doc_matters.src.language,
);
return o;
@@ -624,8 +616,7 @@ template outputXHTMLs() {
}
return bar();
}
- auto heading(M,O)(
- M doc_matters,
+ auto heading(O)(
const O obj,
string _txt,
string _xml_type = "html",
@@ -688,7 +679,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = heading(doc_matters, obj, _txt);
+ string o = heading(obj, _txt);
return o;
}
auto heading_seg(M,O)(
@@ -701,15 +692,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0];
string[] _endnotes = t[1];
- string o = heading(doc_matters, obj, _txt, _xml_type);
+ string o = heading(obj, _txt, _xml_type);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto para(M,O)(
- M doc_matters,
+ auto para(O)(
const O obj,
string _txt,
) {
@@ -758,7 +748,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = para(doc_matters, obj, _txt);
+ string o = para(obj, _txt);
return o;
}
auto para_seg(M,O)(
@@ -771,15 +761,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = para(doc_matters, obj, _txt);
+ string o = para(obj, _txt);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto quote(M,O)(
- M doc_matters,
+ auto quote(O)(
const O obj,
string _txt,
) {
@@ -818,7 +807,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = quote(doc_matters, obj, _txt);
+ string o = quote(obj, _txt);
return o;
}
auto quote_seg(M,O)(
@@ -831,15 +820,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = quote(doc_matters, obj, _txt);
+ string o = quote(obj, _txt);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto group(M,O)(
- M doc_matters,
+ auto group(O)(
const O obj,
string _txt,
) {
@@ -879,7 +867,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = group(doc_matters, obj, _txt);
+ string o = group(obj, _txt);
return o;
}
auto group_seg(M,O)(
@@ -892,15 +880,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = group(doc_matters, obj, _txt);
+ string o = group(obj, _txt);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto block(M,O)(
- M doc_matters,
+ auto block(O)(
const O obj,
string _txt,
) {
@@ -936,7 +923,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = block(doc_matters, obj, _txt);
+ string o = block(obj, _txt);
return o;
}
auto block_seg(M,O)(
@@ -949,15 +936,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = block(doc_matters, obj, _txt);
+ string o = block(obj, _txt);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto verse(M,O)(
- M doc_matters,
+ auto verse(O)(
const O obj,
string _txt,
) {
@@ -993,7 +979,7 @@ template outputXHTMLs() {
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = inline_markup_scroll(doc_matters, obj, _txt, _suffix);
- string o = verse(doc_matters, obj, _txt);
+ string o = verse(obj, _txt);
return o;
}
auto verse_seg(M,O)(
@@ -1006,15 +992,14 @@ template outputXHTMLs() {
auto t = inline_markup_seg(doc_matters, obj, _txt, _suffix, _xml_type);
_txt = t[0].to!string;
string[] _endnotes = t[1];
- string o = verse(doc_matters, obj, _txt);
+ string o = verse(obj, _txt);
auto u = tuple(
o,
_endnotes,
);
return u;
}
- auto tablarize(M,O)(
- M doc_matters,
+ auto tablarize(O)(
const O obj,
string _txt,
) {
@@ -1047,14 +1032,13 @@ template outputXHTMLs() {
);
return t;
}
- auto table(M,O)(
- M doc_matters,
+ auto table(O)(
const O obj,
string _txt,
) {
auto tags = _xhtml_anchor_tags(obj);
_txt = font_face(_txt);
- auto t = tablarize(doc_matters, obj, _txt);
+ auto t = tablarize(obj, _txt);
_txt = t[0];
string _note = t[1];
string o;
@@ -1077,8 +1061,7 @@ template outputXHTMLs() {
);
return o;
}
- auto endnote(M,O)(
- M doc_matters,
+ auto endnote(O)(
const O obj,
string _txt,
) {
@@ -1093,8 +1076,7 @@ template outputXHTMLs() {
);
return o;
}
- auto code(M,O)(
- M doc_matters,
+ auto code(O)(
const O obj,
string _txt,
) {
diff --git a/views/version.txt b/views/version.txt
index 735996e..d7e1dee 100644
--- a/views/version.txt
+++ b/views/version.txt
@@ -4,7 +4,7 @@ struct Version {
int minor;
int patch;
}
-enum ver = Version(0, 4, 1);
+enum _ver = Version(0, 4, 2);
version (Posix) {
version (DigitalMars) {
} else version (LDC) {