aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-01-27 10:33:49 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commita086f413748920c0faeb58b7a211547e92b57bc0 (patch)
treed50b8a5ccaaf14f05632b6cbc6632a8e3ab81a31
parentoutput, reorganize org file (diff)
output templates
-rw-r--r--org/output.org136
-rw-r--r--src/sdp/output_epub.d669
-rw-r--r--src/sdp/output_html.d3154
-rw-r--r--src/sdp/output_hub.d41
-rw-r--r--src/sdp/source_sisupod.d105
5 files changed, 2068 insertions, 2037 deletions
diff --git a/org/output.org b/org/output.org
index 48fea4f..9c23caa 100644
--- a/org/output.org
+++ b/org/output.org
@@ -29,7 +29,6 @@ template outputHub() {
std.container,
std.exception,
std.getopt,
- std.json,
std.process,
std.stdio,
std.file,
@@ -57,9 +56,7 @@ template outputHub() {
writeln("source");
}
if (doc_matters.opt_action_bool["sisupod"]) {
- mixin SiSUpod;
- auto sisupod=SiSUpod();
- sisupod.sisupod_assemble(doc_matters.source_filename);
+ SiSUpod!()(doc_matters.source_filename);
writeln("sisupod source");
}
if (doc_matters.opt_action_bool["text"]) {
@@ -69,41 +66,15 @@ template outputHub() {
// text.scroll(contents, bookindex_unordered_hashes, biblio, dochead_make, dochead_meta, fn_src, opt_action_bool);
}
if (doc_matters.opt_action_bool["html"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.scroll(
- contents,
- doc_matters,
- );
- html.seg(
- contents,
- doc_matters,
- );
+ outputHTML!().scroll(contents,doc_matters);
+ outputHTML!().seg(contents,doc_matters);
} else if(doc_matters.opt_action_bool["html_seg"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.seg(
- contents,
- doc_matters,
- );
+ outputHTML!().seg(contents,doc_matters);
} else if(doc_matters.opt_action_bool["html_scroll"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.scroll(
- contents,
- doc_matters,
- );
+ outputHTML!().scroll(contents,doc_matters);
}
if (doc_matters.opt_action_bool["epub"]) {
- mixin outputEPub;
- auto epub=outputEPub();
- epub.doc_content( // consolidate
- contents,
- doc_matters,
- );
+ outputEPub!()(contents, doc_matters);
// epub.css_write;
// writeln("epub processing");
}
@@ -128,17 +99,44 @@ template outputHub() {
#+END_SRC
* output functions :output:
+** output imports
+
+#+name: output_imports
+#+BEGIN_SRC d
+private import
+ std.algorithm,
+ std.array,
+ std.container,
+ std.exception,
+ std.file,
+ std.getopt,
+ std.json,
+ std.process,
+ std.stdio,
+ std.path,
+ std.range,
+ std.regex,
+ std.string,
+ std.traits,
+ std.typecons,
+ std.uni,
+ std.utf,
+ ao_defaults;
+import
+ ao_rgx,
+ output_xhtmls;
+#+END_SRC
+
** sisupod :sisupod:
*** sisupod template :template:
#+BEGIN_SRC d :tangle ../src/sdp/source_sisupod.d
template SiSUpod() {
- struct SiSUpod {
- <<source_sisupod_mkdirs>>
- <<source_sisupod_config>>
- <<source_sisupod_text>>
- <<source_sisupod_images>>
- }
+ <<output_imports>>
+ <<source_sisupod_mkdirs>>
+ <<source_sisupod_config>>
+ <<source_sisupod_text>>
+ <<source_sisupod_images>>
}
#+END_SRC
@@ -146,12 +144,13 @@ template SiSUpod() {
#+name: source_sisupod_config
#+BEGIN_SRC d
-void sisupod_assemble(S)(
+void SiSUpod(S)(
S fn_src,
) {
debug(asserts){
static assert(is(typeof(fn_src) == string));
}
+ mixin SiSUrgxInit;
mixin SiSUpaths;
auto pth_sisupod = SiSUpodPaths();
mixin SiSUlanguageCodes;
@@ -525,18 +524,17 @@ auto endnote(O)(
}
#+END_SRC
-*** html output [#A] :html:
+*** html [#A] :html:
**** html template :template:
#+BEGIN_SRC d :tangle ../src/sdp/output_html.d
template outputHTML() {
- struct outputHTML {
- mixin outputXHTMLs;
- <<output_html>>
- <<output_html_scroll>>
- <<output_html_seg>>
- <<output_html_css>>
- }
+ <<output_imports>>
+ mixin outputXHTMLs;
+ <<output_html>>
+ <<output_html_scroll>>
+ <<output_html_seg>>
+ <<output_html_css>>
}
#+END_SRC
@@ -576,6 +574,7 @@ void scroll(C,T)(
auto ref const C contents,
auto ref T doc_matters,
) {
+ mixin SiSUrgxInit;
auto xhtml_format = outputXHTMLs();
auto rgx = Rgx();
string[] doc_html;
@@ -698,6 +697,8 @@ void seg_write_output_files(M,C)(
debug(asserts){
static assert(is(typeof(doc_html) == string[][string]));
}
+ mixin SiSUrgxInit;
+ auto rgx = Rgx();
mixin SiSUpaths;
auto pth_html = HtmlPaths();
auto xhtml_format = outputXHTMLs();
@@ -728,8 +729,9 @@ void seg(C,M)(
auto ref const C contents,
auto ref M doc_matters,
) {
- auto xhtml_format = outputXHTMLs();
+ mixin SiSUrgxInit;
auto rgx = Rgx();
+ auto xhtml_format = outputXHTMLs();
string[][string] doc_html;
string[] doc;
string segment_filename;
@@ -2189,15 +2191,14 @@ auto css_write() {
#+BEGIN_SRC d :tangle ../src/sdp/output_epub.d
template outputEPub() {
- struct outputEPub {
- mixin InternalMarkup;
- mixin outputXHTMLs;
- <<output_epub_fixed>>
- <<output_epub_constructs>>
- <<output_epub_xhtml>>
- <<output_epub_xhtml_seg>>
- <<output_epub_css>>
- }
+ <<output_imports>>
+ mixin InternalMarkup;
+ mixin outputXHTMLs;
+ <<output_epub_fixed>>
+ <<output_epub_constructs>>
+ <<output_epub_xhtml>>
+ <<output_epub_xhtml_seg>>
+ <<output_epub_css>>
}
#+END_SRC
@@ -2237,11 +2238,7 @@ string epub_container_xml() {
#+name: output_epub_constructs
#+BEGIN_SRC d
-string epub_oebps_content(
- // string[string][string] dochead_meta,
-) {
- // string[] toc;
- // int counter = 0;
+string epub_oebps_content(C,M)(C contents, M doc_matters) {
string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
string content = format(q"¶<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
@@ -2287,7 +2284,7 @@ string epub_oebps_content(
#+name: output_epub_constructs
#+BEGIN_SRC d
-string epub_oebps_toc() {
+string epub_oebps_toc(C,M)(C contents, M doc_matters) {
int counter = 0;
string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
auto markup = InlineMarkup();
@@ -2373,10 +2370,11 @@ obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml
#+name: output_epub_xhtml_seg
#+BEGIN_SRC d
-void doc_content(C,T)(
+void outputEPub(C,T)(
auto ref const C contents,
auto ref T doc_matters,
) {
+ mixin SiSUrgxInit;
auto xhtml_format = outputXHTMLs();
auto rgx = Rgx();
// string[] toc;
@@ -2386,8 +2384,8 @@ void doc_content(C,T)(
string[] top_level_headings = ["","","",""];
auto mimetypes = epub_mimetypes;
auto meta_inf_container_xml = epub_container_xml;
- auto oebps_toc_ncx = epub_oebps_toc;
- auto oebps_content_opf = epub_oebps_content;
+ auto oebps_toc_ncx = epub_oebps_toc(contents, doc_matters);
+ auto oebps_content_opf = epub_oebps_content(contents, doc_matters);
foreach (part; doc_matters.keys_seq_seg) {
foreach (obj; contents[part]) {
if (obj.is_a == "heading") {
diff --git a/src/sdp/output_epub.d b/src/sdp/output_epub.d
index 4c23600..cffa560 100644
--- a/src/sdp/output_epub.d
+++ b/src/sdp/output_epub.d
@@ -1,367 +1,384 @@
template outputEPub() {
- struct outputEPub {
- mixin InternalMarkup;
- mixin outputXHTMLs;
- string epub_mimetypes() {
- string o;
- o = format(q"¶application/epub+zip¶");
- return o;
- }
- string epub_container_xml() {
- string o;
- o = format(q"¶<?xml version='1.0' encoding='utf-8'?>
- <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>
- </container>¶");
- return o;
- }
- string epub_oebps_content(
- // string[string][string] dochead_meta,
- ) {
- // string[] toc;
- // int counter = 0;
- string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
- string content = format(q"¶<?xml version='1.0' encoding='utf-8'?>
- <?xml version='1.0' encoding='utf-8'?>
- <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">
- <opf:metadata
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:opf="http://www.idpf.org/2007/opf"
- xmlns:dcterms="http://purl.org/dc/terms/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- unique-identifier="urn:uuid:%s" version="2.0">
- <dc:title>%s</dc:title>
- <dc:creator opf:file-as="%s" opf:role="aut">%s</dc:creator>
- <dc:language>en</dc:language>
- <dc:date opf:event="published">%s</dc:date>
- <dc:rights>Copyright: %s</dc:rights>
- <dc:identifier opf:scheme="URI">ox/current/en/epub/sisu_markup.epub</dc:identifier>
- <dc:identifier id="bookid">urn:uuid:%s</dc:identifier>
- <!-- <dc:identifier id="EPB-UUID">urn:uuid:%s</dc:identifier> -->
- </opf:metadata>
- <manifest>
- <!-- NCX -->
- <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
- <!-- CSS Style Sheets -->
- <item id="main-css" href="css/xhtml.css" media-type="text/css" />¶",
- uuid,
- doc_matters.dochead_meta["title"]["full"], // title
- (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
- (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
- (doc_matters.dochead_meta["date"]["published"].empty) ? "" : " by " ~ doc_matters.dochead_meta["date"]["published"], // date
- (doc_matters.dochead_meta["rights"]["copyright"].empty) ? "" : " by " ~ doc_matters.dochead_meta["rights"]["copyright"], // rights
- uuid,
- uuid,
- );
- foreach (sect; doc_matters.keys_seq_seg) {
- foreach (obj; contents[sect]) {
- }
+ private import
+ std.algorithm,
+ std.array,
+ std.container,
+ std.exception,
+ std.file,
+ std.getopt,
+ std.json,
+ std.process,
+ std.stdio,
+ std.path,
+ std.range,
+ std.regex,
+ std.string,
+ std.traits,
+ std.typecons,
+ std.uni,
+ std.utf,
+ ao_defaults;
+ import
+ ao_rgx,
+ output_xhtmls;
+ mixin InternalMarkup;
+ mixin outputXHTMLs;
+ string epub_mimetypes() {
+ string o;
+ o = format(q"¶application/epub+zip¶");
+ return o;
+ }
+ string epub_container_xml() {
+ string o;
+ o = format(q"¶<?xml version='1.0' encoding='utf-8'?>
+ <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>
+ </container>¶");
+ return o;
+ }
+ string epub_oebps_content(C,M)(C contents, M doc_matters) {
+ string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
+ string content = format(q"¶<?xml version='1.0' encoding='utf-8'?>
+ <?xml version='1.0' encoding='utf-8'?>
+ <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="EPB-UUID">
+ <opf:metadata
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:opf="http://www.idpf.org/2007/opf"
+ xmlns:dcterms="http://purl.org/dc/terms/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ unique-identifier="urn:uuid:%s" version="2.0">
+ <dc:title>%s</dc:title>
+ <dc:creator opf:file-as="%s" opf:role="aut">%s</dc:creator>
+ <dc:language>en</dc:language>
+ <dc:date opf:event="published">%s</dc:date>
+ <dc:rights>Copyright: %s</dc:rights>
+ <dc:identifier opf:scheme="URI">ox/current/en/epub/sisu_markup.epub</dc:identifier>
+ <dc:identifier id="bookid">urn:uuid:%s</dc:identifier>
+ <!-- <dc:identifier id="EPB-UUID">urn:uuid:%s</dc:identifier> -->
+ </opf:metadata>
+ <manifest>
+ <!-- NCX -->
+ <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
+ <!-- CSS Style Sheets -->
+ <item id="main-css" href="css/xhtml.css" media-type="text/css" />¶",
+ uuid,
+ doc_matters.dochead_meta["title"]["full"], // title
+ (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
+ (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
+ (doc_matters.dochead_meta["date"]["published"].empty) ? "" : " by " ~ doc_matters.dochead_meta["date"]["published"], // date
+ (doc_matters.dochead_meta["rights"]["copyright"].empty) ? "" : " by " ~ doc_matters.dochead_meta["rights"]["copyright"], // rights
+ uuid,
+ uuid,
+ );
+ foreach (sect; doc_matters.keys_seq_seg) {
+ foreach (obj; contents[sect]) {
}
- return content;
}
- string epub_oebps_toc() {
- int counter = 0;
- string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
- auto markup = InlineMarkup();
- enum DomTags { none, open, close, close_and_open, open_still, }
- 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,
- (including the relaxed constraints of OPS 2.0) -->
- <title>%s%s</title>
- <link href="css/xhtml.css" rel="stylesheet" type="text/css" id="main-css" />
- <meta name="dtb:uid" content="urn:uuid:%s" />
- <!-- <meta name="epub-creator" content="SiSU http://www.jus.uio.no/sisu (this copy)" /> -->
- <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.dochead_meta["title"]["full"], // title
- (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
- uuid, // uuid
- "3", // content depth
- doc_matters.dochead_meta["title"]["full"], // title
- (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : doc_matters.dochead_meta["creator"]["author"], // author
- );
- foreach (sect; doc_matters.keys_seq_seg) {
- foreach (obj; contents[sect]) {
- if (obj.is_a == "heading") {
- foreach_reverse (k; 0 .. 7) {
- switch (obj.dom_markedup[k]) {
- case DomTags.close :
- writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
- toc ~= "</navPoint>";
- break;
- case DomTags.close_and_open :
- writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
- writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
- ++counter;
- toc ~= "</navPoint>";
- toc ~= format(q"¶<navPoint class="chapter" id="navpoint" playOrder="%s">
- <navLabel>
+ return content;
+ }
+ string epub_oebps_toc(C,M)(C contents, M doc_matters) {
+ int counter = 0;
+ string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
+ auto markup = InlineMarkup();
+ enum DomTags { none, open, close, close_and_open, open_still, }
+ 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,
+ (including the relaxed constraints of OPS 2.0) -->
+ <title>%s%s</title>
+ <link href="css/xhtml.css" rel="stylesheet" type="text/css" id="main-css" />
+ <meta name="dtb:uid" content="urn:uuid:%s" />
+ <!-- <meta name="epub-creator" content="SiSU http://www.jus.uio.no/sisu (this copy)" /> -->
+ <meta name="dtb:depth" content="%s" />
+ <meta name="dtb:totalPageCount" content="0" />
+ <meta name="dtb:maxPageNumber" content="0" />
+ </head>
+ <docTitle>
<text>%s</text>
- </navLabel>
- <content src="%s" />¶",
- counter,
- obj.text,
- obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml; lev > 4 [filename#ocn] (links done in segment_anchor_tag)
- );
- break;
- case DomTags.open :
- writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
- ++counter;
- toc ~= format(q"¶<navPoint class="chapter" id="navpoint" playOrder="%s">
- <navLabel>
+ </docTitle>
+ <docAuthor>
<text>%s</text>
- </navLabel>
- <content src="%s" />¶",
- counter,
- obj.text,
- obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml; lev > 4 [filename#ocn] (fix links in segment_anchor_tag)
+ </docAuthor>
+ <navMap>¶",
+ doc_matters.dochead_meta["title"]["full"], // title
+ (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : " by " ~ doc_matters.dochead_meta["creator"]["author"], // author
+ uuid, // uuid
+ "3", // content depth
+ doc_matters.dochead_meta["title"]["full"], // title
+ (doc_matters.dochead_meta["creator"]["author"].empty) ? "" : doc_matters.dochead_meta["creator"]["author"], // author
);
- break;
- default :
- break;
- }
+ foreach (sect; doc_matters.keys_seq_seg) {
+ foreach (obj; contents[sect]) {
+ if (obj.is_a == "heading") {
+ foreach_reverse (k; 0 .. 7) {
+ switch (obj.dom_markedup[k]) {
+ case DomTags.close :
+ writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+ toc ~= "</navPoint>";
+ break;
+ case DomTags.close_and_open :
+ writeln(markup.indent_by_spaces_provided(k), "</", k, ">");
+ writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+ ++counter;
+ toc ~= "</navPoint>";
+ toc ~= format(q"¶<navPoint class="chapter" id="navpoint" playOrder="%s">
+ <navLabel>
+ <text>%s</text>
+ </navLabel>
+ <content src="%s" />¶",
+ counter,
+ obj.text,
+ obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml; lev > 4 [filename#ocn] (links done in segment_anchor_tag)
+ );
+ break;
+ case DomTags.open :
+ writeln(markup.indent_by_spaces_provided(k), "<", k, ">", obj.text);
+ ++counter;
+ toc ~= format(q"¶<navPoint class="chapter" id="navpoint" playOrder="%s">
+ <navLabel>
+ <text>%s</text>
+ </navLabel>
+ <content src="%s" />¶",
+ counter,
+ obj.text,
+ obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml; lev > 4 [filename#ocn] (fix links in segment_anchor_tag)
+ );
+ break;
+ default :
+ break;
}
}
}
}
- toc ~= format(q"¶ </navMap>
- </ncx>¶");
- return toc;
}
-
- void doc_content(C,T)(
- auto ref const C contents,
- auto ref T doc_matters,
- ) {
- auto xhtml_format = outputXHTMLs();
- auto rgx = Rgx();
- // string[] toc;
- string[][string] doc_epub;
- string[] doc;
- string segment_filename;
- string[] top_level_headings = ["","","",""];
- auto mimetypes = epub_mimetypes;
- auto meta_inf_container_xml = epub_container_xml;
- auto oebps_toc_ncx = epub_oebps_toc;
- auto oebps_content_opf = epub_oebps_content;
- foreach (part; doc_matters.keys_seq_seg) {
- foreach (obj; contents[part]) {
- if (obj.is_a == "heading") {
+ toc ~= format(q"¶ </navMap>
+ </ncx>¶");
+ return toc;
+ }
+
+ void outputEPub(C,T)(
+ auto ref const C contents,
+ auto ref T doc_matters,
+ ) {
+ mixin SiSUrgxInit;
+ auto xhtml_format = outputXHTMLs();
+ auto rgx = Rgx();
+ // string[] toc;
+ string[][string] doc_epub;
+ string[] doc;
+ string segment_filename;
+ string[] top_level_headings = ["","","",""];
+ auto mimetypes = epub_mimetypes;
+ auto meta_inf_container_xml = epub_container_xml;
+ auto oebps_toc_ncx = epub_oebps_toc(contents, doc_matters);
+ auto oebps_content_opf = epub_oebps_content(contents, doc_matters);
+ foreach (part; doc_matters.keys_seq_seg) {
+ foreach (obj; contents[part]) {
+ if (obj.is_a == "heading") {
+ switch (obj.heading_lev_markup) {
+ // case 0:
+ // break;
+ case 0: .. case 3:
+ /+ fill buffer, and replace with new levels from 1 to 3 +/
switch (obj.heading_lev_markup) {
- // case 0:
- // break;
- case 0: .. case 3:
- /+ fill buffer, and replace with new levels from 1 to 3 +/
- switch (obj.heading_lev_markup) {
- case 0:
- top_level_headings[0] = "";
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 1:
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 2:
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 3:
- top_level_headings[3] = "";
- goto default;
- default:
- top_level_headings[obj.heading_lev_markup] = xhtml_format.heading(obj);
- break;
- }
- break;
- case 4:
- segment_filename = obj.segment_anchor_tag;
- doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta);
- foreach (top_level_heading; top_level_headings) {
- // writeln(top_level_heading);
- doc_epub[segment_filename] ~= top_level_heading;
- }
- doc_epub[segment_filename] ~= xhtml_format.heading(obj);
- break;
- case 5: .. case 7:
- doc_epub[segment_filename] ~= xhtml_format.heading(obj);
+ case 0:
+ top_level_headings[0] = "";
+ top_level_headings[1] = "";
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 1:
+ top_level_headings[1] = "";
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 2:
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 3:
+ top_level_headings[3] = "";
+ goto default;
+ default:
+ top_level_headings[obj.heading_lev_markup] = xhtml_format.heading(obj);
break;
+ }
+ break;
+ case 4:
+ segment_filename = obj.segment_anchor_tag;
+ doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta);
+ foreach (top_level_heading; top_level_headings) {
+ // writeln(top_level_heading);
+ doc_epub[segment_filename] ~= top_level_heading;
+ }
+ doc_epub[segment_filename] ~= xhtml_format.heading(obj);
+ break;
+ case 5: .. case 7:
+ doc_epub[segment_filename] ~= xhtml_format.heading(obj);
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ } else if (obj.use == "frontmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "toc":
+ doc_epub[segment_filename] ~= xhtml_format.toc(obj);
+ // doc_epub ~= xhtml_toc(obj);
+ break;
default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "frontmatter") {
- switch (obj.is_of) {
+ break;
+ default:
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ } else if (obj.use == "body") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
case "para":
- switch (obj.is_a) {
- case "toc":
- doc_epub[segment_filename] ~= xhtml_format.toc(obj);
- // doc_epub ~= xhtml_toc(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
break;
default:
// writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "body") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "para":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ break;
+ case "block":
+ switch (obj.is_a) {
+ case "poem": // double check why both poem & verse
+ break;
+ case "verse":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ // doc_epub ~= xhtml_verse(obj);
+ break;
+ case "group":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ // doc_epub ~= xhtml_group(obj);
break;
case "block":
- switch (obj.is_a) {
- case "poem": // double check why both poem & verse
- break;
- case "verse":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- // doc_epub ~= xhtml_verse(obj);
- break;
- case "group":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- // doc_epub ~= xhtml_group(obj);
- break;
- case "block":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- // doc_epub ~= xhtml_block(obj);
- break;
- case "quote":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- // doc_epub ~= xhtml_quote(obj);
- break;
- case "table":
- doc_epub[segment_filename] ~= xhtml_format.para(obj); //
- // doc_epub ~= xhtml_table(obj);
- break;
- case "code":
- doc_epub[segment_filename] ~= xhtml_format.code(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ // doc_epub ~= xhtml_block(obj);
+ break;
+ case "quote":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ // doc_epub ~= xhtml_quote(obj);
+ break;
+ case "table":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj); //
+ // doc_epub ~= xhtml_table(obj);
+ break;
+ case "code":
+ doc_epub[segment_filename] ~= xhtml_format.code(obj);
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "backmatter") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "endnote":
- doc_epub[segment_filename] ~= xhtml_format.endnote(obj);
- break;
- case "glossary":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "bibliography":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "bookindex":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "blurb":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ break;
+ default:
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ break;
+ }
+ } else if (obj.use == "backmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "endnote":
+ doc_epub[segment_filename] ~= xhtml_format.endnote(obj);
+ break;
+ case "glossary":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "bibliography":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "bookindex":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "blurb":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
break;
default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
}
}
}
- writeln(doc_matters.keys_seq_seg);
- epub_write_output_files(
- doc_matters,
- doc_epub,
- mimetypes,
- meta_inf_container_xml,
- oebps_toc_ncx,
- oebps_content_opf,
- );
}
- void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)(
- C doc_matters,
- EpD doc_epub,
- Mt mimetypes,
- Mic meta_inf_container_xml,
- Ot oebps_toc_ncx,
- Oc oebps_content_opf,
- ) {
- debug(asserts){
- static assert(is(typeof(doc_epub) == string[][string]));
- static assert(is(typeof(mimetypes) == string));
- static assert(is(typeof(meta_inf_container_xml) == string));
- static assert(is(typeof(oebps_toc_ncx) == string));
- static assert(is(typeof(oebps_content_opf) == string));
- }
- mixin SiSUpaths;
- auto pth_epub = EpubPaths();
- // doc = xhtml_format.scroll_head ~ doc_epub ~ xhtml_format.tail;
- auto xhtml_format = outputXHTMLs();
- try {
- mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename));
- mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename));
- mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename));
- /+ OEBPS/[segments].xhtml +/
- foreach (seg_filename; doc_matters.segnames) {
- auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w");
- /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
- foreach (docseg; doc_epub[seg_filename]) {
- f.writeln(docseg);
- }
- f.writeln(xhtml_format.tail); // needed for each lev4
+ writeln(doc_matters.keys_seq_seg);
+ epub_write_output_files(
+ doc_matters,
+ doc_epub,
+ mimetypes,
+ meta_inf_container_xml,
+ oebps_toc_ncx,
+ oebps_content_opf,
+ );
+ }
+ void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)(
+ C doc_matters,
+ EpD doc_epub,
+ Mt mimetypes,
+ Mic meta_inf_container_xml,
+ Ot oebps_toc_ncx,
+ Oc oebps_content_opf,
+ ) {
+ debug(asserts){
+ static assert(is(typeof(doc_epub) == string[][string]));
+ static assert(is(typeof(mimetypes) == string));
+ static assert(is(typeof(meta_inf_container_xml) == string));
+ static assert(is(typeof(oebps_toc_ncx) == string));
+ static assert(is(typeof(oebps_content_opf) == string));
+ }
+ mixin SiSUpaths;
+ auto pth_epub = EpubPaths();
+ // doc = xhtml_format.scroll_head ~ doc_epub ~ xhtml_format.tail;
+ auto xhtml_format = outputXHTMLs();
+ try {
+ mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename));
+ mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename));
+ mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename));
+ /+ OEBPS/[segments].xhtml +/
+ foreach (seg_filename; doc_matters.segnames) {
+ auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w");
+ /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
+ foreach (docseg; doc_epub[seg_filename]) {
+ f.writeln(docseg);
}
- /+ mimetypes +/
- auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w");
- f.writeln(mimetypes);
- /+ META-INF/container.xml +/
- f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w");
- f.writeln(meta_inf_container_xml);
- /+ OEBPS/toc.ncx +/
- f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w");
- f.writeln(oebps_toc_ncx);
- /+ OEBPS/content.opf +/
- f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w");
- f.writeln(oebps_content_opf);
- }
- catch (ErrnoException ex) {
- // Handle error
+ f.writeln(xhtml_format.tail); // needed for each lev4
}
+ /+ mimetypes +/
+ auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w");
+ f.writeln(mimetypes);
+ /+ META-INF/container.xml +/
+ f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w");
+ f.writeln(meta_inf_container_xml);
+ /+ OEBPS/toc.ncx +/
+ f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w");
+ f.writeln(oebps_toc_ncx);
+ /+ OEBPS/content.opf +/
+ f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w");
+ f.writeln(oebps_content_opf);
+ }
+ catch (ErrnoException ex) {
+ // Handle error
}
-
}
+
}
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index 0406b3c..384576b 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -1,1618 +1,1642 @@
template outputHTML() {
- struct outputHTML {
- mixin outputXHTMLs;
-
- void scroll_write_output_file(Fn,C)(
- Fn fn_src,
- C doc,
- ) {
- debug(asserts){
- static assert(is(typeof(fn_src) == string));
- static assert(is(typeof(doc) == string[]));
- }
- mixin SiSUpaths;
- auto pth_html = HtmlPaths();
- try {
- mkdirRecurse(pth_html.base);
- auto f = File(pth_html.fn_scroll(fn_src), "w");
- foreach (o; doc) {
- f.writeln(o);
- }
- }
- catch (ErrnoException ex) {
- // Handle error
+ private import
+ std.algorithm,
+ std.array,
+ std.container,
+ std.exception,
+ std.file,
+ std.getopt,
+ std.json,
+ std.process,
+ std.stdio,
+ std.path,
+ std.range,
+ std.regex,
+ std.string,
+ std.traits,
+ std.typecons,
+ std.uni,
+ std.utf,
+ ao_defaults;
+ import
+ ao_rgx,
+ output_xhtmls;
+ mixin outputXHTMLs;
+
+ void scroll_write_output_file(Fn,C)(
+ Fn fn_src,
+ C doc,
+ ) {
+ debug(asserts){
+ static assert(is(typeof(fn_src) == string));
+ static assert(is(typeof(doc) == string[]));
+ }
+ mixin SiSUpaths;
+ auto pth_html = HtmlPaths();
+ try {
+ mkdirRecurse(pth_html.base);
+ auto f = File(pth_html.fn_scroll(fn_src), "w");
+ foreach (o; doc) {
+ f.writeln(o);
}
}
- void scroll(C,T)(
- auto ref const C contents,
- auto ref T doc_matters,
- ) {
- auto xhtml_format = outputXHTMLs();
- auto rgx = Rgx();
- string[] doc_html;
- string[] doc;
- foreach (part; doc_matters.keys_seq_scroll) {
- foreach (obj; contents[part]) {
- if (obj.use == "frontmatter") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "heading":
- doc_html ~= xhtml_format.heading(obj);
- break;
- case "toc":
- doc_html ~= xhtml_format.toc(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ catch (ErrnoException ex) {
+ // Handle error
+ }
+ }
+ void scroll(C,T)(
+ auto ref const C contents,
+ auto ref T doc_matters,
+ ) {
+ mixin SiSUrgxInit;
+ auto xhtml_format = outputXHTMLs();
+ auto rgx = Rgx();
+ string[] doc_html;
+ string[] doc;
+ foreach (part; doc_matters.keys_seq_scroll) {
+ foreach (obj; contents[part]) {
+ if (obj.use == "frontmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "heading":
+ doc_html ~= xhtml_format.heading(obj);
+ break;
+ case "toc":
+ doc_html ~= xhtml_format.toc(obj);
break;
default:
writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "body") {
- switch (obj.is_of) {
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ } else if (obj.use == "body") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "heading":
+ doc_html ~= xhtml_format.heading(obj);
+ break;
case "para":
- switch (obj.is_a) {
- case "heading":
- doc_html ~= xhtml_format.heading(obj);
- break;
- case "para":
- doc_html ~= xhtml_format.para(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_html ~= xhtml_format.para(obj);
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ break;
+ case "block":
+ switch (obj.is_a) {
+ case "poem":
+ break;
+ case "verse":
+ doc_html ~= xhtml_format.nugget(obj);
+ break;
+ case "group":
+ doc_html ~= xhtml_format.nugget(obj);
break;
case "block":
- switch (obj.is_a) {
- case "poem":
- break;
- case "verse":
- doc_html ~= xhtml_format.nugget(obj);
- break;
- case "group":
- doc_html ~= xhtml_format.nugget(obj);
- break;
- case "block":
- doc_html ~= xhtml_format.nugget(obj);
- break;
- case "quote":
- doc_html ~= xhtml_format.nugget(obj);
- break;
- case "table":
- doc_html ~= xhtml_format.para(obj); //
- break;
- case "code":
- doc_html ~= xhtml_format.code(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_html ~= xhtml_format.nugget(obj);
+ break;
+ case "quote":
+ doc_html ~= xhtml_format.nugget(obj);
+ break;
+ case "table":
+ doc_html ~= xhtml_format.para(obj); //
+ break;
+ case "code":
+ doc_html ~= xhtml_format.code(obj);
break;
default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "backmatter") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "heading":
- doc_html ~= xhtml_format.heading(obj);
- break;
- case "endnote":
- doc_html ~= xhtml_format.endnote(obj);
- break;
- case "glossary":
- doc_html ~= xhtml_format.para(obj);
- break;
- case "bibliography":
- doc_html ~= xhtml_format.para(obj);
- break;
- case "bookindex":
- doc_html ~= xhtml_format.para(obj);
- break;
- case "blurb":
- doc_html ~= xhtml_format.para(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ break;
+ }
+ } else if (obj.use == "backmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "heading":
+ doc_html ~= xhtml_format.heading(obj);
+ break;
+ case "endnote":
+ doc_html ~= xhtml_format.endnote(obj);
+ break;
+ case "glossary":
+ doc_html ~= xhtml_format.para(obj);
+ break;
+ case "bibliography":
+ doc_html ~= xhtml_format.para(obj);
+ break;
+ case "bookindex":
+ doc_html ~= xhtml_format.para(obj);
+ break;
+ case "blurb":
+ doc_html ~= xhtml_format.para(obj);
break;
default:
writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
}
}
}
- doc = xhtml_format.scroll_head(doc_matters.dochead_meta) ~ doc_html ~ xhtml_format.tail;
- scroll_write_output_file(doc_matters.source_filename, doc);
- }
- void seg_write_output_files(M,C)(
- M doc_matters,
- C doc_html,
- ) {
- debug(asserts){
- static assert(is(typeof(doc_html) == string[][string]));
- }
- mixin SiSUpaths;
- auto pth_html = HtmlPaths();
- auto xhtml_format = outputXHTMLs();
- auto m = matchFirst(doc_matters.source_filename, rgx.src_fn);
- try {
- mkdirRecurse(pth_html.seg(doc_matters.source_filename));
- foreach (seg_filename; doc_matters.segnames) {
- // writeln(__LINE__, ": ", fn);
- auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
- /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
- foreach (docseg; doc_html[seg_filename]) {
- f.writeln(docseg);
- }
- f.writeln(xhtml_format.tail); // needed for each lev4
+ }
+ doc = xhtml_format.scroll_head(doc_matters.dochead_meta) ~ doc_html ~ xhtml_format.tail;
+ scroll_write_output_file(doc_matters.source_filename, doc);
+ }
+ void seg_write_output_files(M,C)(
+ M doc_matters,
+ C doc_html,
+ ) {
+ debug(asserts){
+ static assert(is(typeof(doc_html) == string[][string]));
+ }
+ mixin SiSUrgxInit;
+ auto rgx = Rgx();
+ mixin SiSUpaths;
+ auto pth_html = HtmlPaths();
+ auto xhtml_format = outputXHTMLs();
+ auto m = matchFirst(doc_matters.source_filename, rgx.src_fn);
+ try {
+ mkdirRecurse(pth_html.seg(doc_matters.source_filename));
+ foreach (seg_filename; doc_matters.segnames) {
+ // writeln(__LINE__, ": ", fn);
+ auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
+ /+ // f.writeln(seg_head); // not needed built and inserted earlier +/
+ foreach (docseg; doc_html[seg_filename]) {
+ f.writeln(docseg);
}
- }
- catch (ErrnoException ex) {
- // Handle error
+ f.writeln(xhtml_format.tail); // needed for each lev4
}
}
- void seg(C,M)(
- auto ref const C contents,
- auto ref M doc_matters,
- ) {
- auto xhtml_format = outputXHTMLs();
- auto rgx = Rgx();
- string[][string] doc_html;
- string[] doc;
- string segment_filename;
- string[] top_level_headings = ["","","",""];
- foreach (part; doc_matters.keys_seq_seg) {
- foreach (obj; contents[part]) {
- if (obj.is_a == "heading") { // all headings: frontmatter, body & backmatter
+ catch (ErrnoException ex) {
+ // Handle error
+ }
+ }
+ void seg(C,M)(
+ auto ref const C contents,
+ auto ref M doc_matters,
+ ) {
+ mixin SiSUrgxInit;
+ auto rgx = Rgx();
+ auto xhtml_format = outputXHTMLs();
+ string[][string] doc_html;
+ string[] doc;
+ string segment_filename;
+ string[] top_level_headings = ["","","",""];
+ foreach (part; doc_matters.keys_seq_seg) {
+ foreach (obj; contents[part]) {
+ if (obj.is_a == "heading") { // all headings: frontmatter, body & backmatter
+ switch (obj.heading_lev_markup) {
+ case 0: .. case 3:
+ /+ fill buffer, and replace with new levels from 1 to 3 +/
switch (obj.heading_lev_markup) {
- case 0: .. case 3:
- /+ fill buffer, and replace with new levels from 1 to 3 +/
- switch (obj.heading_lev_markup) {
- case 0:
- top_level_headings[0] = "";
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 1:
- top_level_headings[1] = "";
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 2:
- top_level_headings[2] = "";
- top_level_headings[3] = "";
- goto default;
- case 3:
- top_level_headings[3] = "";
- goto default;
- default:
- top_level_headings[obj.heading_lev_markup] = xhtml_format.heading(obj); // should probably have different css tagging (fontsize etc)
- break;
- }
- break;
- case 4:
- segment_filename = obj.segment_anchor_tag;
- doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info
- foreach (top_level_heading; top_level_headings) {
- // writeln(top_level_heading);
- doc_html[segment_filename] ~= top_level_heading;
- }
- doc_html[segment_filename] ~= xhtml_format.heading(obj);
- break;
- case 5: .. case 7:
- doc_html[segment_filename] ~= xhtml_format.heading(obj);
+ case 0:
+ top_level_headings[0] = "";
+ top_level_headings[1] = "";
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 1:
+ top_level_headings[1] = "";
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 2:
+ top_level_headings[2] = "";
+ top_level_headings[3] = "";
+ goto default;
+ case 3:
+ top_level_headings[3] = "";
+ goto default;
+ default:
+ top_level_headings[obj.heading_lev_markup] = xhtml_format.heading(obj); // should probably have different css tagging (fontsize etc)
break;
+ }
+ break;
+ case 4:
+ segment_filename = obj.segment_anchor_tag;
+ doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info
+ foreach (top_level_heading; top_level_headings) {
+ // writeln(top_level_heading);
+ doc_html[segment_filename] ~= top_level_heading;
+ }
+ doc_html[segment_filename] ~= xhtml_format.heading(obj);
+ break;
+ case 5: .. case 7:
+ doc_html[segment_filename] ~= xhtml_format.heading(obj);
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ } else if (obj.use == "frontmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "toc":
+ doc_html[segment_filename] ~= xhtml_format.toc(obj);
+ break;
default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "frontmatter") {
- switch (obj.is_of) {
+ break;
+ default:
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
+ }
+ } else if (obj.use == "body") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
case "para":
- switch (obj.is_a) {
- case "toc":
- doc_html[segment_filename] ~= xhtml_format.toc(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
break;
default:
// writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "body") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "para":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ break;
+ case "block":
+ switch (obj.is_a) {
+ case "poem": // double check why both poem & verse
+ break;
+ case "verse":
+ doc_html[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "group":
+ doc_html[segment_filename] ~= xhtml_format.nugget(obj);
break;
case "block":
- switch (obj.is_a) {
- case "poem": // double check why both poem & verse
- break;
- case "verse":
- doc_html[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "group":
- doc_html[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "block":
- doc_html[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "quote":
- doc_html[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "table":
- doc_html[segment_filename] ~= xhtml_format.para(obj); //
- break;
- case "code":
- doc_html[segment_filename] ~= xhtml_format.code(obj);
- break;
- default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ doc_html[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "quote":
+ doc_html[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "table":
+ doc_html[segment_filename] ~= xhtml_format.para(obj); //
+ break;
+ case "code":
+ doc_html[segment_filename] ~= xhtml_format.code(obj);
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
- } else if (obj.use == "backmatter") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
- case "endnote":
- doc_html[segment_filename] ~= xhtml_format.endnote(obj);
- break;
- case "glossary":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "bibliography":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "bookindex":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
- break;
- case "blurb":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
- }
+ break;
+ default:
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ break;
+ }
+ } else if (obj.use == "backmatter") {
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "endnote":
+ doc_html[segment_filename] ~= xhtml_format.endnote(obj);
+ break;
+ case "glossary":
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "bibliography":
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "bookindex":
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ case "blurb":
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
break;
default:
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
break;
}
+ break;
+ default:
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ break;
}
}
}
- writeln(doc_matters.keys_seq_seg);
- seg_write_output_files(doc_matters, doc_html);
- }
- auto html_css() {
- string css;
- css="/* SiSU css default stylesheet */
- body {
- color: black;
- background: #ffffff;
- background-color: #ffffff;
- }
- a:link {
- color: #003399;
- text-decoration: none;
- }
- a:visited {
- color: #003399;
- text-decoration: none;
- }
- a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
- a.lnkocn:link {
- color: #777777;
- text-decoration: none;
- }
- a:hover img {
- background-color: #ffffff;
- }
- a:active {
- color: #003399;
- text-decoration: underline;
- }
- div {
- margin-left: 0;
- margin-right: 0;
- }
- div.p {
- margin-left: 5%;
- margin-right: 1%;
- }
- #top_band {
- position: absolute;
- top: 0;
- bottom: 80px;
- width: 100%;
- }
- #top_band_search {
- position: absolute;
- top: 0px;
- right: 0px;
- margin-left: 75%;
- width: 20%;
- }
- #column_left {
- position: absolute;
- top: 80px;
- left: 0;
- margin-left: 1%;
- width: 20%;
- }
- #column_center {
- position: absolute;
- top: 80px;
- margin-left: 20%;
- width: 55%;
- }
- #column_right {
- position: absolute;
- top: 80px;
- right: 0px;
- margin-left: 75%;
- width: 25%;
- }
- #pane_major {
- position: absolute;
- top: 0px;
- left: 0;
- margin-left: 0;
- width: 80%;
- }
- #pane_minor {
- position: absolute;
- top: 0px;
- right: 0px;
- margin-left: 75%;
- width: 20%;
- background-color: #aaaaaa;
- }
- .norm, .bold, .verse, .group, .block, .alt {
- line-height: 133%;
- margin-left: 0em;
- margin-right: 2em;
- margin-top: 12px;
- margin-bottom: 0px;
- padding-left: 0em;
- text-indent: 0em;
- }
- p, h0, h1, h2, h3, h4, h5, h6, h7 {
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-size: 100%;
- font-weight: normal;
- line-height: 133%;
- text-align: justify;
- margin-left: 0em;
- margin-right: 2em;
- text-indent: 0mm;
- margin-top: 0.8em;
- margin-bottom: 0.8em;
- }
- /* indent */
- p.norm { }
- p.i1 {padding-left: 1em;}
- p.i2 {padding-left: 2em;}
- p.i3 {padding-left: 3em;}
- p.i4 {padding-left: 4em;}
- p.i5 {padding-left: 5em;}
- p.i6 {padding-left: 6em;}
- p.i7 {padding-left: 7em;}
- p.i8 {padding-left: 8em;}
- p.i9 {padding-left: 9em;}
- /* hanging indent */
- p.h0i0 {
- padding-left: 0em;
- text-indent: 0em;
- }
- p.h0i1 {
- padding-left: 1em;
- text-indent: -1em;
- }
- p.h0i2 {
- padding-left: 2em;
- text-indent: -2em;
- }
- p.h0i3 {
- padding-left: 3em;
- text-indent: -3em;
- }
- p.h0i4 {
- padding-left: 4em;
- text-indent: -4em;
- }
- p.h0i5 {
- padding-left: 5em;
- text-indent: -5em;
- }
- p.h0i6 {
- padding-left: 6em;
- text-indent: -6em;
- }
- p.h0i7 {
- padding-left: 7em;
- text-indent: -7em;
- }
- p.h0i8 {
- padding-left: 8em;
- text-indent: -8em;
- }
- p.h0i9 {
- padding-left: 9em;
- text-indent: -9em;
- }
- p.h1i0 {
- padding-left: 0em;
- text-indent: 1em;
- }
- p.h1i1 {
- padding-left: 1em;
- text-indent: 0em;
- }
- p.h1i2 {
- padding-left: 2em;
- text-indent: -1em;
- }
- p.h1i3 {
- padding-left: 3em;
- text-indent: -2em;
- }
- p.h1i4 {
- padding-left: 4em;
- text-indent: -3em;
- }
- p.h1i5 {
- padding-left: 5em;
- text-indent: -4em;
- }
- p.h1i6 {
- padding-left: 6em;
- text-indent: -5em;
- }
- p.h1i7 {
- padding-left: 7em;
- text-indent: -6em;
- }
- p.h1i8 {
- padding-left: 8em;
- text-indent: -7em;
- }
- p.h1i9 {
- padding-left: 9em;
- text-indent: -8em;
- }
- p.h2i0 {
- padding-left: 0em;
- text-indent: 2em;
- }
- p.h2i1 {
- padding-left: 1em;
- text-indent: 1em;
- }
- p.h2i2 {
- padding-left: 2em;
- text-indent: 0em;
- }
- p.h2i3 {
- padding-left: 3em;
- text-indent: -1em;
- }
- p.h2i4 {
- padding-left: 4em;
- text-indent: -2em;
- }
- p.h2i5 {
- padding-left: 5em;
- text-indent: -3em;
- }
- p.h2i6 {
- padding-left: 6em;
- text-indent: -4em;
- }
- p.h2i7 {
- padding-left: 7em;
- text-indent: -5em;
- }
- p.h2i8 {
- padding-left: 8em;
- text-indent: -6em;
- }
- p.h2i9 {
- padding-left: 9em;
- text-indent: -7em;
- }
- p.h3i0 {
- padding-left: 0em;
- text-indent: 3em;
- }
- p.h3i1 {
- padding-left: 1em;
- text-indent: 2em;
- }
- p.h3i2 {
- padding-left: 2em;
- text-indent: 1em;
- }
- p.h3i3 {
- padding-left: 3em;
- text-indent: 0em;
- }
- p.h3i4 {
- padding-left: 4em;
- text-indent: -1em;
- }
- p.h3i5 {
- padding-left: 5em;
- text-indent: -2em;
- }
- p.h3i6 {
- padding-left: 6em;
- text-indent: -3em;
- }
- p.h3i7 {
- padding-left: 7em;
- text-indent: -4em;
- }
- p.h3i8 {
- padding-left: 8em;
- text-indent: -5em;
- }
- p.h3i9 {
- padding-left: 9em;
- text-indent: -6em;
- }
- p.h4i0 {
- padding-left: 0em;
- text-indent: 4em;
- }
- p.h4i1 {
- padding-left: 1em;
- text-indent: 3em;
- }
- p.h4i2 {
- padding-left: 2em;
- text-indent: 2em;
- }
- p.h4i3 {
- padding-left: 3em;
- text-indent: 1em;
- }
- p.h4i4 {
- padding-left: 4em;
- text-indent: 0em;
- }
- p.h4i5 {
- padding-left: 5em;
- text-indent: -1em;
- }
- p.h4i6 {
- padding-left: 6em;
- text-indent: -2em;
- }
- p.h4i7 {
- padding-left: 7em;
- text-indent: -3em;
- }
- p.h4i8 {
- padding-left: 8em;
- text-indent: -4em;
- }
- p.h4i9 {
- padding-left: 9em;
- text-indent: -5em;
- }
- p.h5i0 {
- padding-left: 0em;
- text-indent: 5em;
- }
- p.h5i1 {
- padding-left: 1em;
- text-indent: 4em;
- }
- p.h5i2 {
- padding-left: 2em;
- text-indent: 3em;
- }
- p.h5i3 {
- padding-left: 3em;
- text-indent: 2em;
- }
- p.h5i4 {
- padding-left: 4em;
- text-indent: 1em;
- }
- p.h5i5 {
- padding-left: 5em;
- text-indent: 0em;
- }
- p.h5i6 {
- padding-left: 6em;
- text-indent: -1em;
- }
- p.h5i7 {
- padding-left: 7em;
- text-indent: -2em;
- }
- p.h5i8 {
- padding-left: 8em;
- text-indent: -3em;
- }
- p.h5i9 {
- padding-left: 9em;
- text-indent: -4em;
- }
- p.h6i0 {
- padding-left: 0em;
- text-indent: 6em;
- }
- p.h6i1 {
- padding-left: 1em;
- text-indent: 5em;
- }
- p.h6i2 {
- padding-left: 2em;
- text-indent: 4em;
- }
- p.h6i3 {
- padding-left: 3em;
- text-indent: 3em;
- }
- p.h6i4 {
- padding-left: 4em;
- text-indent: 2em;
- }
- p.h6i5 {
- padding-left: 5em;
- text-indent: 1em;
- }
- p.h6i6 {
- padding-left: 6em;
- text-indent: 0em;
- }
- p.h6i7 {
- padding-left: 7em;
- text-indent: -1em;
- }
- p.h6i8 {
- padding-left: 8em;
- text-indent: -2em;
- }
- p.h6i9 {
- padding-left: 9em;
- text-indent: -3em;
- }
- p.h7i0 {
- padding-left: 0em;
- text-indent: 7em;
- }
- p.h7i1 {
- padding-left: 1em;
- text-indent: 6em;
- }
- p.h7i2 {
- padding-left: 2em;
- text-indent: 5em;
- }
- p.h7i3 {
- padding-left: 3em;
- text-indent: 4em;
- }
- p.h7i4 {
- padding-left: 4em;
- text-indent: 3em;
- }
- p.h7i5 {
- padding-left: 5em;
- text-indent: 2em;
- }
- p.h7i6 {
- padding-left: 6em;
- text-indent: 1em;
- }
- p.h7i7 {
- padding-left: 7em;
- text-indent: 0em;
- }
- p.h7i8 {
- padding-left: 8em;
- text-indent: -1em;
- }
- p.h7i9 {
- padding-left: 9em;
- text-indent: -2em;
- }
- p.h8i0 {
- padding-left: 0em;
- text-indent: 8em;
- }
- p.h8i1 {
- padding-left: 1em;
- text-indent: 7em;
- }
- p.h8i2 {
- padding-left: 2em;
- text-indent: 6em;
- }
- p.h8i3 {
- padding-left: 3em;
- text-indent: 5em;
- }
- p.h8i4 {
- padding-left: 4em;
- text-indent: 4em;
- }
- p.h8i5 {
- padding-left: 5em;
- text-indent: 3em;
- }
- p.h8i6 {
- padding-left: 6em;
- text-indent: 2em;
- }
- p.h8i7 {
- padding-left: 7em;
- text-indent: 1em;
- }
- p.h8i8 {
- padding-left: 8em;
- text-indent: 0em;
- }
- p.h8i9 {
- padding-left: 9em;
- text-indent: -1em;
- }
- p.h9i0 {
- padding-left: 0em;
- text-indent: 9em;
- }
- p.h9i1 {
- padding-left: 1em;
- text-indent: 8em;
- }
- p.h9i2 {
- padding-left: 2em;
- text-indent: 7em;
- }
- p.h9i3 {
- padding-left: 3em;
- text-indent: 6em;
- }
- p.h9i4 {
- padding-left: 4em;
- text-indent: 5em;
- }
- p.h9i5 {
- padding-left: 5em;
- text-indent: 4em;
- }
- p.h9i6 {
- padding-left: 6em;
- text-indent: 3em;
- }
- p.h9i7 {
- padding-left: 7em;
- text-indent: 2em;
- }
- p.h9i8 {
- padding-left: 8em;
- text-indent: 1em;
- }
- p.h9i9 {
- padding-left: 9em;
- text-indent: 0em;
- }
- p.it0 {
- margin-left: 0em;
- margin-top: 6px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it1 {
- margin-left: 1em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it2 {
- margin-left: 2em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it3 {
- margin-left: 3em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it4 {
- margin-left: 4em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it5 {
- margin-left: 5em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it6 {
- margin-left: 6em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it7 {
- margin-left: 7em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it8 {
- margin-left: 8em;
- margin-top: 0px;
- margin-bottom: 0px;
- line-height: 100%;
- }
- p.it9 {
- margin-left: 9em;
- margin-bottom: 0px;
- margin-top: 0px;
- line-height: 100%;
- }
- p.block { }
- p.group { }
- p.alt { }
- p.verse {
- margin-bottom: 6px;
- }
- p.code {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- font-size: 90%;
- text-align: left;
- background-color: #eeeeee;
- }
- p.caption {
- text-align: left;
- font-size: 80%;
- display: inline;
- }
- p.endnote {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-right: 15mm;
- }
- p.endnote_indent {
- font-size: 96%;
- line-height: 120%;
- text-align: left;
- margin-left: 2em;
- margin-right: 15mm;
- }
- p.center {
- text-align: center;
- }
- p.bold {
- font-weight: bold;
- }
- p.bold_left {
- font-weight: bold;
- text-align: left;
- }
- p.centerbold {
- text-align: center;
- font-weight: bold;
- }
- p.em {
- font-weight: bold;
- font-style: normal;
- background: #fff3b6;
- }
- p.small {
- font-size: 80%;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 6px;
- text-align: left;
- }
- .tiny, .tiny_left, .tiny_right, .tiny_center {
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 6px;
- text-align: left;
- }
- p.tiny { }
- p.tiny_left {
- margin-left: 0px;
- margin-right: 0px;
- text-align: left;
- }
- p.tiny_right {
- margin-right: 1em;
- text-align: right;
- }
- p.tiny_center {
- margin-left: 0px;
- margin-right: 0px;
- text-align: center;
- }
- p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent {
- font-size: 80%;
- margin-top: 0px;
- margin-bottom: 0px;
- margin-left: 2mm;
- margin-right: 4px;
- text-align: left;
- }
- p.pane { }
- p.pane_title {
- font-weight: bold;
- margin-bottom: 0px;
- }
- p.pane_blurb {
- font-size: 10px;
- margin-bottom: 0px;
- }
- p.pane_link {
- font-size: 10px;
- margin-bottom: 0px;
- margin-left: 4mm;
- }
- p.pane_indent {
- font-size: 10px;
- margin-bottom: 0px;
- margin-left: 4mm;
- }
- p.concordance_word {
- line-height: 150%;
- font-weight: bold;
- display: inline;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.concordance_count {
- font-size: 80%;
- color: #777777;
- display: inline;
- margin-left: 0em;
- }
- p.concordance_object {
- font-size: 80%;
- line-height: 120%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
- p.book_index_lev1 {
- line-height: 100%;
- margin-top: 4px;
- margin-bottom: 1px;
- }
- p.book_index_lev2 {
- line-height: 100%;
- text-align: left;
- margin-left: 3em;
- margin-top: 1px;
- margin-bottom: 3px;
- }
- p.quickref {
- font-size: 10px;
- font-style: italic;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: left;
- }
- p.bigref {
- font-size: 11px;
- font-weight: bold;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-right: 5px;
- text-align: center;
- }
- p.letter {
- font-weight: bold;
- font-size: 80%;
- margin-left: 0em;
- margin-top: 2px;
- margin-bottom: 2px;
- margin-right: 6px;
- text-align: left;
- color: white;
- background: #880000;
- }
- tt {
- font-family: inconsolata, andale mono, courier new, courier, monospace;
- background-color: #eeeeee;
- }
- label.ocn {
- width: 2%;
- float: right;
- top: 0;
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 5px;
- color: #777777;
- margin-right: 5px;
- text-align: right;
- background-color: #ffffff;
- }
- table { }
- tr { }
- th,td {
- vertical-align: top;
- text-align: left;
- }
- th {
- font-weight: bold;
- }
- p.left,th.left,td.left {
- text-align: left;
- }
- p.small_left,th.small_left,td.small_left {
- text-align: left;
- font-size: 80%;
- }
- p.right,th.right,td.right {
- text-align: right;
- }
- #horizontal_links {
- background: #eeeeee;
- margin-left: 5%;
- margin-right: 5%;
- }
- #horizontal {
- margin: 0;
- padding: 0 0 0 10px;
- border-top: 1px solid #000077;
- border-bottom: 1px solid #000077;
- }
- #horizontal li {
- margin: 0 0 0 0;
- padding: 0 16px 0 0;
- display: inline;
- list-style-type: none;
- text-align: left;
- background: none;
- }
- #horizontal a {
- line-height: 12px;
- margin: 0 0 0 0;
- text-decoration: none;
- color: #000077;
- }
- #horizontal a.active, #horizontal a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
- #horizontal a:hover {
- color: #000077;
- }
- #document_versions {
- position: absolute;
- top: 10mm;
- right: 2%;
- width: 12%;
- float: right;
- }
- #vertical_links {
- position: absolute;
- top: 10mm;
- right: 0px;
- width: 20%;
- background: #dddddd;
- float: right;
- }
- #vertical {
- padding: 0 12px 0px 0px;
- margin-left: 2%;
- margin-right: 2%;
- }
- #vertical li {
- display: block;
- list-style-type: none;
- }
- #vertical a {
- line-height: 12px;
- text-decoration: none;
- color: #000077;
- }
- #vertical a.active, #vertical a:hover {
- border-bottom: 2px solid #777777;
- padding-bottom: 2px;
- color: #000077;
- }
- ul, li {
- list-style-type: none;
- list-style: none;
- padding-left: 20px;
- display: block;
- font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
- font-weight: normal;
- line-height: 150%;
- text-align: left;
- text-indent: 0mm;
- margin-left: 1em;
- margin-right: 2em;
- margin-top: 3px;
- margin-bottom: 3px;
- }
- li {
- background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
- }
- ul {
- }
- li.bullet { margin-left: 1em; }
- li.i1 { margin-left: 2em; }
- li.i2 { margin-left: 3em; }
- li.i3 { margin-left: 4em; }
- li.i4 { margin-left: 5em; }
- li.i5 { margin-left: 6em; }
- li.i6 { margin-left: 7em; }
- li.i7 { margin-left: 8em; }
- li.i8 { margin-left: 9em; }
- li.i9 { margin-left: 10em; }
- li.doc, li.ref, li.refcenter {
- margin-top: 0px;
- margin-bottom: 0px;
- margin-right: 0px;
- font-size: 8px;
- font-style: normal;
- text-align: left;
- }
- li.doc {
- background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
- padding-left: 16px;
- margin-left: 10px;
- margin-right: 0px;
- }
- li.ref {
- background: none;
- padding-left: 0;
- margin-left: 0;
- color: #777777;
- }
- li.refcenter {
- background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
- padding-left: 20px;
- margin-left: 10%;
- font-size: 9px;
- color: #777777;
- text-align: center;
- }
- li.refbold {
- list-style-type: none;
- padding-left: 16px;
- margin-left: 0;
- margin-right: 10mm;
- font-weight: bold;
- }
- h0, h1, h2, h3, h4, h5, h6, h7 {
- font-weight: bold;
- line-height: 120%;
- text-align: left;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- h4.norm, h5.norm, h6.norm, h7.norm {
- margin-top: 10px;
- margin-bottom: 0px;
- }
- h0.center, h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {
- text-align: center;
- }
- h0 { font-size: 125%; }
- h1 { font-size: 120%; }
- h2 { font-size: 115%; }
- h3 { font-size: 110%; }
- h4 { font-size: 105%; }
- h5 { font-size: 100%; }
- h6 { font-size: 100%; }
- h7 { font-size: 100%; }
- h1.i {margin-left: 2em;}
- h2.i {margin-left: 3em;}
- h3.i {margin-left: 4em;}
- h4.i {margin-left: 5em;}
- h5.i {margin-left: 6em;}
- h6.i {margin-left: 7em;}
- h7.i {margin-left: 8em;}
- h8.i {margin-left: 9em;}
- h9.i {margin-left: 10em;}
- h1.top_band {
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 4mm;
- text-indent: 0mm;
- font-weight: bold;
- font-size: 120%;
- }
- h2.top_band_tiny {
- font-size: 10px;
- font-weight: normal;
- margin-top: 0px;
- margin-left: 4mm;
- text-indent: 0mm;
- margin-bottom: 0px;
- color: #777777;
- margin-left: 140px;
- margin-right: 0px;
- text-align: left;
- }
- p.top_band {
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 140px;
- text-indent: 0mm;
- font-weight: bold;
- font-size: 120%;
- }
- p.top_band_tiny {
- font-size: 10px;
- margin-top: 0px;
- margin-bottom: 0px;
- color: #777777;
- margin-left: 140px;
- margin-right: 0px;
- text-align: left;
- }
- p.top_band_image {
- float: left;
- display: inline;
- text-align: left;
- margin-top: 0;
- margin-left: 1mm;
- text-indent: 0mm;
- margin-right: 1mm;
- }
- .banner, .subbanner {
- font-weight: bold;
- text-align: center;
- margin-left: 10mm;
- margin-right: 15mm;
- margin-top: 20px;
- margin-bottom: 10px;
- }
- h0.banner {
- font-size: 125%;
- }
- h1.banner {
- font-size: 120%;
- }
- h1.subbanner {
- font-size: 115%;
- }
- h2.banner {
- font-size: 110%;
- }
- h3.banner {
- color: #990000;
- font-size: 105%;
- }
- h4.banner {
- color: #ff0000;
- font-size: 100%;
- }
- h5.banner {
- }
- h6.banner {
- }
- h7.banner {
- }
- .toc {
- font-weight: normal;
- margin-top: 6px;
- margin-bottom: 6px;
- }
- h0.toc {
- margin-left: 1em;
- font-size: 120%;
- line-height: 150%;
- }
- h1.toc {
- margin-left: 1em;
- font-size: 115%;
- line-height: 150%;
- }
- h2.toc {
- margin-left: 2em;
- font-size: 110%;
- line-height: 140%;
- }
- h3.toc {
- margin-left: 3em;
- font-size: 105%;
- line-height: 120%;
- }
- h4.toc {
- margin-left: 4em;
- font-size: 100%;
- line-height: 120%;
- }
- h5.toc {
- margin-left: 5em;
- font-size: 95%;
- line-height: 110%;
- }
- h6.toc {
- margin-left: 6em;
- font-size: 90%;
- line-height: 110%;
- }
- h7.toc {
- margin-left: 7em;
- font-size: 85%;
- line-height: 100%;
- }
- .microtoc {
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h0.microtoc {
- margin-left: 0mm;
- font-size: 120%;
- }
- h1.microtoc {
- margin-left: 0mm;
- font-size: 115%;
- }
- h2.microtoc {
- margin-left: 5mm;
- font-size: 110%;
- }
- h3.microtoc {
- margin-left: 10mm;
- font-size: 105%;
- }
- h4.microtoc {
- margin-left: 15mm;
- font-weight: normal;
- font-size: 100%;
- }
- h5.microtoc {
- margin-left: 20mm;
- font-weight: normal;
- font-size: 95%;
- }
- h6.microtoc {
- margin-left: 25mm;
- font-weight: normal;
- font-size: 90%;
- }
- h7.microtoc {
- margin-left: 30mm;
- font-weight: normal;
- font-size: 85%;
- }
- .subtoc {
- margin-right: 34%;
- font-weight: normal;
- }
- h5.subtoc {
- margin-left: 2em;
- font-size: 80%;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h6.subtoc {
- margin-left: 3em;
- font-size: 75%;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- h7.subtoc {
- margin-left: 4em;
- font-size: 70%;
- margin-top: 0px;
- margin-bottom: 0px;
- }
- div.substance {
- width: 100%;
- background-color: #ffffff;
- }
- div.ocn {
- width: 5%;
- float: right;
- top: 0;
- background-color: #ffffff;
- }
- div.endnote {
- width: 95%;
- background-color: #fffffff;
- }
- div.toc {
- position: absolute;
- float: left;
- margin: 0;
- padding: 0;
- padding-top: 0.5em;
- border: 0;
- width: 13em;
- background-color: #eeeeee;
- margin-right:1em;
- }
- div.summary {
- margin: 0;
- padding: 0;
- border-left: 13em solid #eeeeee;
- padding-left: 1em;
- background-color: #eeeeee;
- }
- div.content, div.main_column {
- margin: 0;
- padding: 0;
- border-left: 13em solid #ffffff;
- padding-left: 1em;
- padding-right: 1em;
- }
- div.content0, div.main_column0 {
- margin: 0;
- padding: 0;
- border-left: 0% solid #ffffff;
- padding-left: 5%;
- }
- div.scroll {
- margin: 0;
- padding: 0;
- padding-left: 1em;
- padding-right: 1em;
- }
- div.content:after {
- content:' ';
- clear:both;
- display:block;
- height:0;
- overflow:hidden
- }
- div.footer {
- clear:left;
- padding: 0.5em;
- font-size: 80%;
- margin: 0;
- }
- div.toc ul {
- list-style: none;
- padding: 0;
- margin: 0;
- }
- div.toc li ul a, li ul span.currentlink
- {
- font-weight: normal;
- font-size: 90%;
- padding-left: 2em;
- background-color: #eeeeee;
- }
- div.toc a, span.currentlink{
- display:block;
- text-decoration: none;
- padding-left: 0.5em;
- color: #0000aa;
- }
- hr {
- width: 90%;
- }
- span.currentlink {
- text-decoration: none;
- background-color: #aaaaf9;
- }
- div.toc a:visited {
- color: #0000aa;
- }
- div.toc a:hover {
- color: #000000;
- background-color: #f9f9aa;
- }
- .minitoc {
- font-weight: normal;
- margin-top: 2px;
- margin-bottom: 2px;
- }
- h1.minitoc, h2.minitoc, h3.minitoc {
- margin-left: 0em;
- font-weight: bold;
- text-align: left;
- font-size: 90%;
- margin-top: 4px;
- margin-bottom: 4px;
- }
- h4.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
- h5.minitoc {
- margin-left: 1em;
- font-size: 85%;
- }
- h6.minitoc {
- margin-left: 2em;
- font-size: 85%;
- }
- h7.minitoc {
- margin-left: 3em;
- font-size: 80%;
- }
- h0.minitoc {
- margin-left: 0em;
- font-size: 90%;
- }
- h0.c, h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {
- text-align: center
- }
- h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {
- text-align: center;
- color: #ff0000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }
- h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {
- text-align: center;
- color: #990000;
- margin-left: 5mm;
- text-indent: 5mm;
- margin-top: 30px;
- margin-bottom: 20px;
- margin-right: 15mm;
- }";
- return css;
- }
- auto css_write() {
- auto pth_css= "_sisu/css";
- auto pth_css_fn= pth_css ~ "/html.css";
- try {
- mkdirRecurse(pth_css);
- auto f = File(pth_css_fn, "w");
- f.writeln(html_css);
- // foreach (o; doc) {
- // f.writeln(o);
- // }
- }
- catch (ErrnoException ex) {
- // Handle error
- }
+ }
+ writeln(doc_matters.keys_seq_seg);
+ seg_write_output_files(doc_matters, doc_html);
+ }
+ auto html_css() {
+ string css;
+ css="/* SiSU css default stylesheet */
+ body {
+ color: black;
+ background: #ffffff;
+ background-color: #ffffff;
+ }
+ a:link {
+ color: #003399;
+ text-decoration: none;
+ }
+ a:visited {
+ color: #003399;
+ text-decoration: none;
+ }
+ a:hover {
+ color: #000000;
+ background-color: #f9f9aa;
+ }
+ a.lnkocn:link {
+ color: #777777;
+ text-decoration: none;
+ }
+ a:hover img {
+ background-color: #ffffff;
+ }
+ a:active {
+ color: #003399;
+ text-decoration: underline;
+ }
+ div {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ div.p {
+ margin-left: 5%;
+ margin-right: 1%;
+ }
+ #top_band {
+ position: absolute;
+ top: 0;
+ bottom: 80px;
+ width: 100%;
+ }
+ #top_band_search {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ margin-left: 75%;
+ width: 20%;
+ }
+ #column_left {
+ position: absolute;
+ top: 80px;
+ left: 0;
+ margin-left: 1%;
+ width: 20%;
+ }
+ #column_center {
+ position: absolute;
+ top: 80px;
+ margin-left: 20%;
+ width: 55%;
+ }
+ #column_right {
+ position: absolute;
+ top: 80px;
+ right: 0px;
+ margin-left: 75%;
+ width: 25%;
+ }
+ #pane_major {
+ position: absolute;
+ top: 0px;
+ left: 0;
+ margin-left: 0;
+ width: 80%;
+ }
+ #pane_minor {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ margin-left: 75%;
+ width: 20%;
+ background-color: #aaaaaa;
+ }
+ .norm, .bold, .verse, .group, .block, .alt {
+ line-height: 133%;
+ margin-left: 0em;
+ margin-right: 2em;
+ margin-top: 12px;
+ margin-bottom: 0px;
+ padding-left: 0em;
+ text-indent: 0em;
+ }
+ p, h0, h1, h2, h3, h4, h5, h6, h7 {
+ display: block;
+ font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
+ font-size: 100%;
+ font-weight: normal;
+ line-height: 133%;
+ text-align: justify;
+ margin-left: 0em;
+ margin-right: 2em;
+ text-indent: 0mm;
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+ }
+ /* indent */
+ p.norm { }
+ p.i1 {padding-left: 1em;}
+ p.i2 {padding-left: 2em;}
+ p.i3 {padding-left: 3em;}
+ p.i4 {padding-left: 4em;}
+ p.i5 {padding-left: 5em;}
+ p.i6 {padding-left: 6em;}
+ p.i7 {padding-left: 7em;}
+ p.i8 {padding-left: 8em;}
+ p.i9 {padding-left: 9em;}
+ /* hanging indent */
+ p.h0i0 {
+ padding-left: 0em;
+ text-indent: 0em;
+ }
+ p.h0i1 {
+ padding-left: 1em;
+ text-indent: -1em;
+ }
+ p.h0i2 {
+ padding-left: 2em;
+ text-indent: -2em;
+ }
+ p.h0i3 {
+ padding-left: 3em;
+ text-indent: -3em;
+ }
+ p.h0i4 {
+ padding-left: 4em;
+ text-indent: -4em;
+ }
+ p.h0i5 {
+ padding-left: 5em;
+ text-indent: -5em;
+ }
+ p.h0i6 {
+ padding-left: 6em;
+ text-indent: -6em;
+ }
+ p.h0i7 {
+ padding-left: 7em;
+ text-indent: -7em;
+ }
+ p.h0i8 {
+ padding-left: 8em;
+ text-indent: -8em;
+ }
+ p.h0i9 {
+ padding-left: 9em;
+ text-indent: -9em;
+ }
+ p.h1i0 {
+ padding-left: 0em;
+ text-indent: 1em;
+ }
+ p.h1i1 {
+ padding-left: 1em;
+ text-indent: 0em;
+ }
+ p.h1i2 {
+ padding-left: 2em;
+ text-indent: -1em;
+ }
+ p.h1i3 {
+ padding-left: 3em;
+ text-indent: -2em;
+ }
+ p.h1i4 {
+ padding-left: 4em;
+ text-indent: -3em;
+ }
+ p.h1i5 {
+ padding-left: 5em;
+ text-indent: -4em;
+ }
+ p.h1i6 {
+ padding-left: 6em;
+ text-indent: -5em;
+ }
+ p.h1i7 {
+ padding-left: 7em;
+ text-indent: -6em;
+ }
+ p.h1i8 {
+ padding-left: 8em;
+ text-indent: -7em;
+ }
+ p.h1i9 {
+ padding-left: 9em;
+ text-indent: -8em;
+ }
+ p.h2i0 {
+ padding-left: 0em;
+ text-indent: 2em;
+ }
+ p.h2i1 {
+ padding-left: 1em;
+ text-indent: 1em;
+ }
+ p.h2i2 {
+ padding-left: 2em;
+ text-indent: 0em;
+ }
+ p.h2i3 {
+ padding-left: 3em;
+ text-indent: -1em;
+ }
+ p.h2i4 {
+ padding-left: 4em;
+ text-indent: -2em;
+ }
+ p.h2i5 {
+ padding-left: 5em;
+ text-indent: -3em;
+ }
+ p.h2i6 {
+ padding-left: 6em;
+ text-indent: -4em;
+ }
+ p.h2i7 {
+ padding-left: 7em;
+ text-indent: -5em;
+ }
+ p.h2i8 {
+ padding-left: 8em;
+ text-indent: -6em;
+ }
+ p.h2i9 {
+ padding-left: 9em;
+ text-indent: -7em;
+ }
+ p.h3i0 {
+ padding-left: 0em;
+ text-indent: 3em;
+ }
+ p.h3i1 {
+ padding-left: 1em;
+ text-indent: 2em;
+ }
+ p.h3i2 {
+ padding-left: 2em;
+ text-indent: 1em;
+ }
+ p.h3i3 {
+ padding-left: 3em;
+ text-indent: 0em;
+ }
+ p.h3i4 {
+ padding-left: 4em;
+ text-indent: -1em;
+ }
+ p.h3i5 {
+ padding-left: 5em;
+ text-indent: -2em;
+ }
+ p.h3i6 {
+ padding-left: 6em;
+ text-indent: -3em;
+ }
+ p.h3i7 {
+ padding-left: 7em;
+ text-indent: -4em;
+ }
+ p.h3i8 {
+ padding-left: 8em;
+ text-indent: -5em;
+ }
+ p.h3i9 {
+ padding-left: 9em;
+ text-indent: -6em;
+ }
+ p.h4i0 {
+ padding-left: 0em;
+ text-indent: 4em;
+ }
+ p.h4i1 {
+ padding-left: 1em;
+ text-indent: 3em;
+ }
+ p.h4i2 {
+ padding-left: 2em;
+ text-indent: 2em;
+ }
+ p.h4i3 {
+ padding-left: 3em;
+ text-indent: 1em;
+ }
+ p.h4i4 {
+ padding-left: 4em;
+ text-indent: 0em;
+ }
+ p.h4i5 {
+ padding-left: 5em;
+ text-indent: -1em;
+ }
+ p.h4i6 {
+ padding-left: 6em;
+ text-indent: -2em;
+ }
+ p.h4i7 {
+ padding-left: 7em;
+ text-indent: -3em;
+ }
+ p.h4i8 {
+ padding-left: 8em;
+ text-indent: -4em;
+ }
+ p.h4i9 {
+ padding-left: 9em;
+ text-indent: -5em;
+ }
+ p.h5i0 {
+ padding-left: 0em;
+ text-indent: 5em;
+ }
+ p.h5i1 {
+ padding-left: 1em;
+ text-indent: 4em;
+ }
+ p.h5i2 {
+ padding-left: 2em;
+ text-indent: 3em;
+ }
+ p.h5i3 {
+ padding-left: 3em;
+ text-indent: 2em;
+ }
+ p.h5i4 {
+ padding-left: 4em;
+ text-indent: 1em;
+ }
+ p.h5i5 {
+ padding-left: 5em;
+ text-indent: 0em;
+ }
+ p.h5i6 {
+ padding-left: 6em;
+ text-indent: -1em;
+ }
+ p.h5i7 {
+ padding-left: 7em;
+ text-indent: -2em;
+ }
+ p.h5i8 {
+ padding-left: 8em;
+ text-indent: -3em;
+ }
+ p.h5i9 {
+ padding-left: 9em;
+ text-indent: -4em;
+ }
+ p.h6i0 {
+ padding-left: 0em;
+ text-indent: 6em;
+ }
+ p.h6i1 {
+ padding-left: 1em;
+ text-indent: 5em;
+ }
+ p.h6i2 {
+ padding-left: 2em;
+ text-indent: 4em;
+ }
+ p.h6i3 {
+ padding-left: 3em;
+ text-indent: 3em;
+ }
+ p.h6i4 {
+ padding-left: 4em;
+ text-indent: 2em;
+ }
+ p.h6i5 {
+ padding-left: 5em;
+ text-indent: 1em;
+ }
+ p.h6i6 {
+ padding-left: 6em;
+ text-indent: 0em;
+ }
+ p.h6i7 {
+ padding-left: 7em;
+ text-indent: -1em;
+ }
+ p.h6i8 {
+ padding-left: 8em;
+ text-indent: -2em;
+ }
+ p.h6i9 {
+ padding-left: 9em;
+ text-indent: -3em;
+ }
+ p.h7i0 {
+ padding-left: 0em;
+ text-indent: 7em;
+ }
+ p.h7i1 {
+ padding-left: 1em;
+ text-indent: 6em;
+ }
+ p.h7i2 {
+ padding-left: 2em;
+ text-indent: 5em;
+ }
+ p.h7i3 {
+ padding-left: 3em;
+ text-indent: 4em;
+ }
+ p.h7i4 {
+ padding-left: 4em;
+ text-indent: 3em;
+ }
+ p.h7i5 {
+ padding-left: 5em;
+ text-indent: 2em;
+ }
+ p.h7i6 {
+ padding-left: 6em;
+ text-indent: 1em;
+ }
+ p.h7i7 {
+ padding-left: 7em;
+ text-indent: 0em;
+ }
+ p.h7i8 {
+ padding-left: 8em;
+ text-indent: -1em;
+ }
+ p.h7i9 {
+ padding-left: 9em;
+ text-indent: -2em;
+ }
+ p.h8i0 {
+ padding-left: 0em;
+ text-indent: 8em;
+ }
+ p.h8i1 {
+ padding-left: 1em;
+ text-indent: 7em;
+ }
+ p.h8i2 {
+ padding-left: 2em;
+ text-indent: 6em;
+ }
+ p.h8i3 {
+ padding-left: 3em;
+ text-indent: 5em;
+ }
+ p.h8i4 {
+ padding-left: 4em;
+ text-indent: 4em;
+ }
+ p.h8i5 {
+ padding-left: 5em;
+ text-indent: 3em;
+ }
+ p.h8i6 {
+ padding-left: 6em;
+ text-indent: 2em;
+ }
+ p.h8i7 {
+ padding-left: 7em;
+ text-indent: 1em;
+ }
+ p.h8i8 {
+ padding-left: 8em;
+ text-indent: 0em;
+ }
+ p.h8i9 {
+ padding-left: 9em;
+ text-indent: -1em;
+ }
+ p.h9i0 {
+ padding-left: 0em;
+ text-indent: 9em;
+ }
+ p.h9i1 {
+ padding-left: 1em;
+ text-indent: 8em;
+ }
+ p.h9i2 {
+ padding-left: 2em;
+ text-indent: 7em;
+ }
+ p.h9i3 {
+ padding-left: 3em;
+ text-indent: 6em;
+ }
+ p.h9i4 {
+ padding-left: 4em;
+ text-indent: 5em;
+ }
+ p.h9i5 {
+ padding-left: 5em;
+ text-indent: 4em;
+ }
+ p.h9i6 {
+ padding-left: 6em;
+ text-indent: 3em;
+ }
+ p.h9i7 {
+ padding-left: 7em;
+ text-indent: 2em;
+ }
+ p.h9i8 {
+ padding-left: 8em;
+ text-indent: 1em;
+ }
+ p.h9i9 {
+ padding-left: 9em;
+ text-indent: 0em;
+ }
+ p.it0 {
+ margin-left: 0em;
+ margin-top: 6px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it1 {
+ margin-left: 1em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it2 {
+ margin-left: 2em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it3 {
+ margin-left: 3em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it4 {
+ margin-left: 4em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it5 {
+ margin-left: 5em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it6 {
+ margin-left: 6em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it7 {
+ margin-left: 7em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it8 {
+ margin-left: 8em;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ line-height: 100%;
+ }
+ p.it9 {
+ margin-left: 9em;
+ margin-bottom: 0px;
+ margin-top: 0px;
+ line-height: 100%;
+ }
+ p.block { }
+ p.group { }
+ p.alt { }
+ p.verse {
+ margin-bottom: 6px;
+ }
+ p.code {
+ font-family: inconsolata, andale mono, courier new, courier, monospace;
+ font-size: 90%;
+ text-align: left;
+ background-color: #eeeeee;
+ }
+ p.caption {
+ text-align: left;
+ font-size: 80%;
+ display: inline;
+ }
+ p.endnote {
+ font-size: 96%;
+ line-height: 120%;
+ text-align: left;
+ margin-right: 15mm;
+ }
+ p.endnote_indent {
+ font-size: 96%;
+ line-height: 120%;
+ text-align: left;
+ margin-left: 2em;
+ margin-right: 15mm;
+ }
+ p.center {
+ text-align: center;
+ }
+ p.bold {
+ font-weight: bold;
+ }
+ p.bold_left {
+ font-weight: bold;
+ text-align: left;
+ }
+ p.centerbold {
+ text-align: center;
+ font-weight: bold;
+ }
+ p.em {
+ font-weight: bold;
+ font-style: normal;
+ background: #fff3b6;
+ }
+ p.small {
+ font-size: 80%;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-right: 6px;
+ text-align: left;
+ }
+ .tiny, .tiny_left, .tiny_right, .tiny_center {
+ font-size: 10px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-right: 6px;
+ text-align: left;
+ }
+ p.tiny { }
+ p.tiny_left {
+ margin-left: 0px;
+ margin-right: 0px;
+ text-align: left;
+ }
+ p.tiny_right {
+ margin-right: 1em;
+ text-align: right;
+ }
+ p.tiny_center {
+ margin-left: 0px;
+ margin-right: 0px;
+ text-align: center;
+ }
+ p.pane, p.pane_title, p.pane_blurb, p.pane_link, p.pane_indent {
+ font-size: 80%;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 2mm;
+ margin-right: 4px;
+ text-align: left;
+ }
+ p.pane { }
+ p.pane_title {
+ font-weight: bold;
+ margin-bottom: 0px;
+ }
+ p.pane_blurb {
+ font-size: 10px;
+ margin-bottom: 0px;
+ }
+ p.pane_link {
+ font-size: 10px;
+ margin-bottom: 0px;
+ margin-left: 4mm;
+ }
+ p.pane_indent {
+ font-size: 10px;
+ margin-bottom: 0px;
+ margin-left: 4mm;
+ }
+ p.concordance_word {
+ line-height: 150%;
+ font-weight: bold;
+ display: inline;
+ margin-top: 4px;
+ margin-bottom: 1px;
+ }
+ p.concordance_count {
+ font-size: 80%;
+ color: #777777;
+ display: inline;
+ margin-left: 0em;
+ }
+ p.concordance_object {
+ font-size: 80%;
+ line-height: 120%;
+ text-align: left;
+ margin-left: 3em;
+ margin-top: 1px;
+ margin-bottom: 3px;
+ }
+ p.book_index_lev1 {
+ line-height: 100%;
+ margin-top: 4px;
+ margin-bottom: 1px;
+ }
+ p.book_index_lev2 {
+ line-height: 100%;
+ text-align: left;
+ margin-left: 3em;
+ margin-top: 1px;
+ margin-bottom: 3px;
+ }
+ p.quickref {
+ font-size: 10px;
+ font-style: italic;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-right: 5px;
+ text-align: left;
+ }
+ p.bigref {
+ font-size: 11px;
+ font-weight: bold;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-right: 5px;
+ text-align: center;
+ }
+ p.letter {
+ font-weight: bold;
+ font-size: 80%;
+ margin-left: 0em;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ margin-right: 6px;
+ text-align: left;
+ color: white;
+ background: #880000;
+ }
+ tt {
+ font-family: inconsolata, andale mono, courier new, courier, monospace;
+ background-color: #eeeeee;
+ }
+ label.ocn {
+ width: 2%;
+ float: right;
+ top: 0;
+ font-size: 10px;
+ margin-top: 0px;
+ margin-bottom: 5px;
+ color: #777777;
+ margin-right: 5px;
+ text-align: right;
+ background-color: #ffffff;
+ }
+ table { }
+ tr { }
+ th,td {
+ vertical-align: top;
+ text-align: left;
+ }
+ th {
+ font-weight: bold;
+ }
+ p.left,th.left,td.left {
+ text-align: left;
+ }
+ p.small_left,th.small_left,td.small_left {
+ text-align: left;
+ font-size: 80%;
+ }
+ p.right,th.right,td.right {
+ text-align: right;
+ }
+ #horizontal_links {
+ background: #eeeeee;
+ margin-left: 5%;
+ margin-right: 5%;
+ }
+ #horizontal {
+ margin: 0;
+ padding: 0 0 0 10px;
+ border-top: 1px solid #000077;
+ border-bottom: 1px solid #000077;
+ }
+ #horizontal li {
+ margin: 0 0 0 0;
+ padding: 0 16px 0 0;
+ display: inline;
+ list-style-type: none;
+ text-align: left;
+ background: none;
+ }
+ #horizontal a {
+ line-height: 12px;
+ margin: 0 0 0 0;
+ text-decoration: none;
+ color: #000077;
+ }
+ #horizontal a.active, #horizontal a:hover {
+ border-bottom: 2px solid #777777;
+ padding-bottom: 2px;
+ color: #000077;
+ }
+ #horizontal a:hover {
+ color: #000077;
+ }
+ #document_versions {
+ position: absolute;
+ top: 10mm;
+ right: 2%;
+ width: 12%;
+ float: right;
+ }
+ #vertical_links {
+ position: absolute;
+ top: 10mm;
+ right: 0px;
+ width: 20%;
+ background: #dddddd;
+ float: right;
+ }
+ #vertical {
+ padding: 0 12px 0px 0px;
+ margin-left: 2%;
+ margin-right: 2%;
+ }
+ #vertical li {
+ display: block;
+ list-style-type: none;
+ }
+ #vertical a {
+ line-height: 12px;
+ text-decoration: none;
+ color: #000077;
+ }
+ #vertical a.active, #vertical a:hover {
+ border-bottom: 2px solid #777777;
+ padding-bottom: 2px;
+ color: #000077;
+ }
+ ul, li {
+ list-style-type: none;
+ list-style: none;
+ padding-left: 20px;
+ display: block;
+ font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;
+ font-weight: normal;
+ line-height: 150%;
+ text-align: left;
+ text-indent: 0mm;
+ margin-left: 1em;
+ margin-right: 2em;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ }
+ li {
+ background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
+ }
+ ul {
+ }
+ li.bullet { margin-left: 1em; }
+ li.i1 { margin-left: 2em; }
+ li.i2 { margin-left: 3em; }
+ li.i3 { margin-left: 4em; }
+ li.i4 { margin-left: 5em; }
+ li.i5 { margin-left: 6em; }
+ li.i6 { margin-left: 7em; }
+ li.i7 { margin-left: 8em; }
+ li.i8 { margin-left: 9em; }
+ li.i9 { margin-left: 10em; }
+ li.doc, li.ref, li.refcenter {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-right: 0px;
+ font-size: 8px;
+ font-style: normal;
+ text-align: left;
+ }
+ li.doc {
+ background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
+ padding-left: 16px;
+ margin-left: 10px;
+ margin-right: 0px;
+ }
+ li.ref {
+ background: none;
+ padding-left: 0;
+ margin-left: 0;
+ color: #777777;
+ }
+ li.refcenter {
+ background: url(../image_sys/bullet_09.png) no-repeat 0px 6px;
+ padding-left: 20px;
+ margin-left: 10%;
+ font-size: 9px;
+ color: #777777;
+ text-align: center;
+ }
+ li.refbold {
+ list-style-type: none;
+ padding-left: 16px;
+ margin-left: 0;
+ margin-right: 10mm;
+ font-weight: bold;
+ }
+ h0, h1, h2, h3, h4, h5, h6, h7 {
+ font-weight: bold;
+ line-height: 120%;
+ text-align: left;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ }
+ h4.norm, h5.norm, h6.norm, h7.norm {
+ margin-top: 10px;
+ margin-bottom: 0px;
+ }
+ h0.center, h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {
+ text-align: center;
+ }
+ h0 { font-size: 125%; }
+ h1 { font-size: 120%; }
+ h2 { font-size: 115%; }
+ h3 { font-size: 110%; }
+ h4 { font-size: 105%; }
+ h5 { font-size: 100%; }
+ h6 { font-size: 100%; }
+ h7 { font-size: 100%; }
+ h1.i {margin-left: 2em;}
+ h2.i {margin-left: 3em;}
+ h3.i {margin-left: 4em;}
+ h4.i {margin-left: 5em;}
+ h5.i {margin-left: 6em;}
+ h6.i {margin-left: 7em;}
+ h7.i {margin-left: 8em;}
+ h8.i {margin-left: 9em;}
+ h9.i {margin-left: 10em;}
+ h1.top_band {
+ display: inline;
+ text-align: left;
+ margin-top: 0;
+ margin-left: 4mm;
+ text-indent: 0mm;
+ font-weight: bold;
+ font-size: 120%;
+ }
+ h2.top_band_tiny {
+ font-size: 10px;
+ font-weight: normal;
+ margin-top: 0px;
+ margin-left: 4mm;
+ text-indent: 0mm;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-left: 140px;
+ margin-right: 0px;
+ text-align: left;
+ }
+ p.top_band {
+ display: inline;
+ text-align: left;
+ margin-top: 0;
+ margin-left: 140px;
+ text-indent: 0mm;
+ font-weight: bold;
+ font-size: 120%;
+ }
+ p.top_band_tiny {
+ font-size: 10px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-left: 140px;
+ margin-right: 0px;
+ text-align: left;
+ }
+ p.top_band_image {
+ float: left;
+ display: inline;
+ text-align: left;
+ margin-top: 0;
+ margin-left: 1mm;
+ text-indent: 0mm;
+ margin-right: 1mm;
+ }
+ .banner, .subbanner {
+ font-weight: bold;
+ text-align: center;
+ margin-left: 10mm;
+ margin-right: 15mm;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ }
+ h0.banner {
+ font-size: 125%;
+ }
+ h1.banner {
+ font-size: 120%;
+ }
+ h1.subbanner {
+ font-size: 115%;
+ }
+ h2.banner {
+ font-size: 110%;
+ }
+ h3.banner {
+ color: #990000;
+ font-size: 105%;
+ }
+ h4.banner {
+ color: #ff0000;
+ font-size: 100%;
+ }
+ h5.banner {
+ }
+ h6.banner {
+ }
+ h7.banner {
+ }
+ .toc {
+ font-weight: normal;
+ margin-top: 6px;
+ margin-bottom: 6px;
+ }
+ h0.toc {
+ margin-left: 1em;
+ font-size: 120%;
+ line-height: 150%;
+ }
+ h1.toc {
+ margin-left: 1em;
+ font-size: 115%;
+ line-height: 150%;
+ }
+ h2.toc {
+ margin-left: 2em;
+ font-size: 110%;
+ line-height: 140%;
+ }
+ h3.toc {
+ margin-left: 3em;
+ font-size: 105%;
+ line-height: 120%;
+ }
+ h4.toc {
+ margin-left: 4em;
+ font-size: 100%;
+ line-height: 120%;
+ }
+ h5.toc {
+ margin-left: 5em;
+ font-size: 95%;
+ line-height: 110%;
+ }
+ h6.toc {
+ margin-left: 6em;
+ font-size: 90%;
+ line-height: 110%;
+ }
+ h7.toc {
+ margin-left: 7em;
+ font-size: 85%;
+ line-height: 100%;
+ }
+ .microtoc {
+ margin-top: 2px;
+ margin-bottom: 2px;
+ }
+ h0.microtoc {
+ margin-left: 0mm;
+ font-size: 120%;
+ }
+ h1.microtoc {
+ margin-left: 0mm;
+ font-size: 115%;
+ }
+ h2.microtoc {
+ margin-left: 5mm;
+ font-size: 110%;
+ }
+ h3.microtoc {
+ margin-left: 10mm;
+ font-size: 105%;
+ }
+ h4.microtoc {
+ margin-left: 15mm;
+ font-weight: normal;
+ font-size: 100%;
+ }
+ h5.microtoc {
+ margin-left: 20mm;
+ font-weight: normal;
+ font-size: 95%;
+ }
+ h6.microtoc {
+ margin-left: 25mm;
+ font-weight: normal;
+ font-size: 90%;
+ }
+ h7.microtoc {
+ margin-left: 30mm;
+ font-weight: normal;
+ font-size: 85%;
+ }
+ .subtoc {
+ margin-right: 34%;
+ font-weight: normal;
+ }
+ h5.subtoc {
+ margin-left: 2em;
+ font-size: 80%;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ }
+ h6.subtoc {
+ margin-left: 3em;
+ font-size: 75%;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+ h7.subtoc {
+ margin-left: 4em;
+ font-size: 70%;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+ div.substance {
+ width: 100%;
+ background-color: #ffffff;
+ }
+ div.ocn {
+ width: 5%;
+ float: right;
+ top: 0;
+ background-color: #ffffff;
+ }
+ div.endnote {
+ width: 95%;
+ background-color: #fffffff;
+ }
+ div.toc {
+ position: absolute;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-top: 0.5em;
+ border: 0;
+ width: 13em;
+ background-color: #eeeeee;
+ margin-right:1em;
+ }
+ div.summary {
+ margin: 0;
+ padding: 0;
+ border-left: 13em solid #eeeeee;
+ padding-left: 1em;
+ background-color: #eeeeee;
+ }
+ div.content, div.main_column {
+ margin: 0;
+ padding: 0;
+ border-left: 13em solid #ffffff;
+ padding-left: 1em;
+ padding-right: 1em;
+ }
+ div.content0, div.main_column0 {
+ margin: 0;
+ padding: 0;
+ border-left: 0% solid #ffffff;
+ padding-left: 5%;
+ }
+ div.scroll {
+ margin: 0;
+ padding: 0;
+ padding-left: 1em;
+ padding-right: 1em;
+ }
+ div.content:after {
+ content:' ';
+ clear:both;
+ display:block;
+ height:0;
+ overflow:hidden
+ }
+ div.footer {
+ clear:left;
+ padding: 0.5em;
+ font-size: 80%;
+ margin: 0;
+ }
+ div.toc ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ }
+ div.toc li ul a, li ul span.currentlink
+ {
+ font-weight: normal;
+ font-size: 90%;
+ padding-left: 2em;
+ background-color: #eeeeee;
+ }
+ div.toc a, span.currentlink{
+ display:block;
+ text-decoration: none;
+ padding-left: 0.5em;
+ color: #0000aa;
+ }
+ hr {
+ width: 90%;
+ }
+ span.currentlink {
+ text-decoration: none;
+ background-color: #aaaaf9;
+ }
+ div.toc a:visited {
+ color: #0000aa;
+ }
+ div.toc a:hover {
+ color: #000000;
+ background-color: #f9f9aa;
+ }
+ .minitoc {
+ font-weight: normal;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ }
+ h1.minitoc, h2.minitoc, h3.minitoc {
+ margin-left: 0em;
+ font-weight: bold;
+ text-align: left;
+ font-size: 90%;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ }
+ h4.minitoc {
+ margin-left: 0em;
+ font-size: 90%;
+ }
+ h5.minitoc {
+ margin-left: 1em;
+ font-size: 85%;
+ }
+ h6.minitoc {
+ margin-left: 2em;
+ font-size: 85%;
+ }
+ h7.minitoc {
+ margin-left: 3em;
+ font-size: 80%;
+ }
+ h0.minitoc {
+ margin-left: 0em;
+ font-size: 90%;
+ }
+ h0.c, h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {
+ text-align: center
+ }
+ h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {
+ text-align: center;
+ color: #ff0000;
+ margin-left: 5mm;
+ text-indent: 5mm;
+ margin-top: 30px;
+ margin-bottom: 20px;
+ margin-right: 15mm;
+ }
+ h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {
+ text-align: center;
+ color: #990000;
+ margin-left: 5mm;
+ text-indent: 5mm;
+ margin-top: 30px;
+ margin-bottom: 20px;
+ margin-right: 15mm;
+ }";
+ return css;
+ }
+ auto css_write() {
+ auto pth_css= "_sisu/css";
+ auto pth_css_fn= pth_css ~ "/html.css";
+ try {
+ mkdirRecurse(pth_css);
+ auto f = File(pth_css_fn, "w");
+ f.writeln(html_css);
+ // foreach (o; doc) {
+ // f.writeln(o);
+ // }
+ }
+ catch (ErrnoException ex) {
+ // Handle error
}
}
}
diff --git a/src/sdp/output_hub.d b/src/sdp/output_hub.d
index f17a007..fe53bdb 100644
--- a/src/sdp/output_hub.d
+++ b/src/sdp/output_hub.d
@@ -10,7 +10,6 @@ template outputHub() {
std.container,
std.exception,
std.getopt,
- std.json,
std.process,
std.stdio,
std.file,
@@ -38,9 +37,7 @@ template outputHub() {
writeln("source");
}
if (doc_matters.opt_action_bool["sisupod"]) {
- mixin SiSUpod;
- auto sisupod=SiSUpod();
- sisupod.sisupod_assemble(doc_matters.source_filename);
+ SiSUpod!()(doc_matters.source_filename);
writeln("sisupod source");
}
if (doc_matters.opt_action_bool["text"]) {
@@ -50,41 +47,15 @@ template outputHub() {
// text.scroll(contents, bookindex_unordered_hashes, biblio, dochead_make, dochead_meta, fn_src, opt_action_bool);
}
if (doc_matters.opt_action_bool["html"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.scroll(
- contents,
- doc_matters,
- );
- html.seg(
- contents,
- doc_matters,
- );
+ outputHTML!().scroll(contents,doc_matters);
+ outputHTML!().seg(contents,doc_matters);
} else if(doc_matters.opt_action_bool["html_seg"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.seg(
- contents,
- doc_matters,
- );
+ outputHTML!().seg(contents,doc_matters);
} else if(doc_matters.opt_action_bool["html_scroll"]) {
- mixin outputHTML;
- auto html=outputHTML();
- html.css_write;
- html.scroll(
- contents,
- doc_matters,
- );
+ outputHTML!().scroll(contents,doc_matters);
}
if (doc_matters.opt_action_bool["epub"]) {
- mixin outputEPub;
- auto epub=outputEPub();
- epub.doc_content( // consolidate
- contents,
- doc_matters,
- );
+ outputEPub!()(contents, doc_matters);
// epub.css_write;
// writeln("epub processing");
}
diff --git a/src/sdp/source_sisupod.d b/src/sdp/source_sisupod.d
index 081bb51..1edbbfc 100644
--- a/src/sdp/source_sisupod.d
+++ b/src/sdp/source_sisupod.d
@@ -1,47 +1,68 @@
template SiSUpod() {
- struct SiSUpod {
-
- void sisupod_assemble(S)(
- S fn_src,
- ) {
- debug(asserts){
- static assert(is(typeof(fn_src) == string));
- }
- mixin SiSUpaths;
- auto pth_sisupod = SiSUpodPaths();
- mixin SiSUlanguageCodes;
- auto lang = Lang();
- auto rgx = Rgx();
- /+
- dir structure
- /tmp/_sisu_processing_/ralph/en/sisupod
- ├── doc
- │   └── en
- └── image
-
- - create directory structure
-
- +/
- assert (match(fn_src, rgx.src_fn));
- try {
- /+ create directory structure +/
- mkdirRecurse(pth_sisupod.doc(fn_src));
- mkdirRecurse(pth_sisupod.conf(fn_src));
- mkdirRecurse(pth_sisupod.css(fn_src));
- mkdirRecurse(pth_sisupod.image(fn_src));
- /+ copy relevant files +/
- auto f_out = pth_sisupod.fn_doc(fn_src, "en"); // you need fn without path and then to insert back language code for output sub-directory
- debug(sisupod) {
- writeln(__LINE__, ": ", fn_src, " -> ", f_out);
- }
- mkdirRecurse(pth_sisupod.doc_lng(fn_src, "en")); // need to extract language code directories (from directory structure or filenames & have a default)
- copy(fn_src, f_out);
- }
- catch (ErrnoException ex) {
- // Handle error
+ private import
+ std.algorithm,
+ std.array,
+ std.container,
+ std.exception,
+ std.file,
+ std.getopt,
+ std.json,
+ std.process,
+ std.stdio,
+ std.path,
+ std.range,
+ std.regex,
+ std.string,
+ std.traits,
+ std.typecons,
+ std.uni,
+ std.utf,
+ ao_defaults;
+ import
+ ao_rgx,
+ output_xhtmls;
+
+ void SiSUpod(S)(
+ S fn_src,
+ ) {
+ debug(asserts){
+ static assert(is(typeof(fn_src) == string));
+ }
+ mixin SiSUrgxInit;
+ mixin SiSUpaths;
+ auto pth_sisupod = SiSUpodPaths();
+ mixin SiSUlanguageCodes;
+ auto lang = Lang();
+ auto rgx = Rgx();
+ /+
+ dir structure
+ /tmp/_sisu_processing_/ralph/en/sisupod
+ ├── doc
+ │   └── en
+ └── image
+
+ - create directory structure
+
+ +/
+ assert (match(fn_src, rgx.src_fn));
+ try {
+ /+ create directory structure +/
+ mkdirRecurse(pth_sisupod.doc(fn_src));
+ mkdirRecurse(pth_sisupod.conf(fn_src));
+ mkdirRecurse(pth_sisupod.css(fn_src));
+ mkdirRecurse(pth_sisupod.image(fn_src));
+ /+ copy relevant files +/
+ auto f_out = pth_sisupod.fn_doc(fn_src, "en"); // you need fn without path and then to insert back language code for output sub-directory
+ debug(sisupod) {
+ writeln(__LINE__, ": ", fn_src, " -> ", f_out);
}
+ mkdirRecurse(pth_sisupod.doc_lng(fn_src, "en")); // need to extract language code directories (from directory structure or filenames & have a default)
+ copy(fn_src, f_out);
+ }
+ catch (ErrnoException ex) {
+ // Handle error
}
-
-
}
+
+
}