From 15a1efa007b85d77f947b377e7561564d4cba7a6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 18 Feb 2024 23:51:35 +0100 Subject: [PATCH] print fallback name of non-existent pages in page_name() --- tools.sh | 55 ++++++++++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/tools.sh b/tools.sh index 2ee1818..ccd095c 100755 --- a/tools.sh +++ b/tools.sh @@ -187,39 +187,36 @@ has_tag() { } page_title() { - local mdfile PAGE_TITLE - - if ! mdfile="$(mdfile "${1:-${PATH_INFO%/*}}")"; then - return 1 + local mdfile='' PAGE_TITLE='' + + if mdfile="$(mdfile "${1}")"; then + PAGE_TITLE="$( + # pick title from %title pragma + sed -nE ' + s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ; + b; :Q q; + ' "$mdfile" + )" + [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$( + # pick title from first h1/h2 headline + MD_MACROS="" md <"$mdfile" \ + | sed -nE ' + s;^.*]*>(.*>)?([^<]+)(<.*)?.*$;\2;; tQ; + s;^.*]*>(.*>)?([^<]+)(<.*)?.*$;\2;; tQ; + b; :Q + # reverse escapes of cgilite HTML function, + # to prevent later double escaping + # later escaping must not be omited + s/<//g; s/"/'\"'/g; s/'/'\''/g; + s/[/[/g; s/]/]/g; s/ /\r/g; s/&/\&/g; + p; q; + ' + )" fi - PAGE_TITLE="$( - # pick title from %title pragma - sed -nE ' - s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ; - b; :Q q; - ' "$mdfile" - )" - [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$( - # pick title from first h1/h2 headline - MD_MACROS="" md <"$mdfile" \ - | sed -nE ' - s;^.*]*>(.*>)?([^<]+)(<.*)?.*$;\2;; tQ; - s;^.*]*>(.*>)?([^<]+)(<.*)?.*$;\2;; tQ; - b; :Q - # reverse escapes of cgilite HTML function, - # to prevent later double escaping - # later escaping must not be omited - s/<//g; s/"/'\"'/g; s/'/'\''/g; - s/[/[/g; s/]/]/g; s/ /\r/g; s/&/\&/g; - p; q; - ' - )" if [ ! "${PAGE_TITLE}" ]; then # use last part of page URL as title - PAGE_TITLE="${1:-${PATH_INFO}}" - PAGE_TITLE="${PAGE_TITLE%/*}" + PAGE_TITLE="${1%/}" PAGE_TITLE="${PAGE_TITLE##*/}" fi - debug "TITLE: $PAGE_TITLE" printf %s\\n "$PAGE_TITLE" } -- 2.39.2