aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/out_xmls.org
diff options
context:
space:
mode:
Diffstat (limited to 'org/out_xmls.org')
-rw-r--r--org/out_xmls.org183
1 files changed, 27 insertions, 156 deletions
diff --git a/org/out_xmls.org b/org/out_xmls.org
index 84c15db..0e9bafe 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -159,8 +159,7 @@ import
.replaceAll(rgx.xhtml_quotation, """) // """
.replaceAll(rgx.xhtml_less_than, "<") // "<"
.replaceAll(rgx.xhtml_greater_than, ">") // ">"
- .replaceAll(rgx.br_line, "<br>")
- .replaceAll(rgx.br_nl, "<br>")
+ .replaceAll(rgx.br_line, "<br />")
.replaceAll(rgx.nbsp_char, " ");
return _txt;
}
@@ -173,8 +172,7 @@ import
@safe string special_characters_date(string _txt) {
_txt = _txt
.replaceAll(regex(r"(?:-00)+"), "")
- .replaceAll(rgx.br_line, "<br>")
- .replaceAll(rgx.br_nl, "<br>")
+ .replaceAll(rgx.br_line, "<br />")
.replaceAll(rgx.nbsp_char, " ");
return _txt;
}
@@ -334,7 +332,7 @@ import
.replaceAll(
rgx.br_line, "")
.replaceAll(
- rgx.br_nl, "");
+ rgx.br_newline_inline, "");
} else {
_locations = "<p class=\"tiny_left\"><a href=\"https://www.doc-reform.org\">spine</a></p>\n<p class=\"tiny_left\"><a href=\"https://git.sisudoc.org/software/spine/\">sources / git</a></p>\n<p class=\"tiny_left\"><a href=\"https://www.sisudoc.org\">www.sisudoc.org</a></p>";
}
@@ -999,14 +997,16 @@ import
(doc_matters.opt.action.ocn_off)
? "" : ((obj.metainfo.object_number.empty)
? "" : obj.metainfo.identifier),
- obj.metainfo.heading_lev_markup,
+ ((_xml_type == "epub" && obj.metainfo.heading_lev_markup == 0) ? 1
+ : obj.metainfo.heading_lev_markup),
obj.metainfo.is_a,
obj.metainfo.identifier,
obj.metainfo.identifier,
tags,
heading_lev_anchor_tag,
_txt,
- obj.metainfo.heading_lev_markup,
+ ((_xml_type == "epub" && obj.metainfo.heading_lev_markup == 0) ? 1
+ : obj.metainfo.heading_lev_markup),
);
} else {
o = format(q"┃%s
@@ -1016,12 +1016,14 @@ import
</h%s>
</div>┃",
_horizontal_rule,
- obj.metainfo.heading_lev_markup,
+ ((_xml_type == "epub" && obj.metainfo.heading_lev_markup == 0) ? 1
+ : obj.metainfo.heading_lev_markup),
obj.metainfo.is_a,
tags,
heading_lev_anchor_tag,
_txt,
- obj.metainfo.heading_lev_markup,
+ ((_xml_type == "epub" && obj.metainfo.heading_lev_markup == 0) ? 1
+ : obj.metainfo.heading_lev_markup),
);
}
return o;
@@ -2349,7 +2351,6 @@ template outputEPub3() {
<<output_epub3_fixed_container_xml>>
<<output_epub3_constructs_oebps_content>>
<<output_epub3_constructs_oebps_toc_nav_xhtml>>
- <<output_epub3_constructs_oebps_toc_ncx>>
<<output_epub3_xhtml_seg_output>>
<<output_epub3_xhtml_seg_output_loop>>
<<output_epub3_xhtml_seg_object_is_heading>>
@@ -2440,8 +2441,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<dc:identifier id="bookid">urn:uuid:%s</dc:identifier>
</metadata>
<manifest>
- <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
- <link rel="stylesheet" href="%s" type="text/css" id="main-css" />
+ <item id="css" href="%s" media-type="text/css"/>
<item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
┃",
_uuid,
@@ -2473,7 +2473,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
);
}
content ~= " " ~ "</manifest>" ~ "\n ";
- content ~= " " ~ "<spine toc=\"ncx\">" ~ "\n ";
+ content ~= " " ~ "<spine>" ~ "\n ";
content ~= parts["spine"];
content ~= " " ~ "</spine>" ~ "\n ";
content ~= " " ~ "<guide>" ~ "\n ";
@@ -2530,7 +2530,6 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<h1>Contents</h1>
</header>
<nav epub:type="toc" id="toc">
- <ol>
<li>┃",
(doc_matters.conf_make_meta.meta.title_full).special_characters_text,
);
@@ -2544,7 +2543,10 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
</li>
┃",
toc_head,
- obj.text.replaceAll(rgx.inline_notes_al_gen, "").strip,
+ obj.text
+ .replaceAll(rgx.inline_notes_al_gen, "")
+ .replaceAll(rgx.br_newline_inline, "<br />")
+ .strip,
);
} else if (sect == "tail") { // skip
} else if ((sect != "tail") && (obj.metainfo.is_a == "heading")) {
@@ -2602,7 +2604,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
break;
}
if (n == 0) {
- _toc_nav_tail ~="</nav>
+ _toc_nav_tail ~=" </nav>
</section>
</body>
</html>\n";
@@ -2617,124 +2619,6 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
}
#+END_SRC
-**** TODO _doc navigation epub2_ (OEBPS/toc.ncx) navigable toc using Dom structure
-
-- toc.ncx (epub2 navigation document)
- - (replaced in epub3 by a declared xhtml nav file, in our case toc_nav.xhtml)
-
-#+NAME: output_epub3_constructs_oebps_toc_ncx
-#+BEGIN_SRC d
-@safe string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {
- int counter_play_order = 0;
- string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
- auto markup = InlineMarkup();
- static auto rgx = RgxO();
- enum DomTags { none, open, close, close_and_open, open_still, }
- string toc;
- string toc_ = format(q"┃<?xml version="1.0" encoding="utf-8"?>
-<ncx xmlns="https://www.daisy.org/z3986/2005/ncx/" version="2005-1">
-<head>
- <!-- four required metadata items (for all NCX documents,
- (including the relaxed constraints of OPS 2.0) -->
- <title>%s%s</title>
- <link rel="stylesheet" href="Styles/epub.css" type="text/css" id="main-css" />
- <meta name="dtb:uid" content="urn:uuid:%s" />
- <meta name="dtb:depth" content="%s" />
- <meta name="dtb:totalPageCount" content="0" />
- <meta name="dtb:maxPageNumber" content="0" />
-</head>
-<docTitle>
- <text>%s</text>
-</docTitle>
-<docAuthor>
- <text>%s</text>
-</docAuthor>
-<navMap>┃",
- (doc_matters.conf_make_meta.meta.title_full).special_characters_text, // title
- (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""
- : " by " ~ (doc_matters.conf_make_meta.meta.creator_author).special_characters_text, // author
- _uuid, // uuid
- "3", // content depth
- (doc_matters.conf_make_meta.meta.title_full).special_characters_text, // title
- (doc_matters.conf_make_meta.meta.creator_author.empty) ? ""
- : (doc_matters.conf_make_meta.meta.creator_author).special_characters_text, // author
- );
- string _toc_ncx_tail = "";
- foreach (sect; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[sect]) {
- if (sect == "head") { toc = toc_;
- }
- if (obj.metainfo.is_a == "heading") {
- string _txt = obj.text.replaceAll(rgx.inline_notes_al_gen, "").strip.special_characters_text;
- // writeln(_txt, " --- ", obj.metainfo.dom_structure_collapsed_tags_status); // DEBUG line
- string hashtag = (obj.metainfo.heading_lev_markup <= 4) ? "" : ("#" ~ obj.metainfo.ocn.to!string);
- foreach_reverse (k; 0 .. 7) {
- switch (obj.metainfo.dom_structure_collapsed_tags_status[k]) { // for epub may need to construct for levels 1 to 4 only
- case DomTags.close :
- if (sect != "head") {
- toc ~= "\n </navPoint>"; // issue at start of some documents
- }
- break;
- case DomTags.close_and_open :
- toc ~= "\n </navPoint>";
- goto default;
- case DomTags.open :
- goto default;
- default :
- string _toc;
- if ((obj.metainfo.dom_structure_collapsed_tags_status[k] == DomTags.open
- || obj.metainfo.dom_structure_collapsed_tags_status[k] == DomTags.close_and_open
- // || obj.metainfo.dom_structure_collapsed_tags_status[k] == DomTags.open_still
- )) {
- ++counter_play_order;
- _toc = format(q"┃
- <navPoint class="chapter" id="navpoint" playOrder="%s">
- <navLabel>
- <text>%s</text>
- </navLabel>
- <content src="%s.xhtml%s" />┃",
- counter_play_order,
- _txt,
- obj.tags.segment_anchor_tag_epub,
- hashtag,
- );
- }
- if (obj.metainfo.dom_structure_collapsed_tags_status[k] == DomTags.close_and_open) {
- toc ~= _toc;
- } else if (obj.metainfo.dom_structure_collapsed_tags_status[k] == DomTags.open) {
- toc ~= _toc;
- }
- break;
- }
- if (doc_matters.has.keys_seq.seg[doc_matters.has.keys_seq.seg.length - 2] == sect) {
- if (k == 6) {_toc_ncx_tail = "";}
- switch (obj.metainfo.dom_structure_collapsed_tags_status[k]) {
- case 0: case 2:
- // case DomTags.none: case DomTags.close:
- break;
- case 1: case 3: case 4:
- // case DomTags.open: case DomTags.close_and_open: case DomTags.open_still:
- if (k != 0) {
- }
- _toc_ncx_tail ~= " " ~ markup.indent_by_spaces_provided(k, " ") ~ "</navPoint>" ~ "\n";
- break;
- default :
- break;
- }
- if (k == 0) {
- _toc_ncx_tail ~= format(q"┃ </navMap>
-</ncx>┃");
- }
- }
- }
- }
- }
- }
- toc ~= _toc_ncx_tail;
- return toc;
-}
-#+END_SRC
-
** the document contents :seg:
*** ↻ loop & switch (sections & objects) format epub3 xhtml output
@@ -2756,7 +2640,6 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
/+ fixed output +/
string mimetypes;
string meta_inf_container_xml;
- string oebps_toc_ncx;
string oebps_toc_nav_xhtml;
/+ variable output +/
string oebps_content_opf;
@@ -3052,25 +2935,25 @@ if (obj.metainfo.is_a == "heading") {
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,
@@ -3078,13 +2961,13 @@ if (obj.metainfo.is_a == "heading") {
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,
@@ -3102,11 +2985,10 @@ if (obj.metainfo.is_a == "heading") {
}
}
/+ epub specific documents +/
- epubWrite.mimetypes = epub3_mimetypes;
+ epubWrite.mimetypes = epub3_mimetypes;
epubWrite.meta_inf_container_xml = epub3_container_xml;
- epubWrite.oebps_toc_ncx = doc_abstraction.epub2_oebps_toc_ncx(doc_matters);
- epubWrite.oebps_toc_nav_xhtml = doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters);
- epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts);
+ epubWrite.oebps_toc_nav_xhtml = doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters);
+ epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts);
epubWrite.epub3_write_output_files(doc_matters);
}
#+END_SRC
@@ -3127,7 +3009,6 @@ zip -0 file.epub mimetype && zip -r -9 file.epub META-INF OEBPS
static assert(is(typeof(epub_write.mimetypes) == string));
static assert(is(typeof(epub_write.meta_inf_container_xml) == string));
static assert(is(typeof(epub_write.oebps_toc_nav_xhtml) == string));
- static assert(is(typeof(epub_write.oebps_toc_ncx) == string));
static assert(is(typeof(epub_write.oebps_content_opf) == string));
}
static auto rgx = RgxO();
@@ -3234,16 +3115,6 @@ zip -0 file.epub mimetype && zip -r -9 file.epub META-INF OEBPS
fn = pth_epub3.fn_oebps_toc_nav_xhtml;
EPUBzip(epub_write.oebps_toc_nav_xhtml, fn);
}
- { /+ OEBPS/toc.ncx (navigation toc epub2) +/
- { /+ debug +/
- if (doc_matters.opt.action.debug_do) {
- fn_dbg = pth_epub3.dbg_fn_oebps_toc_ncx(doc_matters.src.filename);
- File(fn_dbg, "w").writeln(epub_write.oebps_toc_ncx);
- }
- }
- fn = pth_epub3.fn_oebps_toc_ncx;
- EPUBzip(epub_write.oebps_toc_ncx, fn);
- }
{ /+ OEBPS/content.opf (doc manifest) +/
{ /+ debug +/
if (doc_matters.opt.action.debug_do) {