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;
+ s;\r$;;;
+ /^%title[ \t]+([[:graph:]][[:print:]]+)$/bTITLE;
+ /^##?[^#]+/bHHEAD;
+ /^(---+|===+)$/bLHEAD;
+ h;b;
+
+ :TITLE
+ s;^%title[ \t]+;;;
+ p;q;
+
+ :HHEAD
+ s;[ \t]*\{[ \t]*([.#]?([0-9a-zA-Z]+-)*[0-9a-zA-Z]+[ \t]+)*([.#]?([0-9a-zA-Z]+-)*[0-9a-zA-Z]+)[ \t]*\}$;;;
+ s;^##?[ \t]*;;; s;[ \t]*#+$;;;
+ /^.+$/{p; q;}
+ b;
+
+ :LHEAD
+ x;
+ s;[ \t]*\{[ \t]*([.#]?([0-9a-zA-Z]+-)*[0-9a-zA-Z]+[ \t]+)*([.#]?([0-9a-zA-Z]+-)*[0-9a-zA-Z]+)[ \t]*\}$;;;
+ /^.+$/{p; q;}
' "$mdfile"
)"
- [ ! "${PAGE_TITLE}" ] && PAGE_TITLE="$(
- # pick title from first h1/h2 headline
- awk -f "${_EXEC}/cgilite/markdown.awk" <"$mdfile" \
- | sed -nE '
- s;^.*<h1[^>]*>(.*>)?([^<]+)(<.*)?</h1>.*$;\2;; tQ;
- s;^.*<h2[^>]*>(.*>)?([^<]+)(<.*)?</h2>.*$;\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/]/]/g; s/
/\r/g; s/&/\&/g;
- p; q;
- '
- )"
fi
if [ ! "${PAGE_TITLE}" ]; then
# use last part of page URL as title