]> git.plutz.net Git - shellwiki/blobdiff - tools.sh
page_title: bugfix in fallback to page url
[shellwiki] / tools.sh
index a298394c9cf5881cb4a764587302fe4467030d67..a85e63c5e4ca12a1bffb2b3da5220d194cb8f21a 100755 (executable)
--- a/tools.sh
+++ b/tools.sh
@@ -185,3 +185,31 @@ has_tag() {
   done
   return 1
 }
+
+page_title() {
+  local mdfile PAGE_TITLE
+
+  if ! mdfile="$(mdfile "${1:-${PATH_INFO%/*}}")"; then
+    return 1
+  fi
+  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;
+    '
+  )"
+  if [ ! "${PAGE_TITLE}" ]; then
+    PAGE_TITLE="${1:-${PATH_INFO}}"
+    PAGE_TITLE="${PAGE_TITLE%/*}"
+    PAGE_TITLE="${PAGE_TITLE##*/}"
+  fi
+  printf %s\\n "$PAGE_TITLE"
+}