From e162e70ec5e83bf33fadc59e2375547828b81581 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 28 Mar 2017 21:08:52 -0400 Subject: start work on block outputs --- src/sdp/ao_rgx.d | 1 + src/sdp/output_epub.d | 16 +++-- src/sdp/output_html.d | 24 ++++--- src/sdp/output_rgx.d | 1 + src/sdp/output_xhtmls.d | 170 ++++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 195 insertions(+), 17 deletions(-) (limited to 'src/sdp') diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index 44e1be4..0844a5f 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -184,6 +184,7 @@ template SiSUrgxInit() { 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)$"); static newline = ctRegex!("\n", "mg"); + static strip_br = ctRegex!("^
\n|
\n*$"); static space = ctRegex!(`[ ]`, "mg"); static spaces_line_start = ctRegex!(`^(?P[ ]+)`, "mg"); static spaces_multiple = ctRegex!(`(?P[ ]{2,})`, "mg"); // could be issues for endnotes diff --git a/src/sdp/output_epub.d b/src/sdp/output_epub.d index 2cbe885..0cc3a31 100644 --- a/src/sdp/output_epub.d +++ b/src/sdp/output_epub.d @@ -275,18 +275,26 @@ template outputEPub() { case "block": switch (obj.is_a) { case "quote": - doc_epub[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.quote_seg(obj, suffix); + doc_epub[segment_filename] ~= to!string(t[0]); + doc_epub_endnotes[segment_filename] ~= t[1]; break; case "group": - doc_epub[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.group_seg(obj, suffix); + doc_epub[segment_filename] ~= to!string(t[0]); + doc_epub_endnotes[segment_filename] ~= t[1]; break; case "block": - doc_epub[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.block_seg(obj, suffix); + doc_epub[segment_filename] ~= to!string(t[0]); + doc_epub_endnotes[segment_filename] ~= t[1]; break; case "poem": break; case "verse": - doc_epub[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.verse_seg(obj, suffix); + doc_epub[segment_filename] ~= to!string(t[0]); + doc_epub_endnotes[segment_filename] ~= t[1]; break; case "code": doc_epub[segment_filename] ~= xhtml_format.code(obj); diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d index 9e66311..ba6adc8 100644 --- a/src/sdp/output_html.d +++ b/src/sdp/output_html.d @@ -81,18 +81,18 @@ template outputHTML() { case "block": switch (obj.is_a) { case "quote": - doc_html ~= xhtml_format.nugget(obj); + doc_html ~= xhtml_format.quote_scroll(obj); break; case "group": - doc_html ~= xhtml_format.nugget(obj); + doc_html ~= xhtml_format.group_scroll(obj); break; case "block": - doc_html ~= xhtml_format.nugget(obj); + doc_html ~= xhtml_format.block_scroll(obj); break; case "poem": break; case "verse": - doc_html ~= xhtml_format.verse(obj); + doc_html ~= xhtml_format.verse_scroll(obj, suffix); break; case "code": doc_html ~= xhtml_format.code(obj); @@ -302,18 +302,26 @@ template outputHTML() { case "block": switch (obj.is_a) { case "quote": - doc_html[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.quote_seg(obj, suffix); + doc_html[segment_filename] ~= to!string(t[0]); + doc_html_endnotes[segment_filename] ~= t[1]; break; case "group": - doc_html[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.group_seg(obj, suffix); + doc_html[segment_filename] ~= to!string(t[0]); + doc_html_endnotes[segment_filename] ~= t[1]; break; case "block": - doc_html[segment_filename] ~= xhtml_format.nugget(obj); + auto t = xhtml_format.block_seg(obj, suffix); + doc_html[segment_filename] ~= to!string(t[0]); + doc_html_endnotes[segment_filename] ~= t[1]; break; case "poem": break; case "verse": - doc_html[segment_filename] ~= xhtml_format.verse(obj); + auto t = xhtml_format.verse_seg(obj, suffix); + doc_html[segment_filename] ~= to!string(t[0]); + doc_html_endnotes[segment_filename] ~= t[1]; // work on break; case "code": doc_html[segment_filename] ~= xhtml_format.code(obj); diff --git a/src/sdp/output_rgx.d b/src/sdp/output_rgx.d index 9959590..0a5dcbb 100644 --- a/src/sdp/output_rgx.d +++ b/src/sdp/output_rgx.d @@ -5,6 +5,7 @@ template SiSUoutputRgxInit() { private import defaults; struct Rgx { static newline = ctRegex!("\n", "mg"); + static strip_br = ctRegex!("^
\n|
\n*$"); static space = ctRegex!(`[ ]`, "mg"); static spaces_line_start = ctRegex!(`^(?P[ ]+)`, "mg"); static spaces_multiple = ctRegex!(`(?P[ ]{2,})`, "mg"); // could be issues for endnotes diff --git a/src/sdp/output_xhtmls.d b/src/sdp/output_xhtmls.d index f371121..2a86d4c 100644 --- a/src/sdp/output_xhtmls.d +++ b/src/sdp/output_xhtmls.d @@ -419,9 +419,65 @@ template outputXHTMLs() { ); return u; } - auto nugget(O)( + auto quote(O)( auto return ref const O obj, + string _txt, + ) { + _txt = font_face(_txt); + string o; + if (obj.obj_cite_number.empty) { + o = format(q"¶
+

