]> git.plutz.net Git - shellwiki/blob - handlers/20_title.sh
3da07fffab3ed2df4ad141ae2a0c88993143945d
[shellwiki] / handlers / 20_title.sh
1 #!/bin/sh
2
3 # Copyright 2023 Paul Hänsch
4
5 # Permission to use, copy, modify, and/or distribute this software for any
6 # purpose with or without fee is hereby granted, provided that the above
7 # copyright notice and this permission notice appear in all copies.
8
9 # THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
12 # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 # IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
17 if acl_read ${PATH_INFO}; then
18   mdfile="$(mdfile "${PATH_INFO%/*}")"
19 else
20   PAGE_TITLE="${SITE_TITLE}"
21   return 1
22 fi
23
24 if [ "$mdfile" ]; then
25   PAGE_TITLE="$(
26     sed -nE '
27       s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ;
28       b; :Q q;
29     ' "$mdfile"
30   )"
31   [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$(
32     MD_MACROS="" md <"$mdfile" \
33     | sed -nE '
34       s;^.*<h1[^>]*>(.*>)?([^<]+)(<.*)?</h1>.*$;\2;p; tQ;
35       s;^.*<h2[^>]*>(.*>)?([^<]+)(<.*)?</h2>.*$;\2;p; tQ;
36       b; :Q q;
37     '
38   )"
39 else
40   PAGE_TITLE="${SITE_TITLE}"
41   return 1
42 fi
43
44 case $PATH_INFO in
45   *"/[attachment]")
46     PAGE_TITLE="${PAGE_TITLE} ($(_ Attachments))"
47     ;;
48   *"/[revision]")
49     PAGE_TITLE="${PAGE_TITLE} ($(_ Revisions))"
50     ;;
51 esac
52
53 [ "$PAGE_TITLE" ] \
54 && PAGE_TITLE="${PAGE_TITLE}${SITE_TITLE:+ - ${SITE_TITLE}}" \
55 || PAGE_TITLE="${SITE_TITLE}"
56
57 return 1