aboutsummaryrefslogtreecommitdiff
path: root/v2/src
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2023-04-04 17:24:12 -0300
committerEuAndreh <eu@euandre.org>2023-04-04 17:24:12 -0300
commit419cd721024f5ebc364cdd9014222e0a48221ac7 (patch)
tree6de46c7c89853514f5b5be30a392bb7570767354 /v2/src
parentv2: WIP genhtml via envsubst (diff)
downloadeuandre.org-419cd721024f5ebc364cdd9014222e0a48221ac7.tar.gz
euandre.org-419cd721024f5ebc364cdd9014222e0a48221ac7.tar.xz
v2/: HTML! Handle pages, multiple languages, and snippets
Diffstat (limited to 'v2/src')
-rwxr-xr-xv2/src/bin/makemake13
-rw-r--r--v2/src/content/about.md17
l---------v2/src/content/img/envelope.svg1
l---------v2/src/content/img/lock.svg1
-rw-r--r--v2/src/content/tils/lisp-three-way-conditional.md2
-rwxr-xr-xv2/src/development/genhtml.sh36
-rwxr-xr-xv2/src/development/getconf.sh116
-rw-r--r--v2/src/lib/base-conf.in19
-rw-r--r--v2/src/lib/base.en.conf8
-rw-r--r--v2/src/lib/base.pt.conf8
-rw-r--r--v2/src/lib/comment.en.html8
-rw-r--r--v2/src/lib/comment.pt.html6
-rw-r--r--v2/src/lib/date.en.html3
-rw-r--r--v2/src/lib/date.pt.html3
-rw-r--r--v2/src/lib/postamble.html23
-rw-r--r--v2/src/lib/preamble.html6
-rw-r--r--v2/src/lib/update.en.html3
-rw-r--r--v2/src/lib/update.pt.html3
18 files changed, 180 insertions, 96 deletions
diff --git a/v2/src/bin/makemake b/v2/src/bin/makemake
index 06a7d33..17fa244 100755
--- a/v2/src/bin/makemake
+++ b/v2/src/bin/makemake
@@ -66,16 +66,23 @@ varlist() {
html_deps() {
"$@" | sed 's/^\(.*\)\.md$/\1.conf \1.content: \1.md/'
- "$@" | sed 's/^\(.*\)\.md$/\1.html: \1.conf \1.content/'
+ "$@" | sed 's/^\(.*\)\.md$/\1.snippets \1.html: \1.conf \1.content/'
printf '\n'
}
content_mds() {
- find src/content/"$1"/ -type f -name '*.md'
+ {
+ if [ "$r" = 'pages' ]; then
+ echo src/content/*.md
+ else
+ echo src/content/"$r"/*.md
+ fi
+ } | tr ' ' '\n'
}
RESOURCES='
+pages
pastebins
tils
'
@@ -87,6 +94,7 @@ EXTENSIONS='
.prehtml
.posthtml
.html
+.snippets
'
for r in $RESOURCES; do
@@ -111,6 +119,7 @@ for r in $RESOURCES; do
printf '\n'
done
+
all_resources() {
echo "$RESOURCES" | tr ' ' '\n' | grep .
}
diff --git a/v2/src/content/about.md b/v2/src/content/about.md
new file mode 100644
index 0000000..b10f26b
--- /dev/null
+++ b/v2/src/content/about.md
@@ -0,0 +1,17 @@
+---
+
+title: About
+
+layout: page
+
+lang: en
+
+ref: aboud
+
+---
+
+It's all about me, baby!
+
+```
+xablau
+```
diff --git a/v2/src/content/img/envelope.svg b/v2/src/content/img/envelope.svg
new file mode 120000
index 0000000..bd0c577
--- /dev/null
+++ b/v2/src/content/img/envelope.svg
@@ -0,0 +1 @@
+../../../../static/envelope.svg \ No newline at end of file
diff --git a/v2/src/content/img/lock.svg b/v2/src/content/img/lock.svg
new file mode 120000
index 0000000..f9a4f33
--- /dev/null
+++ b/v2/src/content/img/lock.svg
@@ -0,0 +1 @@
+../../../../static/lock.svg \ No newline at end of file
diff --git a/v2/src/content/tils/lisp-three-way-conditional.md b/v2/src/content/tils/lisp-three-way-conditional.md
index f53451b..81920c4 100644
--- a/v2/src/content/tils/lisp-three-way-conditional.md
+++ b/v2/src/content/tils/lisp-three-way-conditional.md
@@ -4,7 +4,7 @@ title: Three-way conditional for number signs on Lisp
date: 2021-04-24 3
-updated_at: 2021-08-14
+update: 2021-08-14
layout: post
diff --git a/v2/src/development/genhtml.sh b/v2/src/development/genhtml.sh
index 8950b1d..f3a6e3a 100755
--- a/v2/src/development/genhtml.sh
+++ b/v2/src/development/genhtml.sh
@@ -92,11 +92,33 @@ slugify_once() {
fi
}
+INDENT=' '
markdown_to_html() {
- md2html
+ md2html | awk -vINDENT="$INDENT" '
+ BEGIN {
+ in_block = 0
+ }
+
+ {
+ if (in_block == 0) {
+ printf "%s", INDENT
+ }
+ print
+ }
+
+ /^<\/code><\/pre>$/ {
+ in_block = 0
+ }
+
+ /^<pre><code/ {
+ in_block = 1
+ }
+ '
}
extract_plaintext_snippets() {
+ SNIPPETS="${FILENAME%.md}.snippets"
+ rm -f "$SNIPPETS"
F="$(mkstemp)"
cat > "$F"
(
@@ -112,13 +134,14 @@ extract_plaintext_snippets() {
printf '%s\n' "$line" | htmlesc -d >> "$OUT"
fi
- if printf '%s' "$line" | grep -q '^<pre><code.*>'; then
+ if printf '%s' "$line" | grep -q "^$INDENT<pre><code"; then
IN_BLOCK=1
OUT="${FILENAME%.md}.html.$BLOCK_NUMBER.txt"
BLOCK_NUMBER=$((BLOCK_NUMBER + 1))
printf '%s\n' "$line" |
- sed 's|^\(<pre><code.*>\)\(.*\)$|\2|' |
+ sed "s|^\($INDENT<pre><code.*>\)\(.*\)$|\2|" |
htmlesc -d > "$OUT"
+ printf '%s\n' "$OUT" >> "$SNIPPETS"
fi
done < "$F"
@@ -127,7 +150,9 @@ extract_plaintext_snippets() {
printf '%s\n' "$line"
if [ "$line" = '</code></pre>' ]; then
- printf '<p class="plaintext-link"><a href="%s.%s.txt">plaintext</a></p>\n' "$(url-for "$URL")" "$BLOCK_NUMBER"
+ printf '%s<p class="plaintext-link"><a href="%s">plaintext</a></p>\n' \
+ "$INDENT" \
+ "$(basename "${url_part:?}").$BLOCK_NUMBER.txt"
BLOCK_NUMBER=$((BLOCK_NUMBER + 1))
fi
done < "$F"
@@ -143,7 +168,7 @@ add_line_numbers() {
next
}
- match($0, /^(<pre><code.*>)(.*)$/, a) {
+ match($0, /^( +<pre><code.*>)(.*)$/, a) {
printf "%s<table rules=columns class=\"code-block\"><tbody>", a[1]
n = 1
@@ -194,4 +219,5 @@ emit_body() {
}
envsubst < src/lib/preamble.html
+emit_body
envsubst < src/lib/postamble.html
diff --git a/v2/src/development/getconf.sh b/v2/src/development/getconf.sh
index aa90706..3f7ccd2 100755
--- a/v2/src/development/getconf.sh
+++ b/v2/src/development/getconf.sh
@@ -73,58 +73,78 @@ escape() {
sed 's|\([`"$]\)|\\\1|g'
}
-{
- tee "$FILENAME".tmp < src/lib/base-conf
- DELIMITER=0
- while read -r line; do
- if [ "$line" = '---' ]; then
- DELIMITER=$((DELIMITER + 1))
- continue
- fi
- if [ "$DELIMITER" = 2 ]; then
- break
- fi
- if [ -z "$line" ]; then
- continue
- fi
-
- KEY="$( printf '%s' "$line" | cut -d: -f1)"
- VALUE="$(printf '%s' "$line" | cut -d: -f2- | sed 's|^ ||' | escape)"
- printf '%s="%s"\n' "$KEY" "$VALUE"
- done < "$FILENAME" | tee -a "$FILENAME".tmp
- # shellcheck source=/dev/null
- . "$FILENAME".tmp
-
- cat src/lib/base."${lang:?}".conf
- # shellcheck source=/dev/null
- . src/lib/base."$lang".conf
-
- if [ -z "${title:-}" ]; then
- title="${site_name:?}"
- printf 'title="%s"\n' "$(printf '%s' "$title" | escape)"
+tee "$FILENAME".tmp < src/lib/base-conf
+DELIMITER=0
+while read -r line; do
+ if [ "$line" = '---' ]; then
+ DELIMITER=$((DELIMITER + 1))
+ continue
fi
-
- if [ -z "${date:-}" ]; then
- printf 'date_formatted="%s"\n' "$(LANG="$lang" date -d "${date:?}" +"${date_fmt:?}" | escape)"
+ if [ "$DELIMITER" = 2 ]; then
+ break
+ fi
+ if [ -z "$line" ]; then
+ continue
fi
- url_part="$(printf '%s' "${FILENAME%.md}.html" | sed 's|^src/content/||')"
+ KEY="$( printf '%s' "$line" | cut -d: -f1)"
+ VALUE="$(printf '%s' "$line" | cut -d: -f2- | sed 's|^ ||' | escape)"
+ printf 'export %s="%s"\n' "$KEY" "$VALUE"
+done < "$FILENAME" | tee -a "$FILENAME".tmp
+# shellcheck source=/dev/null
+. "$FILENAME".tmp
+rm -f "$FILENAME".tmp
+
+cat src/lib/base."${lang:?}".conf
+# shellcheck source=/dev/null
+. src/lib/base."$lang".conf
+if [ -z "${title:-}" ]; then
+ title="${site_name:?}"
+ printf 'export title="%s"\n' "$(printf '%s' "$title" | escape)"
+fi
+
+if [ -n "${date:-}" ]; then
+ formatted_date="$(LANG="$lang" date -d "${date:?}" +"${date_fmt:?}")"
+ export formatted_date
+ printf 'export date_html="%s"\n' "$(envsubst < src/lib/date."$lang".html | escape)"
+fi
+
+if [ -n "${update:-}" ]; then
+ formatted_update="$(LANG="$lang" date -d "${update:?}" +"${date_fmt:?}")"
+ export formatted_update
+ printf 'export update_html="%s"\n' "$(envsubst < src/lib/update."$lang".html | escape)"
+fi
+
+
+url_part="$(printf '%s' "${FILENAME%.md}.html" | sed 's|^src/content/||')"
+title_uri="$(uri "$title")"
+
+printf 'export title_html="%s"\n' "$(printf '%s' "$title" | htmlesc | escape)"
+printf 'export filename="%s"\n' "$FILENAME"
+printf 'export url_part="%s"\n' "$url_part"
+printf 'export url="%s"\n' "$(url-for "$url_part" | absolute)"
+printf 'export mailto_uri="%s%s"\n' "${mailto_uri_prefix:?}" "$title_uri"
+printf 'export discussions_url="%s%s"\n' "${discussions_url_prefix:?}" "$title_uri"
+printf 'export sourcecode_url="%s%s"\n' "${sourcecode_url_prefix:?}" "$FILENAME"
+
+printf 'export style_url="%s"\n' "$(url-for -g 'style.css')"
+printf 'export favicon_url="%s"\n' "$(url-for -g 'favicon.svg')"
+printf 'export pubkey_url="%s"\n' "$(url-for -g 'public.asc.txt')"
+
+for f in src/content/img/*.svg; do
+ name="$(basename "$f" .svg | sed 's|-|_|g')"
+ printf 'export icon_%s_url="%s"\n' "$name" "$(url-for -g "img/$(basename "$f")")"
+done
- printf 'title_html="%s"\n' "$(printf '%s' "$title" | htmlesc | escape)"
- printf 'filename="%s"\n' "$FILENAME"
- printf 'url_part="%s"\n' "$url_part"
- printf 'url="%s"\n' "$(url-for "$url_part" | absolute)"
- printf 'mailto_uri="%s%s"\n' "${mailto_uri_prefix:?}" "$(uri "$title")"
- printf 'discussions_url="%s%s"\n' "${discussions_url_prefix:?}" "$(uri "$title")"
- printf 'sourcecode_url="%s%s"\n' "${sourcecode_url_prefix:?}" "$FILENAME"
+# FIXME: special treatment of root
+printf 'export homepage_url="%s"\n' "$(url-for '/')"
- printf 'style_url="%s"\n' "$(url-for -g 'style.css')"
- printf 'favicon_url="%s"\n' "$(url-for -g 'favicon.svg')"
+printf 'export about_url="%s"\n' "$(url-for "${about_url_name:?}")"
- # FIXME: special treatment of root
- printf 'homepage_url="%s"\n' "$(url-for '/')"
-
- printf 'about_url="%s"\n' "$(url-for "${about_url_name:?}")"
- rm -f "$FILENAME".tmp
-} | grep . | sed 's|^|export |'
+if [ "${layout:-}" = 'post' ]; then
+ export mailto_uri="$mailto_uri_prefix$title_uri"
+ export discussions_url="$discussions_url_prefix$title_uri"
+ export sourcecode_url="$sourcecode_url_prefix$FILENAME"
+ printf 'export comment_html="%s"\n' "$(envsubst < src/lib/comment."$lang".html | escape)"
+fi
diff --git a/v2/src/lib/base-conf.in b/v2/src/lib/base-conf.in
index c065807..4ec09cb 100644
--- a/v2/src/lib/base-conf.in
+++ b/v2/src/lib/base-conf.in
@@ -1,9 +1,10 @@
-domain='@DOMAIN@'
-email='@EMAIL@'
-base_url=''
-list_addr='~euandreh/public-inbox@lists.sr.ht'
-mailto_uri_prefix="mailto:$list_addr?Subject=Re%3A%20"
-discussions_url_prefix="https://lists.sr.ht/~euandreh/public-inbox?search="
-sourcecode_url_prefix="https://$domain/git/$domain/tree/"
-author='EuAndreh'
-lang='en'
+export domain='@DOMAIN@'
+export email='@EMAIL@'
+export base_url=''
+export list_addr='~euandreh/public-inbox@lists.sr.ht'
+export mailto_uri_prefix="mailto:$list_addr?Subject=Re%3A%20"
+export discussions_url_prefix="https://lists.sr.ht/~euandreh/public-inbox?search="
+export sourcecode_url_prefix="https://$domain/git/$domain/tree/"
+export author='EuAndreh'
+export lang='en'
+export pubkey_id='81F90EC3CD356060' # FIXME
diff --git a/v2/src/lib/base.en.conf b/v2/src/lib/base.en.conf
index 6090d54..52aede3 100644
--- a/v2/src/lib/base.en.conf
+++ b/v2/src/lib/base.en.conf
@@ -1,7 +1,7 @@
-date_fmt='%B %-d, %Y'
+export date_fmt='%B %-d, %Y'
-site_name="EuAndreh's website"
+export site_name="EuAndreh's website"
-about='About'
+export about='About'
-about_url_name='about.html'
+export about_url_name='about.html'
diff --git a/v2/src/lib/base.pt.conf b/v2/src/lib/base.pt.conf
index 6090d54..52aede3 100644
--- a/v2/src/lib/base.pt.conf
+++ b/v2/src/lib/base.pt.conf
@@ -1,7 +1,7 @@
-date_fmt='%B %-d, %Y'
+export date_fmt='%B %-d, %Y'
-site_name="EuAndreh's website"
+export site_name="EuAndreh's website"
-about='About'
+export about='About'
-about_url_name='about.html'
+export about_url_name='about.html'
diff --git a/v2/src/lib/comment.en.html b/v2/src/lib/comment.en.html
new file mode 100644
index 0000000..6646b14
--- /dev/null
+++ b/v2/src/lib/comment.en.html
@@ -0,0 +1,8 @@
+ <hr />
+ <p class="post-footer">
+ <a href="$mailto_uri">Comment</a>
+ and see
+ <a href="$discussions_url">existing discussions</a>
+ |
+ <a href="$sourcecode_url">view source</a>
+ </p>
diff --git a/v2/src/lib/comment.pt.html b/v2/src/lib/comment.pt.html
new file mode 100644
index 0000000..c703847
--- /dev/null
+++ b/v2/src/lib/comment.pt.html
@@ -0,0 +1,6 @@
+ <hr />
+ <p class="post-footer">
+ <a href="$mailto_uri">Comment</a> and see <a
+href="$discussions_url">existing discussions</a> | <a
+href="$sourcecode_url">view source</a>
+ </p>
diff --git a/v2/src/lib/date.en.html b/v2/src/lib/date.en.html
new file mode 100644
index 0000000..0911bac
--- /dev/null
+++ b/v2/src/lib/date.en.html
@@ -0,0 +1,3 @@
+ <p class="timestamp">
+ Posted on <time datetime="$date">$formatted_date</time>
+ </p>
diff --git a/v2/src/lib/date.pt.html b/v2/src/lib/date.pt.html
new file mode 100644
index 0000000..0911bac
--- /dev/null
+++ b/v2/src/lib/date.pt.html
@@ -0,0 +1,3 @@
+ <p class="timestamp">
+ Posted on <time datetime="$date">$formatted_date</time>
+ </p>
diff --git a/v2/src/lib/postamble.html b/v2/src/lib/postamble.html
index ada5524..00dc1dc 100644
--- a/v2/src/lib/postamble.html
+++ b/v2/src/lib/postamble.html
@@ -1,31 +1,16 @@
-<p>
- <a href="@mailto_uri@">Comment</a>
- and see
- <a href="@discussions_url@">existing discussions</a>
- |
- <a href="@sourcecode_url@">view source</a>
-</p>
-
-
- <p class="post-footer">
- <a href="mailto:~euandreh/public-inbox@lists.sr.ht?Subject=Re%3A%20$URI_TITLE">Comment</a>
- and see
- <a href="https://lists.sr.ht/~euandreh/public-inbox?search=$URI_TITLE">existing discussions</a>
- |
- <a href="https://euandre.org/git/euandre.org/tree/$FILENAME">view source</a>
- </p>
+$comment_html
</article>
</main>
<footer>
<hr />
<ul>
<li>
- <img class="svg-icon" src="$(url-for 'static/envelope.svg')" alt="a envelope icon representing an email address" />
+ <img class="svg-icon" src="$icon_envelope_url" alt="a envelope icon representing an email address" />
<a href="mailto:$email">$email</a>
</li>
<li>
- <img class="svg-icon" src="$(url-for 'static/lock.svg')" alt="a lock icon representing a GPG public key" />
- <a href="$(url-for 'static/public.asc.txt')">81F90EC3CD356060</a>
+ <img class="svg-icon" src="$icon_lock_url" alt="a lock icon representing a GPG public key" />
+ <a href="$pubkey_url">$pubkey_id</a>
</li>
</ul>
<p>
diff --git a/v2/src/lib/preamble.html b/v2/src/lib/preamble.html
index 3eac6ea..6e0bd30 100644
--- a/v2/src/lib/preamble.html
+++ b/v2/src/lib/preamble.html
@@ -28,10 +28,8 @@
</header>
<main>
<article>
- dollar emit_body
<h1>
$title_html
</h1>
- <p class="timestamp">
- FIXME Posted on <time datetime="$date">$date_formatted</time>
- </p>
+$date_html
+$update_html
diff --git a/v2/src/lib/update.en.html b/v2/src/lib/update.en.html
new file mode 100644
index 0000000..99760cb
--- /dev/null
+++ b/v2/src/lib/update.en.html
@@ -0,0 +1,3 @@
+ <p class="timestamp">
+ Updated on <time datetime="$update">$formatted_update</time>
+ </p>
diff --git a/v2/src/lib/update.pt.html b/v2/src/lib/update.pt.html
new file mode 100644
index 0000000..99760cb
--- /dev/null
+++ b/v2/src/lib/update.pt.html
@@ -0,0 +1,3 @@
+ <p class="timestamp">
+ Updated on <time datetime="$update">$formatted_update</time>
+ </p>