+ %s +

+
¶", + obj.is_a, + _txt + ); + } else { + o = format(q"¶
+ +

+ %s +

+
¶", + obj.obj_cite_number, + obj.obj_cite_number, + obj.is_a, + obj.obj_cite_number, + _txt + ); + } + return o; + } + auto quote_scroll(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto tags = _xhtml_anchor_tags(obj.anchor_tags); + string _txt = inline_markup_scroll(obj, _suffix); // issue + string o = quote(obj, _txt); + return o; + } + auto quote_seg(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto t = inline_markup_seg(obj, _suffix); + string _txt = to!string(t[0]); + string[] _endnotes = t[1]; + string o = quote(obj, _txt); + auto u = tuple( + o, + _endnotes, + ); + return u; + } + auto group(O)( + auto return ref const O obj, + string _txt, ) { + _txt = font_face(_txt); string o; if (obj.obj_cite_number.empty) { o = format(q"¶
@@ -430,7 +486,7 @@ template outputXHTMLs() {

¶", obj.is_a, - obj.text + _txt ); } else { o = format(q"¶
@@ -443,19 +499,100 @@ template outputXHTMLs() { obj.obj_cite_number, obj.is_a, obj.obj_cite_number, - obj.text + _txt ); } return o; } + auto group_scroll(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto tags = _xhtml_anchor_tags(obj.anchor_tags); + string _txt = inline_markup_scroll(obj, _suffix); // issue + string o = group(obj, _txt); + return o; + } + auto group_seg(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto t = inline_markup_seg(obj, _suffix); + string _txt = to!string(t[0]); + string[] _endnotes = t[1]; + string o = group(obj, _txt); + auto u = tuple( + o, + _endnotes, + ); + return u; + } + auto block(O)( + auto return ref const O obj, + string _txt, + ) { + _txt = font_face(_txt); + string o; + if (obj.obj_cite_number.empty) { + o = format(q"¶
+

+ %s +

+
¶", + obj.is_a, + _txt + // obj.text + ); + } else { + o = format(q"¶
+ +

+ %s +

+
¶", + obj.obj_cite_number, + obj.obj_cite_number, + obj.is_a, + obj.obj_cite_number, + _txt + // obj.text + ); + } + return o; + } + auto block_scroll(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto tags = _xhtml_anchor_tags(obj.anchor_tags); + string _txt = inline_markup_scroll(obj, _suffix); // issue + string o = block(obj, _txt); + return o; + } + auto block_seg(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto t = inline_markup_seg(obj, _suffix); + string _txt = to!string(t[0]); + string[] _endnotes = t[1]; + string o = block(obj, _txt); + auto u = tuple( + o, + _endnotes, + ); + return u; + } auto verse(O)( // using code from code block, review auto return ref const O obj, + string _txt, ) { - string _txt = obj.text; + _txt = font_face(_txt); _txt = (_txt) .replaceAll(rgx.newline, "
\n") .replaceAll(rgx.two_spaces, " " ~ " " ~ " " ~ " ") - .replaceAll(rgx.nbsp_and_space, " " ~ " "); + .replaceAll(rgx.nbsp_and_space, " " ~ " ") + .replaceAll(rgx.strip_br, ""); string o; if (obj.obj_cite_number.empty) { o = format(q"¶
@@ -482,6 +619,29 @@ template outputXHTMLs() { } return o; } + auto verse_scroll(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto tags = _xhtml_anchor_tags(obj.anchor_tags); + string _txt = inline_markup_scroll(obj, _suffix); // issue + string o = verse(obj, _txt); + return o; + } + auto verse_seg(O)( + auto return ref const O obj, + string _suffix = ".html", + ) { + auto t = inline_markup_seg(obj, _suffix); + string _txt = to!string(t[0]); + string[] _endnotes = t[1]; + string o = verse(obj, _txt); + auto u = tuple( + o, + _endnotes, + ); + return u; + } auto tablarize(O)( auto return ref const O obj, string _txt, -- cgit v1.2.3