]> git.plutz.net Git - shellwiki/blobdiff - tools.sh
search list: check if page content exists
[shellwiki] / tools.sh
index a298394c9cf5881cb4a764587302fe4467030d67..248a2542b2a86df0d57877cc8330a150a437d88f 100755 (executable)
--- a/tools.sh
+++ b/tools.sh
@@ -185,3 +185,30 @@ 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##*/}"
+  fi
+  printf %s\\n "$PAGE_TITLE"
+}