commit c12676520bd863358a3144fe479a725afefe80a8 from: roman zolotarev date: Sun Jan 25 09:06:28 2026 UTC update: get_title() strips other tags inside

thanks to nathanael@dalliard.ch commit - b092913f81f1f9c3cb01801a45a6088bc96288a0 commit + c12676520bd863358a3144fe479a725afefe80a8 blob - f5305e5e2f5c4b2f0a5956e453a548ef3ee8951d blob + b66ee17b771c09861cc5b9755edd4eac5ffbcfe8 --- ssg.sh +++ ssg.sh @@ -107,7 +107,8 @@ mustache() { render_page() { # replace newlines with spaces and extract title from the first

tag get_title() { tr '\n' ' ' | - sed -n 's/^[^<]*<[Hh]1[^>]*>\([^<]*\)<\/[Hh]1[^>]*>.*/\1/p'; } + sed -n 's/.*<[Hh]1[^>]*>\(.*\)<\/[Hh]1[^>]*>.*/\1/p' | + sed 's/<[^>]*>//g'; } content="$(cat)" # use src directory name as site name title="$(printf '%s' "$content" | get_title | tr -d '\n')" blob - 371c3087f96573cf33fd12f8a371ddc020675b01 blob + d1c4faa76f3faf760f458410ad8ffd3c2270e806 --- ssg.test.sh +++ ssg.test.sh @@ -422,21 +422,18 @@ sitemap sitemap.xml generate_html_with_template_title) mkdir "$src" "$dst" - echo '

'\''→ -

' >"$src/h.html" + echo 'b

'\''→ +nl

a +

a

' >"$src/h.html" echo '{{title}}' >"$src/.ssg.template" "$cmd" "$src" "$dst" 2>/dev/null - hexdump -C "$dst/h.html" | not_ok_diff_n "$1: h.html" ' -00000000 3c 74 69 74 6c 65 3e 27 26 72 61 72 72 3b 20 3c |'\''→ <| -00000010 2f 74 69 74 6c 65 3e 0a |/title>.| -00000018 -' + cat "$dst/h.html" | not_ok_diff "$1: h.html" "<title>'→ nl" ;; generate_html_with_template) mkdir "$src" "$dst" - echo '

h1

' >"$src/h.html" + echo '

x

' >"$src/h.html" echo '{{title}}~{{site}}{{content}}' >"$src/.ssg.template" "$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" ' @@ -445,10 +442,10 @@ html h.html, .ssg.template > h.html html h.html, .ssg.template > h.html.gz sitemap sitemap.xml sitemap robots.txt -41ea28f2ec31b10d054cd52d4f5586974b37f2028b3841fa8bd4f1821d17d1fe +5843646b566cdf923e8cb8745d6e516dc1d764e4af5894a823d6aef45b61f70e ' "$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" ' -41ea28f2ec31b10d054cd52d4f5586974b37f2028b3841fa8bd4f1821d17d1fe +5843646b566cdf923e8cb8745d6e516dc1d764e4af5894a823d6aef45b61f70e ' not_ok_find "$dst" "$1" ' .ssg.dst @@ -459,12 +456,12 @@ robots.txt sitemap.xml ' - cat "$dst/h.html" | not_ok_diff "$1" 'h1~src

h1

' + cat "$dst/h.html" | not_ok_diff "$1" 'x~src

x

' hexdump -C "$dst/h.html.gz" | not_ok_diff_n "$1" ' 00000000 1f 8b 08 00 00 00 00 00 02 03 b3 29 c9 2c c9 49 |...........).,.I| -00000010 b5 cb 30 ac 2b 2e 4a b6 d1 87 f0 6c 32 0c 81 22 |..0.+.J....l2.."| -00000020 36 fa 40 8a 0b 00 1e b5 6d 4c 21 00 00 00 |6.@.....mL!...| -0000002e +00000010 b5 ab a8 2b 2e 4a b6 d1 87 70 6c 32 0c ed 2a 6c |...+.J...pl2..*l| +00000020 f4 81 24 17 00 14 10 05 9e 1f 00 00 00 |..$..........| +0000002d ' ;;