aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/default_shared_snippets.org
blob: 66041f3d4d24806599241a6b873f328d35448f3d (plain)
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
129
130
-*- 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;
@safe:
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">⟰&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;
  }
}
#+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;
@safe:
<<shared_messages>>
#+END_SRC

** template: messages :messages:

#+NAME: shared_messages
#+BEGIN_SRC d
template Msg() {
  import std.stdio;
  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__