diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-06-26 16:30:25 -0400 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-06-27 17:12:48 -0400 |
commit | 61180130e90b43f057369878d2d53605f41f8374 (patch) | |
tree | 96a5d8a33b69818b43c7d47d191cf17a4d797be5 /src/doc_reform/io_out | |
parent | replace some instances of dir listing, index.html (diff) |
html links and metadata, fixes & cosmetic work
Diffstat (limited to 'src/doc_reform/io_out')
-rw-r--r-- | src/doc_reform/io_out/epub3.d | 8 | ||||
-rw-r--r-- | src/doc_reform/io_out/html.d | 30 | ||||
-rw-r--r-- | src/doc_reform/io_out/html_snippet.d | 16 | ||||
-rw-r--r-- | src/doc_reform/io_out/metadata.d | 52 | ||||
-rw-r--r-- | src/doc_reform/io_out/xmls.d | 2 |
5 files changed, 82 insertions, 26 deletions
diff --git a/src/doc_reform/io_out/epub3.d b/src/doc_reform/io_out/epub3.d index c94863b..c0916f9 100644 --- a/src/doc_reform/io_out/epub3.d +++ b/src/doc_reform/io_out/epub3.d @@ -639,8 +639,14 @@ template outputEPub3() { pth_epub3.base.mkdirRecurse; } if (!exists(pth_epub3.base ~ "/index.html")) { + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; auto f = File(pth_epub3.base ~"/index.html", "w"); - f.writeln(""); + f.writeln(format_html_blank_page_guide_home( + "../../css/html_scroll.css", + "https://sisudoc.org", + "../../index.html", + )); } { /+ debug +/ if (doc_matters.opt.action.debug_do_epub) { diff --git a/src/doc_reform/io_out/html.d b/src/doc_reform/io_out/html.d index 9e108c6..5f1f11c 100644 --- a/src/doc_reform/io_out/html.d +++ b/src/doc_reform/io_out/html.d @@ -228,9 +228,9 @@ template outputHTML() { } } doc = xhtml_format.html_head(doc_matters, "scroll") - ~ doc_html - ~ xhtml_format.dom_close - ~ xhtml_format.tail(doc_matters); + ~ doc_html + ~ xhtml_format.dom_close + ~ xhtml_format.tail(doc_matters); scroll_write_output(doc, doc_matters); } @trusted void scroll_write_output(D,M)( @@ -252,8 +252,14 @@ template outputHTML() { } } if (!exists(pth_html.base ~ "/index.html")) { + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; auto f = File(pth_html.base ~"/index.html", "w"); - f.writeln(""); + f.writeln(format_html_blank_page_guide_home( + "../../css/html_scroll.css", + "https://sisudoc.org", + "../../index.html", + )); } } catch (ErrnoException ex) { // Handle error @@ -563,8 +569,14 @@ template outputHTML() { f.writeln(css.html_scroll); } if (!exists(pth_html.css ~ "/index.html")) { + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; auto f = File(pth_html.css ~"/index.html", "w"); - f.writeln(""); + f.writeln(format_html_blank_page_guide_home( + "./css/html_scroll.css", + "https://sisudoc.org", + "../index.html", + )); } } catch (ErrnoException ex) { // Handle error @@ -593,8 +605,14 @@ template outputHTML() { } } if (!exists(pth_html.image ~ "/index.html")) { + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; auto f = File(pth_html.image ~"/index.html", "w"); - f.writeln(""); + f.writeln(format_html_blank_page_guide_home( + "../css/html_scroll.css", + "https://sisudoc.org", + "../index.html", + )); } } } diff --git a/src/doc_reform/io_out/html_snippet.d b/src/doc_reform/io_out/html_snippet.d index fea78a8..8dbb949 100644 --- a/src/doc_reform/io_out/html_snippet.d +++ b/src/doc_reform/io_out/html_snippet.d @@ -83,4 +83,20 @@ template htmlSnippet() { ); return html_blank_default; } + @safe string special_characters_text(string _txt) { + mixin spineRgxOut; + mixin spineRgxXHTML; + static auto rgx = RgxO(); + static auto rgx_xhtml = RgxXHTML(); + _txt = _txt + .replaceAll(rgx_xhtml.ampersand, "&") // "&" + .replaceAll(rgx_xhtml.quotation, """) // """ + .replaceAll(rgx_xhtml.less_than, "<") // "<" + .replaceAll(rgx_xhtml.greater_than, ">") // ">" + .replaceAll(rgx.br_line, "<br />") + .replaceAll(rgx.br_line_inline, "<br />") + .replaceAll(rgx.br_line_spaced, "<br />\n<br />") + .replaceAll(rgx.nbsp_char, " "); + return _txt; + } } diff --git a/src/doc_reform/io_out/metadata.d b/src/doc_reform/io_out/metadata.d index 2686d15..e5e1c02 100644 --- a/src/doc_reform/io_out/metadata.d +++ b/src/doc_reform/io_out/metadata.d @@ -338,8 +338,14 @@ string theme_light_1 = format(q"┃ } } if (!exists(pth_html.base ~ "/index.html")) { + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; auto f = File(pth_html.base ~"/index.html", "w"); - f.writeln(""); + f.writeln(format_html_blank_page_guide_home( + "../../css/html_scroll.css", + "https://sisudoc.org", + "../../index.html", + )); } } catch (ErrnoException ex) { // Handle error @@ -349,13 +355,15 @@ string theme_light_1 = format(q"┃ } } static auto mkup = InlineMarkup(); + import doc_reform.io_out.html_snippet; + mixin htmlSnippet; if (doc_matters.opt.action.debug_do) { writeln(doc_matters.src.filename_base); writeln("Title: ", doc_matters.conf_make_meta.meta.title_full); writeln(" Author: ", doc_matters.conf_make_meta.meta.creator_author); writeln(" Published: ", doc_matters.conf_make_meta.meta.date_published); writeln(" Copyright: ", doc_matters.conf_make_meta.meta.rights_copyright); - writeln(" License: ", doc_matters.conf_make_meta.meta.rights_license); + writeln(" License: ", special_characters_text(doc_matters.conf_make_meta.meta.rights_license)); if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) { foreach (topic; doc_matters.conf_make_meta.meta.classify_topic_register_arr.sort!("toUpper(a) < toUpper(b)", SwapStrategy.unstable)) { string[] subject_tree = topic.split(mkup.sep); @@ -410,44 +418,52 @@ string theme_light_1 = format(q"┃ } metadata_ ~= "<p class=\"lev1\">Published: " ~ doc_matters.conf_make_meta.meta.date_published ~ "</p>"; if (!(doc_matters.conf_make_meta.meta.rights_copyright.empty)) { - metadata_ ~= "<p class=\"lev1\">Copyright: " ~ doc_matters.conf_make_meta.meta.rights_copyright ~ "</p>"; + metadata_ ~= "<p class=\"lev1\">Copyright: " ~ special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright) ~ "</p>"; } else if (doc_matters.opt.action.debug_do || doc_matters.opt.action.vox_gt2) { writeln("WARNING no Copyright information provided in document header ", doc_matters.src.filename_base); } if (!(doc_matters.conf_make_meta.meta.rights_license.empty)) { - metadata_ ~= "<p class=\"lev1\">License: " ~ doc_matters.conf_make_meta.meta.rights_license ~ "</p>"; + metadata_ ~= "<p class=\"lev1\">License: " ~ special_characters_text(doc_matters.conf_make_meta.meta.rights_license) ~ "</p>"; } else if (doc_matters.opt.action.debug_do || doc_matters.opt.action.vox_gt2) { writeln("WARNING no License information provided in document header ", doc_matters.src.filename_base); } if (!(doc_matters.conf_make_meta.meta.notes_summary.empty)) { - metadata_ ~= "<hr /><p class=\"lev0\">Summary:</p><p class=\"lev1\">" ~ doc_matters.conf_make_meta.meta.notes_summary ~ "</p>"; + metadata_ ~= "<hr /><p class=\"lev0\">Summary:</p><p class=\"lev1\">" ~ special_characters_text(doc_matters.conf_make_meta.meta.notes_summary) ~ "</p>"; } else if (doc_matters.opt.action.debug_do) { writeln("WARNING no summary of text provided in document header ", doc_matters.src.filename_base); } metadata_ ~= "<hr /><p class=\"lev1\">source: " ~ doc_matters.src.filename_base ~ "</p>"; if (doc_matters.opt.action.html_link_markup_source) { - metadata_ ~= "<p class=\"lev1\">● markup source: [<a href=\"../../" ~ pth_pod.internal_base ~ "/" ~ doc_matters.src.filename_base ~ ".zip\">" - ~ " zipped pod </a>] " - ~ "[<a href=\"../../" ~ pth_pod.internal_base ~ "/" ~ doc_matters.src.filename_base ~ "/\">" - ~ " pod tree </a>]"; + metadata_ ~= "<p class=\"lev1\">● markup source: the pod [<a href=\"../../" ~ pth_pod.internal_base ~ "/" ~ doc_matters.src.filename_base ~ ".zip\">" + ~ " 🫛 zipped </a>| " + ~ "<a href=\"../../" ~ pth_pod.internal_base ~ "/" ~ doc_matters.src.filename_base ~ "/\">" + ~ " 🫛 tree </a>] "; } - metadata_ ~= "<p class=\"lev1\">● outputs: [<a href=\"" ~ doc_matters.src.filename_base ~ ".html\">" - ~ " ▤ html scroll </a>] " - ~ "[<a href=\"" ~ doc_matters.src.filename_base ~ "/toc.html\">" - ~ " ※ html seg </a>]" + metadata_ ~= "<p class=\"lev1\">● outputs: [ html: <a href=\"" ~ doc_matters.src.filename_base ~ ".html\">" + ~ " ▤ scroll </a> " + ~ "|<a href=\"" ~ doc_matters.src.filename_base ~ "/toc.html\">" + ~ " ※ seg </a>] " ~ "[<a href=\"../../" ~ pth_epub.internal_base ~ "/" ~ doc_matters.src.filename_base ~ "." ~ doc_matters.src.language ~ ".epub\">" - ~ " ◆ epub </a>]"; + ~ " ◆ epub </a>] "; if ((doc_matters.opt.action.html_link_pdf) || (doc_matters.opt.action.html_link_pdf_a4)) { + metadata_ ~= "[ pdf: <a href=\"../../pdf/" + ~ doc_matters.src.filename_base + ~ "." ~ doc_matters.src.language ~ ".a4.portrait.pdf\">" + ~ " □ a4 </a> " + ~ "|<a href=\"../../pdf/" + ~ doc_matters.src.filename_base + ~ "." ~ doc_matters.src.language ~ ".letter.portrait.pdf\">" + ~ " □ U.S. letter </a>] "; + } else if (doc_matters.opt.action.html_link_pdf_a4) { metadata_ ~= "[<a href=\"../../pdf/" ~ doc_matters.src.filename_base ~ "." ~ doc_matters.src.language ~ ".a4.portrait.pdf\">" - ~ " □ pdf (a4) </a>]"; - } - if ((doc_matters.opt.action.html_link_pdf) || (doc_matters.opt.action.html_link_pdf_letter)) { + ~ " □ pdf (a4) </a>] "; + } else if (doc_matters.opt.action.html_link_pdf_letter) { metadata_ ~= "[<a href=\"../../pdf/" ~ doc_matters.src.filename_base ~ "." ~ doc_matters.src.language ~ ".letter.portrait.pdf\">" - ~ " □ pdf (U.S. letter) </a>]"; + ~ " □ pdf (U.S. letter) </a>] "; } metadata_ ~= "</p>"; if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) { diff --git a/src/doc_reform/io_out/xmls.d b/src/doc_reform/io_out/xmls.d index c38844c..4fd4e1b 100644 --- a/src/doc_reform/io_out/xmls.d +++ b/src/doc_reform/io_out/xmls.d @@ -320,7 +320,7 @@ template outputXHTMLs() { ) { string o; string metadata_links = ((doc_matters.opt.action.html_link_curate) - ? format(q"┃<p class="small"><a href="%s">⟰ </a> [<a href="%s"> %s </a><a href="%sepub/%s.%s.epub"> ◆ </a>%s%s<a href="%smetadata.%s.html"> ⌘• </a>] <a href="%s../../index.html"> ≅ </a>|<a href="%s../../authors.html"> 🖋 </a>|<a href="%s../../topics.html"> ⌘ </a>|</p>┃", + ? format(q"┃<p class="small"><a href="%s">⟰ </a> [<a href="%s"> %s </a><a href="%sepub/%s.%s.epub"> ◆ </a>%s%s<a href="%smetadata.%s.html"> ℹ </a>] <a href="%s../../index.html"> ≅ </a>|<a href="%s../../authors.html"> 🖋 </a>|<a href="%s../../topics.html"> ⌘ </a>|</p>┃", (doc_matters.opt.action.webserver_url_doc_root.length > 0) ? doc_matters.opt.action.webserver_url_doc_root : doc_matters.conf_make_meta.conf.w_srv_data_root_url |