X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=tools.sh;h=65327d7c38f229e3815b207f173d86823245ae50;hb=d57f36c0b200bdfaa93def032fed6c946ba9c385;hp=dfa4594576d9538105afbdc7a2c9eabdded5ec92;hpb=11b34efdbb85ef0accaf366b25f952f41e1b4aa4;p=shellwiki diff --git a/tools.sh b/tools.sh index dfa4594..65327d7 100755 --- a/tools.sh +++ b/tools.sh @@ -3,7 +3,7 @@ [ "$include_tools" ] && return 0 include_tools="$0" -# Copyright 2022 - 2023 Paul Hänsch +# Copyright 2022 - 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 @@ -187,25 +187,36 @@ has_tag() { } page_title() { - local mdfile PAGE_TITLE + local mdfile='' PAGE_TITLE='' - if mdfile="$(mdfile "${1:-${PATH_INFO%/*}}")"; then + 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;p; tQ; - s;^.*]*>(.*>)?([^<]+)(<.*)?.*$;\2;p; tQ; - b; :Q q; + 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; ' )" - printf %s\\n "$PAGE_TITLE" - else - return 1 fi + if [ ! "${PAGE_TITLE}" ]; then + # use last part of page URL as title + PAGE_TITLE="${1%/}" + PAGE_TITLE="${PAGE_TITLE##*/}" + fi + printf %s\\n "$PAGE_TITLE" }