1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
-*- mode: org -*-
#+TITLE: spine (doc_reform) shared
#+DESCRIPTION: documents - structuring, publishing in multiple formats & search
#+FILETAGS: :spine:default:shared:
#+AUTHOR: Ralph Amissah
#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah
#+LANGUAGE: en
#+STARTUP: content hideblocks hidestars noindent entitiespretty
#+PROPERTY: header-args :exports code
#+PROPERTY: header-args+ :noweb yes
#+PROPERTY: header-args+ :results no
#+PROPERTY: header-args+ :cache no
#+PROPERTY: header-args+ :padline no
#+PROPERTY: header-args+ :mkdirp yes
#+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t
- [[./doc-reform.org][doc-reform.org]] [[./][org/]]
* html snippet
** _module template_ :module:
#+HEADER: :tangle "../src/doc_reform/io_out/html_snippet.d"
#+HEADER: :noweb yes
#+BEGIN_SRC d
<<doc_header_including_copyright_and_license>>
module doc_reform.io_out.html_snippet;
template htmlSnippet() {
import
std.file,
std.outbuffer,
std.format,
std.uri,
std.conv : to;
import
doc_reform.io_out.rgx,
doc_reform.meta.rgx_files,
doc_reform.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;
}
@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;
}
}
#+END_SRC
* shared
** _module template_ :module:shared:
#+HEADER: :tangle "../src/doc_reform/share/defaults.d"
#+HEADER: :noweb yes
#+BEGIN_SRC d
<<doc_header_including_copyright_and_license>>
/++
shared default settings
+/
module doc_reform.share.defaults;
<<shared_messages>>
#+END_SRC
** template: messages :messages:
#+NAME: shared_messages
#+BEGIN_SRC d
template Msg() {
import std.stdio;
@safe auto Msg(I)(I doc_matters) {
struct Msg_ {
void v()(string message) {
if (doc_matters.opt.action.vox_gt1) {
writeln(message);
}
}
void vv()(string message) {
if (doc_matters.opt.action.vox_gt2) {
writeln(message);
}
}
}
return Msg_();
}
}
#+END_SRC
* document header including copyright & license
#+NAME: doc_header_including_copyright_and_license
#+HEADER: :noweb yes
#+BEGIN_SRC emacs-lisp
<<./spine_version_info_and_doc_header_including_copyright_and_license.org:spine_doc_header_including_copyright_and_license()>>
#+END_SRC
* __END__
|