]> git.plutz.net Git - shellwiki/blob - handlers/20_title.sh
Merge commit 'a3e37fbe95bb7b2cca32001ac280e37c4bfdae82'
[shellwiki] / handlers / 20_title.sh
1 #!/bin/sh
2
3 if acl_read ${PATH_INFO}; then
4   mdfile="$(mdfile "${PATH_INFO%/*}")"
5 else
6   PAGE_TITLE="${SITE_TITLE}"
7   return 1
8 fi
9
10 if [ "$mdfile" ]; then
11   PAGE_TITLE="$(
12     sed -nE '
13       s;^%title[ \t]+([[:graph:]][[:print:]]+)\r?$;\1;p; tQ;
14       b; :Q q;
15     ' "$mdfile"
16   )"
17   [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$(
18     MD_MACROS="" md <"$mdfile" \
19     | sed -nE '
20       s;^.*<h1[^>]*>(.*>)?([^<]+)(<.*)?</h1>.*$;\2;p; tQ;
21       s;^.*<h2[^>]*>(.*>)?([^<]+)(<.*)?</h2>.*$;\2;p; tQ;
22       b; :Q q;
23     '
24   )"
25 else
26   PAGE_TITLE="${SITE_TITLE}"
27   return 1
28 fi
29
30 case $PATH_INFO in
31   *"/[attachment]")
32     PAGE_TITLE="${PAGE_TITLE} (Attachments)"
33     ;;
34   *"/[revision]")
35     PAGE_TITLE="${PAGE_TITLE} (Revisions)"
36     ;;
37 esac
38
39 [ "$PAGE_TITLE" ] \
40 && PAGE_TITLE="${PAGE_TITLE}${SITE_TITLE:+ - ${SITE_TITLE}}" \
41 || PAGE_TITLE="${SITE_TITLE}"
42
43 return 1