Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitfa067f8ad565207969bb0471d13dd0b51fe989c4 (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-08-18 18:56:44 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-08-18 18:56:44 +0300
Files9e05a23e35afc467ed04a4067e5e04fdbe586ddd
syndamia.com-fa067f8ad565207969bb0471d13dd0b51fe989c4.tar
syndamia.com-fa067f8ad565207969bb0471d13dd0b51fe989c4.tar.gz
syndamia.com-fa067f8ad565207969bb0471d13dd0b51fe989c4.zip
Parent5dc59113660b6d30935aebe1387e39faf5beeac3 (diff)
feat(ext): Rewrite most AWK extensions as a dunbar file
8 files changed, 103 insertions, 62 deletions
-rw-r--r--ext/attention.awk9
-rw-r--r--ext/contents.awk7
-rw-r--r--ext/heading-anchors.awk11
-rw-r--r--ext/icons.awk19
-rw-r--r--ext/pagenav.awk9
-rw-r--r--ext/teaching.awk3
-rwxr-xr-xgenerate.sh6
-rw-r--r--global.du101
diff --git a/ext/attention.awk b/ext/attention.awk
deleted file mode 100644
index 85b7854..0000000
--- a/ext/attention.awk
+++ /dev/null
@@ -1,9 +0,0 @@
-BEGIN {
- define_attention("question", "dialog-question.png")
- define_attention("warn", "dialog-warning.png")
- define_attention("important", "dialog-important.png")
-}
-
-function define_attention(name, image) {
- define(name, "<p class=\"special-par " name "-par\"><img src=\"/img/" image "\" class=\"special-par-icon borderless unzoomable\" alt=\"" name "\">")
-}
diff --git a/ext/contents.awk b/ext/contents.awk
deleted file mode 100644
index e5e82df..0000000
--- a/ext/contents.awk
+++ /dev/null
@@ -1,7 +0,0 @@
-BEGIN {
- contents_anchor = anchor
- sub(/\[\?header\?\]/, "contents", contents_anchor)
- ++all_titles["contents"]
-
- define("CONTENTS", "<div id=\"contents-container\"><h2 id=\"contents\">Contents</h2>" contents_anchor, "</div>")
-}
diff --git a/ext/heading-anchors.awk b/ext/heading-anchors.awk
deleted file mode 100644
index 42b85a0..0000000
--- a/ext/heading-anchors.awk
+++ /dev/null
@@ -1,11 +0,0 @@
-BEGIN {
- gap = "<div class=\"gap\"></div>" ORS
- small_gap = "<div class=\"gap-small\"></div>" ORS
- anchor = ORS "<a class=\"h-anchor\" href=\"#[?header?]\" aria-hidden=\"true\">#</a>"
-
- define("HEADER2", gap "<h2 id=\"[?header?]\">", "</h2>" anchor)
- define("HEADER3", small_gap "<h3 id=\"[?header?]\">", "</h3>" anchor)
- define("HEADER4", small_gap "<h4 id=\"[?header?]\">", "</h4>" anchor)
- define("HEADER5", small_gap "<h5 id=\"[?header?]\">", "</h5>" anchor)
- define("HEADER6", small_gap "<h6 id=\"[?header?]\">", "</h6>" anchor)
-}
diff --git a/ext/icons.awk b/ext/icons.awk
deleted file mode 100644
index 027cc75..0000000
--- a/ext/icons.awk
+++ /dev/null
@@ -1,19 +0,0 @@
-BEGIN {
- flagdef("gb", "ENG")
- flagdef("bg", "BGN")
-
- ftdef("ft-photo", "&#xeb0a;")
- ftdef("ft-text", "&#xeaa2;")
- ftdef("ft-zip", "&#xed4e;")
- ftdef("ft-movie", "&#xeafa;")
- ftdef("ft-markdown", "&#xec41;")
- ftdef("ft-browser", "&#xebb7;")
-}
-
-function flagdef(flag, alt) {
- substitutions[flag] = "<img src=\"/img/" flag ".svg\" class=\"flag unzoomable svg\" alt=\"" alt "\" height=18>"
-}
-
-function ftdef(ft, char) {
- substitutions[ft] = "<span class=\"file-type-icon\">" char "</span>"
-}
diff --git a/ext/pagenav.awk b/ext/pagenav.awk
index b7a69d8..59b67b4 100644
--- a/ext/pagenav.awk
+++ b/ext/pagenav.awk
@@ -1,12 +1,3 @@
-BEGIN {
- substitutions["pagination_start"] = "`[[$next_link] >]`"
- substitutions["pagination_second"] = "`[< [$prev_link]]` || `[[$next_link] >]`"
- substitutions["pagination_middle"] = "`[[url [$start_url] <<]]` || `[< [$prev_link]]` || `[[$next_link] >]`"
- substitutions["pagination_end"] = "`[[url [$start_url] <<]]` || `[< [$prev_link]]`"
-
- substitutions["due_for_rework"] = "[url /rework.html =[*[Due for rework]*]=]"
-}
-
FNR == 1 {
STD_FILENAME = FILENAME
sub(/^\.\/website\//, "", STD_FILENAME)
diff --git a/ext/teaching.awk b/ext/teaching.awk
deleted file mode 100644
index 07aa590..0000000
--- a/ext/teaching.awk
+++ /dev/null
@@ -1,3 +0,0 @@
-BEGIN {
- define("solution-link", "<div class=\"exercise-solution\">&lt;", " &gt;</div>")
-}
diff --git a/generate.sh b/generate.sh
index 49096fa..453acd8 100755
--- a/generate.sh
+++ b/generate.sh
@@ -35,11 +35,9 @@ EOF
/usr/bin/env dash ./dunbar/dunbar_awk/dunbar.sh html \
-i \
- -e ./ext/attention.awk \
- -e ./ext/heading-anchors.awk -e ./ext/pagenav.awk \
- -e ./ext/icons.awk -e ./ext/presentation.awk \
- -e ./ext/contents.awk -e ./ext/teaching.awk \
+ -e ./ext/pagenav.awk -e ./ext/presentation.awk \
-wo \
+ ./global.du \
$(find "$GEN_DIR" -type f -name "*.du")
# }}}
# 2. Meta handling {{{
diff --git a/global.du b/global.du
new file mode 100644
index 0000000..1e31ec6
--- /dev/null
+++ b/global.du
@@ -0,0 +1,101 @@
+'stop_output
+
+# Attention blocks
+
+'define new_attention 'define_block [$name] <p class="special-par [$name]-par"><img src="/img/[$image]" class="special-par-icon borderless unzoomable" alt="[$name]"> </p>
+
+ 'define name question
+ 'define image dialog-question.png
+ [$new_attention]
+
+ 'define name warn
+ 'define image dialog-warning.png
+ [$new_attention]
+
+ 'define name important
+ 'define image dialog-important.png
+ [$new_attention]
+
+# 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.
+
+'define new_header 'define_block header[$num] <div class="[$gap]"></div> <h[$num] id="[?header?]"> </h[$num]>\ <a\ class="h-anchor"\ href="#[?header?]"\ aria-hidden="true">#</a>
+
+ 'define num 2
+ 'define gap gap
+ [$new_header]
+
+ 'define num 3
+ 'define gap gap-small
+ [$new_header]
+
+ 'define num 4
+ 'define gap gap-small
+ [$new_header]
+
+ 'define num 5
+ 'define gap gap-small
+ [$new_header]
+
+ 'define num 6
+ 'define gap gap-small
+ [$new_header]
+
+# Country flags
+
+'define new_flag 'define [$flag] <img src="/img/[$flag].svg" class="flag unzoomable svg" alt="[$alt]" height=18>
+
+ 'define flag gb
+ 'define alt ENG
+ [$new_flag]
+
+ 'define flag bg
+ 'define alt BGN
+ [$new_flag]
+
+# File types
+
+'define new_ft 'define ft-[$name] <span class="file-type-icon">[$char]</span>
+
+ 'define name photo
+ 'define char &#xeb0a;
+ [$new_ft]
+
+ 'define name text
+ 'define char &#xeaa2;
+ [$new_ft]
+
+ 'define name zip
+ 'define char &#xed4e;
+ [$new_ft]
+
+ 'define name movie
+ 'define char &#xeafa;
+ [$new_ft]
+
+ 'define name markdown
+ 'define char &#xec41;
+ [$new_ft]
+
+ 'define name browser
+ 'define char &#xebb7;
+ [$new_ft]
+
+# Pagination
+
+'define pagination_start `[[$next_link] >]`
+'define pagination_second `[< [$prev_link]]` || `[[$next_link] >]`
+'define pagination_middle `[[url [$start_url] <<]]` || `[< [$prev_link]]` || `[[$next_link] >]`
+'define pagination_end `[[url [$start_url] <<]]` || `[< [$prev_link]]`
+
+# Teaching
+
+'define_block solution-link <div class="exercise-solution">&lt; &gt;</div>
+
+# Other
+
+'define due_for_rework [url /rework.html =[*[Due for rework]*]=]
+
+'define_block contents <div id="contents-container"><h2 id="contents">Contents</h2> <a class="h-anchor" href="#contents" aria-hidden="true">#</a> </div>