blob: e11e8356b5b1abe6b635a84584f6afe0f5aa6402 (
plain) (
blame)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
|
'hide Necessary definitions for all pages under src
'if {or {empty {env OUTPUT_FORMAT}};{eq HTML;{env OUTPUT_FORMAT}}}
# FILENAME
'def FILENAME {trimEnd {1};du}html
# HEADER
Expected substitutions:
title - Page title
desc - Page description
'def HEADER <!DOCTYPE html>\
<html lang="en">\
\
<head>\
<meta charset="UTF-8">\
<meta name="author" content="Kamen Mladenov">\
<meta name="robots" content="index, follow">\
<link rel="icon" href="/img/favicon.ico" type="image/x-icon">\
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">\
<meta name="theme-color" content="#ffffff"/>\
<meta name="viewport" content="width=device-width, initial-scale=1.0">\
<link rel="stylesheet" href="/styles.css">\
<link rel="stylesheet" href="/darkmode.css">\
<link rel="stylesheet" href="/hide-js-styling.css">\
<link rel="stylesheet" href="/presentation.css">\
<link rel="stylesheet" href="./machine_table.css" id="upp2025_w02" disabled>\
<script type="text/javascript" src="/scripts/styling-preload.js" crossorigin="anonymous"></script>\
<meta name="description" content="{truncate {desc};120}">\
<!-- Thanks https://stackoverflow.com/a/25093272/12036073 -->\
<meta prefix="og: http://ogp.me/ns#" property="og:type" content="website">\
<meta prefix="og: http://ogp.me/ns#" property="og:title" content="{title} — Syndamia">\
<meta prefix="og: http://ogp.me/ns#" property="og:description" content="{truncate {desc};120}">\
<meta prefix="og: http://ogp.me/ns#" property="og:image" content="https://syndamia.com/img/meta-banner.png">\
<meta prefix="og: http://ogp.me/ns#" property="og:url" content="https://syndamia.com">\
<title>{title} — Syndamia</title>\
</head>\
<body id="content-wrapper" text="black" bgcolor="white" link="#336700" vlink="#336700">\
<span class="nocss-aid"><a href="#article-container">Jump to content</a><br><br></span>\
\
<nav id="sidebar">\
<nav id="header" class="sidebar-section">\
<span class="nocss-aid">▲</span>\
<a href="/">Home</a>\
<span id="expandNavbarBtn" class="btn">▲</span>\
<script type="text/javascript" src="/scripts/expand-navbar.js" crossorigin="anonymous" defer></script>\
<span class="nocss-aid"><br></span>\
</nav>\
\
<nav id="index" class="sidebar-section">\
<span class="nocss-aid">├</span>\
\
<span>Text</span><span class="nocss-aid"> – </span>\
<span class="index-list">\
<a class="index-list-item" href="/blog">Blog</a>\
<span class="nocss-aid">•</span>\
<a class="index-list-item" href="/teaching">Teaching</a>\
</span>\
\
<span class="nocss-aid"><br>├</span>\
\
<span>Interactive</span><span class="nocss-aid"> – </span>\
<span class="index-list">\
<a class="index-list-item" href="/slides">Slides</a>\
<span class="nocss-aid">•</span>\
<a class="index-list-item" href="/preserved-web-pages">Preserved web</a>\
</span>\
\
<span class="nocss-aid"><br>├</span>\
\
<span>Files</span><span class="nocss-aid"> – </span>\
<span class="index-list">\
<a class="index-list-item" href="/preserved-media">Archived media</a>\
<span class="nocss-aid">•</span>\
<a class="index-list-item" href="/misc">Miscellaneous</a>\
</span>\
\
<span class="nocss-aid"><br>└</span>\
\
<span>Me</span><span class="nocss-aid"> – </span>\
<span class="index-list">\
<a class="index-list-item" href="/about">About</a>\
<span class="nocss-aid">•</span>\
<a class="index-list-item" href="/setup">Setup</a>\
</span>\
<span class="nocss-aid"><br></span>\
</nav>\
\
<!-- This nav is entirely removed in tiny website -->\
<nav id="settingsWrapper" class="sidebar-section">\
<span id="changeThemeBtn" class="btn setting-btn"><span>Light</span> theme</span>\
<span id="changeWidthBtn" class="btn setting-btn"><span>Wide</span> text</span>\
<span id="snowBtn" class="btn setting-btn nodisplay"><span>Remove</span> snowflakes</span>\
</nav>\
\
<span class="nocss-aid"><br></span>\
\
<nav id="footer" class="sidebar-section">\
<span class="nocss-aid">╔</span>\
\
<a href="/license.html" title="CC BY-SA 4.0 and GNU GPLv3">CC BY-SA 4.0 and GNU GPLv3</a>\
\
<span class="nocss-aid"><br>║</span><span class="brt"></span>\
\
<a href="/privacy.html" title="Privacy policy">Privacy policy</a> •\
<a href="/accessibility.html" title="Accessibility">Accessibility</a><span class="br"></span><span class="nocss-aid"> •</span>\
<a href="/regarding-js.html" title="Regarding usage of JavaScript">Regarding JavaScript</a><span class="br"></span><span class="nocss-aid"> •</span>\
<a href="/acknowledgements.html" title="Acknowledgements">Acknowledgements</a><span class="br"></span>\
\
<span class="nocss-aid"><br>║</span><span class="brt"></span>\
\
<a href="https://gitlab.com/Syndamia" target="_blank" title="GitLab">GitLab</a> •\
<a href="https://github.com/Syndamia" target="_blank" title="GitHub">GitHub</a> •\
<a href="/about/#contact" target="_blank" title="Contact">Contact</a><span class="br"></span><span class="nocss-aid"> •</span>\
<a href="https://bg.linkedin.com/in/kamen-mladenov" target="_blank" title="Linkedin">LinkedIn</a><span class="br"></span>\
\
<span class="nocss-aid"><br>╚</span><span class="brt"></span>\
\
<a href="https://gitlab.com/Syndamia/syndamiadotcom" target="_blank" class="link-tab">Powered with:</a><span class="br"></span>\
<a href="https://gitlab.com/Syndamia/dunbar" target="_blank" class="link-tab">dunbar</a><span class="br"></span><span class="nocss-aid">, </span>\
<a href="https://invisible-island.net/mawk/" target="_blank" class="link-tab">mawk</a><span class="br"></span><span class="nocss-aid">, </span>\
<a href="https://www.gnu.org/software/bash/" target="_blank" class="link-tab">GNU bash</a><span class="br"></span><span class="nocss-aid">, </span>\
<a href="http://andre-simon.de/doku/highlight/en/highlight.php" target="_blank" class="link-tab">Highlight</a>\
</nav>\
</nav>\
\
<article>\
<script type="text/javascript" src="/scripts/page-width.js" crossorigin="anonymous" defer></script>\
<script type="text/javascript" src="/scripts/snow-preload.js" crossorigin="anonymous" defer></script>\
<div id="article-container">{def href_section;0}{def href_url;0}{def slide;0}{def URL;{trimStart {query inputFile};./website/}}
# FOOTER
'def FOOTER <div class="gap"></div>\
<footer>\
<a href="/{URL}">Original markup</a>\
 • \
<a href="/license.html">CC BY-SA 4.0</a>\
(unless stated otherwise)\
 • \
2020–2026\
</footer>\
</div>\
</article>\
\
<div id="scrollBtn" class="btn">︽</div>\
</body>\
\
<script type="text/javascript" src="/scripts/theme-changer.js" crossorigin="anonymous" defer></script>\
<script type="text/javascript" src="/scripts/back-to-top.js" crossorigin="anonymous" defer></script>\
<script type="text/javascript" src="/scripts/keyboard.js" crossorigin="anonymous" defer></script>\
<script type="text/javascript" src="/scripts/snow.js" crossorigin="anonymous" defer></script>\
\
</html>
# Blocks
'if {env HIGHLIGHT}
'cmdprocess code highlight -O html -f -S {default {normalise {LANG}};text}
'endif
## Attention
'let start question <div class="special-par question-par"><div class="special-contents special-with-icon"><img src="/img/dialog-question.png" class="special-par-icon borderless unzoomable" alt="question">
'let end question </div></div>
'let start warn <div class="special-par warn-par"><div class="special-contents special-with-icon"><img src="/img/dialog-warning.png" class="special-par-icon borderless unzoomable" alt="warn">
'let end warn </div></div>
'let start important <div class="special-par important-par"><div class="special-contents special-with-icon"><img src="/img/dialog-important.png" class="special-par-icon borderless unzoomable" alt="important">
'let end important </div></div>
'let start note <div class="special-par note-par"><div class="special-contents">
'let end note </div></div>
## Headers
For each header (except H1) we'll add a "gap" element and an anchor link to the end.
The gap is only for visual purposes.
href function
'def fhref {default {normalise {1}};section-{inc {2}}}
auto href
'def ahref {def href;{fhref {query line};href_section}}{href}
url href
'def uhref {url {1};#{fhref {1};href_url}}
'let start header2 <div class="gap"></div> <h2 id="{ahref}">
'let end header2 </h2> <a class="h-anchor" href="#{href}" aria-hidden="true">#</a>
'let start header3 <div class="gap"></div> <h3 id="{ahref}">
'let end header3 </h3> <a class="h-anchor" href="#{href}" aria-hidden="true">#</a>
'let start header4 <div class="gap"></div> <h4 id="{ahref}">
'let end header4 </h4> <a class="h-anchor" href="#{href}" aria-hidden="true">#</a>
'let start header5 <div class="gap"></div> <h5 id="{ahref}">
'let end header5 </h5> <a class="h-anchor" href="#{href}" aria-hidden="true">#</a>
'let start header6 <div class="gap"></div> <h6 id="{ahref}">
'let end header6 </h6> <a class="h-anchor" href="#{href}" aria-hidden="true">#</a>
## Teaching
'let start solution-link <div class="exercise-solution"><
'let end solution-link ></div>
## Contents
'let start contents <div id="contents-container"><h2 id="contents">Contents</h2> <a class="h-anchor" href="#contents" aria-hidden="true">#</a>
'let end contents </div>
## Presentations
'let start font18 <div class="font18">
'let end font18 </div>
'let start centered18 <div class="centered font18">
'let end centered18 </div>
'let start slide18 <div id="slide-{inc slide}" class="slide font18">
'let end slide18 </div>
'let start middle_slide18 <div id="slide-{inc slide}" class="slide centered-slide font18"><div></div><div>
'let end middle_slide18 </div><div></div></div>
'let start title_slide18 <div id="slide-{inc slide}" class="slide centered-slide centered font18"><div></div><div>
'let end title_slide18 </div><div></div></div>
'let start font20 <div class="font20">
'let end font20 </div>
'let start centered20 <div class="centered font20">
'let end centered20 </div>
'let start slide20 <div id="slide-{inc slide}" class="slide font20">
'let end slide20 </div>
'let start middle_slide20 <div id="slide-{inc slide}" class="slide centered-slide font20"><div></div><div>
'let end middle_slide20 </div><div></div></div>
'let start title_slide20 <div id="slide-{inc slide}" class="slide centered-slide centered font20"><div></div><div>
'let end title_slide20 </div><div></div></div>
'let start font22 <div class="font22">
'let end font22 </div>
'let start centered22 <div class="centered font22">
'let end centered22 </div>
'let start slide22 <div id="slide-{inc slide}" class="slide font22">
'let end slide22 </div>
'let start middle_slide22 <div id="slide-{inc slide}" class="slide centered-slide font22"><div></div><div>
'let end middle_slide22 </div><div></div></div>
'let start title_slide22 <div id="slide-{inc slide}" class="slide centered-slide centered font22"><div></div><div>
'let end title_slide22 </div><div></div></div>
'let start font25 <div class="font25">
'let end font25 </div>
'let start centered25 <div class="centered font25">
'let end centered25 </div>
'let start slide25 <div id="slide-{inc slide}" class="slide font25">
'let end slide25 </div>
'let start middle_slide25 <div id="slide-{inc slide}" class="slide centered-slide font25"><div></div><div>
'let end middle_slide25 </div><div></div></div>
'let start title_slide25 <div id="slide-{inc slide}" class="slide centered-slide centered font25"><div></div><div>
'let end title_slide25 </div><div></div></div>
'let start font27 <div class="font27">
'let end font27 </div>
'let start centered27 <div class="centered font27">
'let end centered27 </div>
'let start slide27 <div id="slide-{inc slide}" class="slide font27">
'let end slide27 </div>
'let start middle_slide27 <div id="slide-{inc slide}" class="slide centered-slide font27"><div></div><div>
'let end middle_slide27 </div><div></div></div>
'let start title_slide27 <div id="slide-{inc slide}" class="slide centered-slide centered font27"><div></div><div>
'let end title_slide27 </div><div></div></div>
'let start font35 <div class="font35">
'let end font35 </div>
'let start centered35 <div class="centered font35">
'let end centered35 </div>
'let start slide35 <div id="slide-{inc slide}" class="slide font35">
'let end slide35 </div>
'let start middle_slide35 <div id="slide-{inc slide}" class="slide centered-slide font35"><div></div><div>
'let end middle_slide35 </div><div></div></div>
'let start title_slide35 <div id="slide-{inc slide}" class="slide centered-slide centered font35"><div></div><div>
'let end title_slide35 </div><div></div></div>
'let start font <div>
'let end font </div>
'let start centered <div class="centered">
'let end centered </div>
'let start slide <div id="slide-{inc slide}" class="slide">
'let end slide </div>
'let start middle_slide <div id="slide-{inc slide}" class="slide centered-slide"><div></div><div>
'let end middle_slide </div><div></div></div>
'let start title_slide <div id="slide-{inc slide}" class="slide centered-slide centered"><div></div><div>
'let end title_slide </div><div></div></div>
'let start row <div class="layout-table"><div class="layout-row">
'let end row </div></div>
'let start sqrow <div class="layout-table fixed-layout"><div class="layout-row">
'let end sqrow </div></div>
'let start width5% <div class="width5per">
'let end width5% </div>
'let start width10% <div class="width10per">
'let end width10% </div>
'let start width15% <div class="width15per">
'let end width15% </div>
'let start width20% <div class="width20per">
'let end width20% </div>
'let start width25% <div class="width25per">
'let end width25% </div>
'let start width30% <div class="width30per">
'let end width30% </div>
'let start width35% <div class="width35per">
'let end width35% </div>
'let start width40% <div class="width40per">
'let end width40% </div>
'let start width45% <div class="width45per">
'let end width45% </div>
'let start width50% <div class="width50per">
'let end width50% </div>
'let start width55% <div class="width55per">
'let end width55% </div>
'let start width60% <div class="width60per">
'let end width60% </div>
'let start width65% <div class="width65per">
'let end width65% </div>
'let start width70% <div class="width70per">
'let end width70% </div>
'let start width75% <div class="width75per">
'let end width75% </div>
'let start width80% <div class="width80per">
'let end width80% </div>
'let start width85% <div class="width85per">
'let end width85% </div>
'let start width90% <div class="width90per">
'let end width90% </div>
'let start width95% <div class="width95per">
'let end width95% </div>
'let start fright <div class="float-right">
'let end fright </div>
'let start column <div class="column">
'let end column </div>
# Substitutions
'def due_for_rework {url {b {i Due for rework}};/rework.html}
'def nohtml {greplace {1};<;<\;}
## Country flags
'def gb <img src="/img/gb.svg" class="flag unzoomable svg" alt="ENG" height=18>
'def bg <img src="/img/bg.svg" class="flag unzoomable svg" alt="BGN" height=18>
## File types
'def ft-photo <span class="file-type-icon"></span>
'def ft-text <span class="file-type-icon"></span>
'def ft-zip <span class="file-type-icon"></span>
'def ft-movie <span class="file-type-icon"></span>
'def ft-markdown <span class="file-type-icon"></span>
'def ft-browser <span class="file-type-icon"></span>
## Pagenav
Expects substitutions:
reading
created
edited
'def breadcrumb » {def x/...;{>= {count {1};/};1}}{if {x/...};{url {substrBefore {1};/};{default {2};./}};{italic {substrAfter {1};/}}} {{if {x/...};breadcrumb;none} {substrAfter {1};/};{substrAfter {2};../}}
'def pagenav <div id="pagenav">\
<div id="pagenav-stats">\
<strong>Reading: {1}</strong>  ||  <strong>Created: {2}</strong>  ||  <strong>Edited: {3}</strong>\
 || \
<a href="https://gitlab.com/Syndamia/syndamiadotcom/-/blob/master/src/{URL}"><strong>GitLab source</strong></a>\
</div>\
<div id="pagenav-breadcrumb">\
{breadcrumb {trimEnd {URL};.du;/index};{repeat ../;{- {count {URL};/};1}}}\
</div>\
</div>
## Presentations
'def line <hr/>
'def presentation-controller <nav id="presentCont">\
<span id="prevSlideBtn" class="btn nodisplay">←</span>\
<a id="slideIndex" class="nodisplay" href="#slide-0">0</a>\
<span id="nextSlideBtn" class="btn nodisplay">→</span>\
<span id="incrementationBtn" class="btn nodisplay">⋮</span>\
<span id="articleBtn" class="btn setting-btn">As article ☲</span>\
<span id="presentBtn" class="btn setting-btn">Present ⎚</span>\
<span id="printBtn" class="btn setting-btn">Print ⎙</span>\
</nav><br><br>\
<script type="text/javascript" src="/scripts/presentation.js" crossorigin="anonymous"></script>
'def newrow </div><div class="layout-row">
'def br1 <div class="br1"></div>
'def br2 <div class="br2"></div>
'def br3 <div class="br3"></div>
'def br4 <div class="br4"></div>
'def br5 <div class="br5"></div>
'def br6 <div class="br6"></div>
'def br7 <div class="br7"></div>
'def br8 <div class="br8"></div>
'def br9 <div class="br9"></div>
## Pagination
1 2 3 4 5
{pagination START_URL;PREV_TITLE;PREV_URL;NEXT;NEXT_URL}
'def pagination {if {1};{code {url {nohtml <<};{1}}} || }{if {2};{code {url {nohtml <} {2};{3}}}}{if {2}{4}; || }{if {4};{code {url {4} {nohtml >};{5}}}}
'else
'exit 1
'endif
|