]> git.plutz.net Git - shellwiki/commitdiff
universal page_title function
authorPaul Hänsch <paul@plutz.net>
Tue, 6 Feb 2024 14:41:47 +0000 (15:41 +0100)
committerPaul Hänsch <paul@plutz.net>
Tue, 6 Feb 2024 14:41:47 +0000 (15:41 +0100)
handlers/20_title.sh
tools.sh

index 3da07fffab3ed2df4ad141ae2a0c88993143945d..35b5d3c52d194336c2b81239b924a751c52051cf 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright 2023 Paul Hänsch
+# Copyright 2023, 2024 Paul Hänsch
 # 
 # Permission to use, copy, modify, and/or distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 # IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-if acl_read ${PATH_INFO}; then
-  mdfile="$(mdfile "${PATH_INFO%/*}")"
-else
-  PAGE_TITLE="${SITE_TITLE}"
-  return 1
+if acl_read "${PATH_INFO}"; then
+  PAGE_TITLE="$(page_title "${PATH_INFO%/*}")"
 fi
 
-if [ "$mdfile" ]; then
-  PAGE_TITLE="$(
-    sed -nE '
-      s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ;
-      b; :Q q;
-    ' "$mdfile"
-  )"
-  [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$(
-    MD_MACROS="" md <"$mdfile" \
-    | sed -nE '
-      s;^.*<h1[^>]*>(.*>)?([^<]+)(<.*)?</h1>.*$;\2;p; tQ;
-      s;^.*<h2[^>]*>(.*>)?([^<]+)(<.*)?</h2>.*$;\2;p; tQ;
-      b; :Q q;
-    '
-  )"
-else
-  PAGE_TITLE="${SITE_TITLE}"
-  return 1
-fi
-
-case $PATH_INFO in
-  *"/[attachment]")
-    PAGE_TITLE="${PAGE_TITLE} ($(_ Attachments))"
-    ;;
-  *"/[revision]")
-    PAGE_TITLE="${PAGE_TITLE} ($(_ Revisions))"
-    ;;
-esac
-
-[ "$PAGE_TITLE" ] \
-&& PAGE_TITLE="${PAGE_TITLE}${SITE_TITLE:+ - ${SITE_TITLE}}" \
-|| PAGE_TITLE="${SITE_TITLE}"
+PAGE_TITLE="${PAGE_TITLE:-${SITE_TITLE:-${PATH_INFO}}}${PAGE_TITLE:+${SITE_TITLE:+ - ${SITE_TITLE}}}"
 
 return 1
index a298394c9cf5881cb4a764587302fe4467030d67..dfa4594576d9538105afbdc7a2c9eabdded5ec92 100755 (executable)
--- a/tools.sh
+++ b/tools.sh
@@ -185,3 +185,27 @@ has_tag() {
   done
   return 1
 }
+
+page_title() {
+  local mdfile PAGE_TITLE
+
+  if  mdfile="$(mdfile "${1:-${PATH_INFO%/*}}")"; then
+    PAGE_TITLE="$(
+      sed -nE '
+        s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ;
+        b; :Q q;
+      ' "$mdfile"
+    )"
+    [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$(
+      MD_MACROS="" md <"$mdfile" \
+      | sed -nE '
+        s;^.*<h1[^>]*>(.*>)?([^<]+)(<.*)?</h1>.*$;\2;p; tQ;
+        s;^.*<h2[^>]*>(.*>)?([^<]+)(<.*)?</h2>.*$;\2;p; tQ;
+        b; :Q q;
+      '
+    )"
+    printf %s\\n "$PAGE_TITLE"
+  else
+    return 1
+  fi
+}