aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/abstraction.d9
-rw-r--r--src/sdp/ao_defaults.d13
-rw-r--r--src/sdp/ao_rgx.d5
-rw-r--r--src/sdp/output_epub.d187
-rw-r--r--src/sdp/output_html.d286
-rw-r--r--src/sdp/source_sisupod.d69
6 files changed, 326 insertions, 243 deletions
diff --git a/src/sdp/abstraction.d b/src/sdp/abstraction.d
index c1907f7..380be1d 100644
--- a/src/sdp/abstraction.d
+++ b/src/sdp/abstraction.d
@@ -100,6 +100,15 @@ template SiSUabstraction() {
string _k = fn_src;
return _k;
}
+ auto language() {
+ string _k;
+ if (auto m = match(fn_src, rgx.language_code_and_filename)) {
+ _k = m.captures[1];
+ } else {
+ _k = "en";
+ }
+ return _k;
+ }
auto file_insert_list() {
string[] _k = _0_header_1_body_content_2_insert_filelist_tuple[2];
return _k;
diff --git a/src/sdp/ao_defaults.d b/src/sdp/ao_defaults.d
index 346c0c7..269b8c0 100644
--- a/src/sdp/ao_defaults.d
+++ b/src/sdp/ao_defaults.d
@@ -402,18 +402,21 @@ template SiSUpaths() {
string doc_lng(string fn_src, string lng) {
return chainPath(doc(fn_src), lng).array;
}
- string image(string fn_src) {
- return chainPath(base(fn_src), "image").array;
- }
string conf(string fn_src) {
- return chainPath(base(fn_src), "conf").array;
+ return chainPath(doc(fn_src), "_sisu").array;
+ }
+ string image(string fn_src) {
+ return chainPath(conf(fn_src), "image").array;
}
string css(string fn_src) {
- return chainPath(base(fn_src), "css").array;
+ return chainPath(conf(fn_src), "css").array;
}
string fn_doc(string fn_src, string lng) {
return chainPath((doc_lng(fn_src, lng)), baseName(fn_src)).array;
}
+ string fn_doc_insert(string fn_src, string fn_insert, string lng) {
+ return chainPath((doc_lng(fn_src, lng)), baseName(fn_insert)).array;
+ }
}
struct HtmlPaths {
string base_filename(string fn_src) {
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d
index b91ae35..91f5af5 100644
--- a/src/sdp/ao_rgx.d
+++ b/src/sdp/ao_rgx.d
@@ -188,5 +188,10 @@ template SiSUrgxInit() {
static bi_main_term_plus_rest_split = ctRegex!(`\s*:\s*`);
static bi_sub_terms_plus_obj_cite_number_offset_split = ctRegex!(`\s*\|\s*`);
static bi_term_and_obj_cite_numbers_match = ctRegex!(`^(.+?)\+(\d+)`);
+ /+ language codes +/
+ auto language_codes =
+ ctRegex!("(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)");
+ auto language_code_and_filename =
+ ctRegex!("(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)/[A-Za-z0-9._-].+?[.](?:sst|ssm)$");
}
}
diff --git a/src/sdp/output_epub.d b/src/sdp/output_epub.d
index f914f16..f052d97 100644
--- a/src/sdp/output_epub.d
+++ b/src/sdp/output_epub.d
@@ -40,7 +40,7 @@ template outputEPub() {
</container>¶");
return o;
}
- string epub_oebps_content(C,M)(C contents, M doc_matters) {
+ string epub_oebps_content(D,I)(D doc_abstraction, I 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'?>
@@ -75,12 +75,12 @@ template outputEPub() {
uuid,
);
foreach (sect; doc_matters.keys_seq_seg) {
- foreach (obj; contents[sect]) {
+ foreach (obj; doc_abstraction[sect]) {
}
}
return content;
}
- string epub_oebps_toc(C,M)(C contents, M doc_matters) {
+ string epub_oebps_toc(D,I)(D doc_abstraction, I doc_matters) {
int counter = 0;
string uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere
auto markup = InlineMarkup();
@@ -113,7 +113,7 @@ template outputEPub() {
(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]) {
+ foreach (obj; doc_abstraction[sect]) {
if (obj.is_a == "heading") {
foreach_reverse (k; 0 .. 7) {
switch (obj.dom_markedup[k]) {
@@ -157,9 +157,9 @@ template outputEPub() {
return toc;
}
- void outputEPub(C,T)(
- auto ref const C contents,
- auto ref T doc_matters,
+ void outputEPub(D,I)(
+ auto ref const D doc_abstraction,
+ auto ref I doc_matters,
) {
mixin SiSUrgxInit;
auto xhtml_format = outputXHTMLs();
@@ -171,10 +171,10 @@ template outputEPub() {
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);
+ auto oebps_toc_ncx = epub_oebps_toc(doc_abstraction, doc_matters);
+ auto oebps_content_opf = epub_oebps_content(doc_abstraction, doc_matters);
foreach (part; doc_matters.keys_seq_seg) {
- foreach (obj; contents[part]) {
+ foreach (obj; doc_abstraction[part]) {
if (obj.is_a == "heading") {
switch (obj.heading_lev_markup) {
case 0: .. case 3:
@@ -214,100 +214,129 @@ template outputEPub() {
case 5: .. case 7:
doc_epub[segment_filename] ~= xhtml_format.heading(obj);
break;
- default:
+ case 8: .. case 9: // unused numbers, if remain check
if ((doc_matters.opt_action_bool["debug"])) {
- 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);
- break;
- default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
- break;
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a, ": ", obj.heading_lev_markup);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.text); // check
}
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a, ": ", obj.heading_lev_markup);
+ }
break;
}
- } else if (obj.use == "body") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
+ } else {
+ switch (obj.use) {
+ case "frontmatter":
+ switch (obj.is_of) {
case "para":
- doc_epub[segment_filename] ~= xhtml_format.para(obj);
+ switch (obj.is_a) {
+ case "toc":
+ doc_epub[segment_filename] ~= xhtml_format.toc(obj);
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ }
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);
- break;
- case "group":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ case "body":
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "para":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
case "block":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "quote":
- doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
- break;
- case "table":
- doc_epub[segment_filename] ~= xhtml_format.para(obj); //
- break;
- case "code":
- doc_epub[segment_filename] ~= xhtml_format.code(obj);
+ switch (obj.is_a) {
+ case "poem": // double check why both poem & verse
+ break;
+ case "verse":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "group":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "block":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "quote":
+ doc_epub[segment_filename] ~= xhtml_format.nugget(obj);
+ break;
+ case "table":
+ doc_epub[segment_filename] ~= xhtml_format.para(obj); //
+ break;
+ case "code":
+ doc_epub[segment_filename] ~= xhtml_format.code(obj);
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
}
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);
+ case "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:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ }
break;
}
break;
+ case "comment":
+ break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.use);
}
break;
}
@@ -372,6 +401,12 @@ template outputEPub() {
/+ OEBPS/content.opf +/
f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w");
f.writeln(oebps_content_opf);
+ foreach (image; doc_matters.image_list) {
+ if (exists("_sisu/image/"~ image)) {
+ copy(("_sisu/image/"~ image),
+ ((pth_epub.doc_oebps_image(doc_matters.source_filename)) ~ "/" ~ image));
+ }
+ }
}
catch (ErrnoException ex) {
// Handle error
diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d
index 1d55033..3af61ba 100644
--- a/src/sdp/output_html.d
+++ b/src/sdp/output_html.d
@@ -23,32 +23,9 @@ template outputHTML() {
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 {
- if (!exists(pth_html.base)) {
- 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
- }
- }
- void scroll(C,T)(
- auto ref const C contents,
- auto ref T doc_matters,
+ void scroll(D,I)(
+ auto ref const D doc_abstraction,
+ auto ref I doc_matters,
) {
mixin SiSUrgxInit;
auto xhtml_format = outputXHTMLs();
@@ -56,8 +33,9 @@ template outputHTML() {
string[] doc_html;
string[] doc;
foreach (part; doc_matters.keys_seq_scroll) {
- foreach (obj; contents[part]) {
- if (obj.use == "frontmatter") {
+ foreach (obj; doc_abstraction[part]) {
+ switch (obj.use) {
+ case "frontmatter":
switch (obj.is_of) {
case "para":
switch (obj.is_a) {
@@ -76,11 +54,12 @@ template outputHTML() {
break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
}
break;
}
- } else if (obj.use == "body") {
+ break;
+ case "body":
switch (obj.is_of) {
case "para":
switch (obj.is_a) {
@@ -132,7 +111,8 @@ template outputHTML() {
}
break;
}
- } else if (obj.use == "backmatter") {
+ break;
+ case "backmatter":
switch (obj.is_of) {
case "para":
switch (obj.is_a) {
@@ -163,48 +143,50 @@ template outputHTML() {
break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
}
break;
}
+ break;
+ case "comment":
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.use);
+ }
+ break;
}
}
}
doc = xhtml_format.scroll_head(doc_matters.dochead_meta) ~ doc_html ~ xhtml_format.tail;
- scroll_write_output_file(doc_matters.source_filename, doc);
+ scroll_write_output(doc_matters.source_filename, doc);
}
- void seg_write_output_files(M,C)(
- M doc_matters,
- C doc_html,
+ void scroll_write_output(Fn,C)(
+ Fn fn_src,
+ C doc,
) {
debug(asserts){
- static assert(is(typeof(doc_html) == string[][string]));
+ static assert(is(typeof(fn_src) == string));
+ static assert(is(typeof(doc) == 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 {
- if (!exists(pth_html.seg(doc_matters.source_filename))) {
- mkdirRecurse(pth_html.seg(doc_matters.source_filename));
+ if (!exists(pth_html.base)) {
+ mkdirRecurse(pth_html.base);
}
- foreach (seg_filename; doc_matters.segnames) {
- auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
- foreach (docseg; doc_html[seg_filename]) {
- f.writeln(docseg);
- }
- f.writeln(xhtml_format.tail); // needed for each lev4
+ auto f = File(pth_html.fn_scroll(fn_src), "w");
+ foreach (o; doc) {
+ f.writeln(o);
}
}
catch (ErrnoException ex) {
- // handle error
+ // Handle error
}
}
- void seg(C,M)(
- auto ref const C contents,
- auto ref M doc_matters,
+ void seg(D,I)(
+ auto ref const D doc_abstraction,
+ auto ref I doc_matters,
) {
mixin SiSUrgxInit;
auto rgx = Rgx();
@@ -214,7 +196,7 @@ template outputHTML() {
string segment_filename;
string[] top_level_headings = ["","","",""];
foreach (part; doc_matters.keys_seq_seg) {
- foreach (obj; contents[part]) {
+ foreach (obj; doc_abstraction[part]) {
if (obj.is_a == "heading") { // all headings: frontmatter, body & backmatter
switch (obj.heading_lev_markup) {
case 0: .. case 3:
@@ -239,13 +221,13 @@ template outputHTML() {
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)
+ top_level_headings[obj.heading_lev_markup] = xhtml_format.heading(obj);
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
+ doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta);
foreach (top_level_heading; top_level_headings) {
doc_html[segment_filename] ~= top_level_heading;
}
@@ -254,107 +236,165 @@ template outputHTML() {
case 5: .. case 7:
doc_html[segment_filename] ~= xhtml_format.heading(obj);
break;
- default:
+ case 8: .. case 9: // unused numbers, if remain check
if ((doc_matters.opt_action_bool["debug"])) {
- 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);
- break;
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a, ": ", obj.heading_lev_markup);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.text); // check
}
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a, ": ", obj.heading_lev_markup);
+ }
break;
}
- } else if (obj.use == "body") {
- switch (obj.is_of) {
- case "para":
- switch (obj.is_a) {
+ } else {
+ switch (obj.use) {
+ case "frontmatter":
+ switch (obj.is_of) {
case "para":
- doc_html[segment_filename] ~= xhtml_format.para(obj);
+ switch (obj.is_a) {
+ case "toc":
+ doc_html[segment_filename] ~= xhtml_format.toc(obj);
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ 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);
+ case "body":
+ switch (obj.is_of) {
+ case "para":
+ switch (obj.is_a) {
+ case "para":
+ doc_html[segment_filename] ~= xhtml_format.para(obj);
+ break;
+ default:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
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);
+ switch (obj.is_a) {
+ case "poem":
+ 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:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
}
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);
+ case "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:
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ }
+ break;
+ }
break;
default:
- // writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ if ((doc_matters.opt_action_bool["debug"])) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.is_of);
+ }
break;
}
break;
+ case "comment":
+ break;
default:
if ((doc_matters.opt_action_bool["debug"])) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.use);
}
break;
}
}
}
}
- seg_write_output_files(doc_matters, doc_html);
+ seg_write_output(doc_matters, doc_html);
+ }
+ void seg_write_output(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 {
+ if (!exists(pth_html.seg(doc_matters.source_filename))) {
+ mkdirRecurse(pth_html.seg(doc_matters.source_filename));
+ }
+ foreach (seg_filename; doc_matters.segnames) {
+ auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w");
+ foreach (docseg; doc_html[seg_filename]) {
+ f.writeln(docseg);
+ }
+ f.writeln(xhtml_format.tail); // needed for each lev4
+ }
+ }
+ catch (ErrnoException ex) {
+ // handle error
+ }
}
auto html_css() {
string css;
diff --git a/src/sdp/source_sisupod.d b/src/sdp/source_sisupod.d
index 9ed2c97..8a24d55 100644
--- a/src/sdp/source_sisupod.d
+++ b/src/sdp/source_sisupod.d
@@ -21,9 +21,9 @@ template SiSUpod() {
import
ao_rgx,
output_xhtmls;
-
void SiSUpod(T)(T doc_matters) {
debug(asserts){
+ // static assert(is(typeof(doc_matters) == tuple));
}
mixin SiSUrgxInit;
mixin SiSUpaths;
@@ -31,23 +31,6 @@ template SiSUpod() {
mixin SiSUlanguageCodes;
auto lang = Lang();
auto rgx = Rgx();
- /+
- dir structure
- /tmp/_sisu_processing_/ralph/sisupod
- ├── conf
- ├── css (unless should be within conf?)
- ├── doc
- │ ├── en
- │ ├── es
- │ ├── fr
- │   └── zh
- └── image
-
- - tasks
- - create directory structure
- - map other language directories
- - check for corresponding files within
- +/
assert (match(doc_matters.source_filename, rgx.src_fn));
try {
/+ create directory structure +/
@@ -63,51 +46,61 @@ template SiSUpod() {
if (!exists(pth_sisupod.image(doc_matters.source_filename))) {
mkdirRecurse(pth_sisupod.image(doc_matters.source_filename));
}
- /+ copy relevant files +/
+ if (!exists(pth_sisupod.doc_lng(doc_matters.source_filename, doc_matters.language))) {
+ mkdirRecurse(pth_sisupod.doc_lng(doc_matters.source_filename, doc_matters.language));
+ }
debug(sisupod) {
writeln(__LINE__, ": ",
// doc_matters.environment["pwd"], "/",
doc_matters.source_filename, " -> ",
// doc_matters.environment["pwd"], "/",
- pth_sisupod.fn_doc(doc_matters.source_filename, "en")
- );
- }
- // need to extract language code directories (from directory structure or filenames & have a default)
- if (!exists(pth_sisupod.doc_lng(doc_matters.source_filename, "en"))) {
- mkdirRecurse(pth_sisupod.doc_lng(doc_matters.source_filename, "en"));
+ pth_sisupod.fn_doc(
+ doc_matters.source_filename,
+ doc_matters.language
+ ));
}
if (exists(doc_matters.source_filename)) {
- copy(doc_matters.source_filename,
- pth_sisupod.fn_doc(doc_matters.source_filename, "en"));
+ copy(
+ doc_matters.source_filename,
+ pth_sisupod.fn_doc(
+ doc_matters.source_filename,
+ doc_matters.language
+ ));
}
if (doc_matters.file_insert_list.length > 0) {
foreach (insert_file; doc_matters.file_insert_list) {
debug(sisupod) {
writeln(
- // doc_matters.environment["pwd"], "/",
insert_file, " -> ",
- // doc_matters.environment["pwd"], "/",
- pth_sisupod.fn_doc(doc_matters.source_filename, "en")
- );
+ pth_sisupod.fn_doc_insert(
+ doc_matters.source_filename,
+ insert_file,
+ doc_matters.language
+ ));
}
if (exists(insert_file)) {
- copy(insert_file,
- pth_sisupod.fn_doc(doc_matters.source_filename, "en"));
+ copy(
+ insert_file,
+ pth_sisupod.fn_doc_insert(
+ doc_matters.source_filename,
+ insert_file,
+ doc_matters.language
+ ));
}
}
}
foreach (image; doc_matters.image_list) {
debug(sisupod) {
writeln(
- // doc_matters.environment["pwd"], "/",
"_sisu/image/", image, " -> ",
- // doc_matters.environment["pwd"], "/",
pth_sisupod.image(doc_matters.source_filename), "/", image
);
}
if (exists("_sisu/image/"~ image)) {
- copy(("_sisu/image/"~ image),
- (pth_sisupod.image(doc_matters.source_filename) ~ "/" ~ image));
+ copy(
+ ("_sisu/image/"~ image),
+ (pth_sisupod.image(doc_matters.source_filename) ~ "/" ~ image)
+ );
}
}
}
@@ -115,6 +108,4 @@ template SiSUpod() {
// Handle error
}
}
-
-
}