aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sisudoc/io_out/html_snippet.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sisudoc/io_out/html_snippet.d')
-rw-r--r--src/sisudoc/io_out/html_snippet.d103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/sisudoc/io_out/html_snippet.d b/src/sisudoc/io_out/html_snippet.d
new file mode 100644
index 0000000..480246a
--- /dev/null
+++ b/src/sisudoc/io_out/html_snippet.d
@@ -0,0 +1,103 @@
+/+
+- Name: SisuDoc Spine, Doc Reform [a part of]
+ - Description: documents, structuring, processing, publishing, search
+ - static content generator
+
+ - Author: Ralph Amissah
+ [ralph.amissah@gmail.com]
+
+ - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved.
+
+ - License: AGPL 3 or later:
+
+ Spine (SiSU), a framework for document structuring, publishing and
+ search
+
+ Copyright (C) Ralph Amissah
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU AFERO General Public License as published by the
+ Free Software Foundation, either version 3 of the License, or (at your
+ option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program. If not, see [https://www.gnu.org/licenses/].
+
+ If you have Internet connection, the latest version of the AGPL should be
+ available at these locations:
+ [https://www.fsf.org/licensing/licenses/agpl.html]
+ [https://www.gnu.org/licenses/agpl.html]
+
+ - Spine (by Doc Reform, related to SiSU) uses standard:
+ - docReform markup syntax
+ - standard SiSU markup syntax with modified headers and minor modifications
+ - docReform object numbering
+ - standard SiSU object citation numbering & system
+
+ - Homepages:
+ [https://www.sisudoc.org]
+ [https://www.doc-reform.org]
+
+ - Git
+ [https://git.sisudoc.org/]
+
++/
+module sisudoc.io_out.html_snippet;
+@safe:
+template htmlSnippet() {
+ import
+ std.file,
+ std.outbuffer,
+ std.format,
+ std.uri,
+ std.conv : to;
+ import
+ sisudoc.io_out.rgx,
+ sisudoc.meta.rgx_files,
+ sisudoc.io_out.rgx_xhtml;
+ auto format_html_blank_page_guide_home()(
+ string css_style,
+ string home_url,
+ string collection_home_path
+ ) {
+ auto html_blank_default = format(q"┃<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/plain; charset=UTF-8" />
+ <link href="%s" rel="stylesheet" />
+ </head>
+ <body>
+ <p class="icons">
+ <a href="%s" class="lnkicon">⟰&nbsp;</a>&nbsp;
+ <a href="%s" class="lnkicon">&nbsp;≅&nbsp;</a>
+ </p>
+ </body>
+</html>┃",
+ css_style,
+ home_url,
+ collection_home_path
+ );
+ return html_blank_default;
+ }
+ 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, "&amp;") // "&#38;"
+ .replaceAll(rgx_xhtml.quotation, "&quot;") // "&#34;"
+ .replaceAll(rgx_xhtml.less_than, "&lt;") // "&#60;"
+ .replaceAll(rgx_xhtml.greater_than, "&gt;") // "&#62;"
+ .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;
+ }
+}