diff options
Diffstat (limited to 'src/sisudoc/io_out/html_snippet.d')
-rw-r--r-- | src/sisudoc/io_out/html_snippet.d | 103 |
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">⟰ </a> + <a href="%s" class="lnkicon"> ≅ </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, "&") // "&" + .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; + } +} |