- local data
- [[ $# -eq 1 ]] && data="`cat $page`" || data=$2
- local tgt
- data="${data//&/&}"
- data="${data//</<}"
- data="${data//>/>}"
- for p (${(k)pages}) {
- [[ $p = ALL ]] && continue
- [[ $p = index ]] && continue
- tgt=`getrel $page $p`
- data="${data//${p}/<a href=\"${tgt}.html\">$p</a>}"
+ local data p
+ [[ $# -eq 1 ]] && data=${mapfile[$page]} || data=$2
+ local _links=(${(oi)=links[$page]})
+ if [[ ( ${cached[$page]} ) && ( -s $ZK_CACHE/${page}.html ) ]]; then
+ < $ZK_CACHE/${page}.html
+ else
+ data=${data//&/&}
+ data=${data//</<}
+ data=${data//>/>}
+ for p ($_links) {
+ getrel $page $p
+ [[ -d $p ]] && REPLY=$REPLY/index
+ data="${data//\[${p}\]/<a href=\"${REPLY}.html\">[$p]</a>}"
+ }
+ data="<!DOCTYPE html>
+<html><head>
+<title>$page (${pages[$page]})</title>
+<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
+</head><body><pre>
+$data</pre>"
+ if [[ $ZK_CACHE ]]; then
+ print -r "$data" > $ZK_CACHE/${page}.html
+ < $ZK_CACHE/${page}.html
+ else
+ print -r "$data"
+ fi
+ fi
+ if [[ $_links ]]; then
+ print "<hr/>Links:<ul>"
+ for p ($_links) {
+ getrel $page $p
+ print "<li><a href=\"${REPLY}.html\">$p</a> <sup>${pages[$p]}</sup></li>"
+ }
+ print "</ul>"
+ fi
+ local bs=(${(oi)=${backs[$page]}})
+ if [[ $bs ]]; then
+ print "<hr/>Backlinks:<ul>"
+ for p ($bs) {
+ getrel $page $p
+ print "<li><a href=\"${REPLY}.html\">$p</a> <sup>${pages[$p]}</sup></li>"
+ }
+ print "</ul>"
+ fi
+ print "</body></html>"
+}
+
+zmodload -F zsh/datetime b:strftime
+strftime -s now "%F %T"
+
+genIndex() {
+ local p
+ local entries=()
+ local _links=()
+ typeset -aU _cats=()
+ local curdepth=${#${(s:/:)1}}
+ (( curdepth = curdepth + 1 ))
+ for p (${(k)pages[(I)$1*]}) {
+ case ${#${(As:/:)p}} in
+ ($curdepth) _links=($p $_links) ;;
+ ( $(( $curdepth + 1 )) ) _cats=(${1}${${p#$1}%%/*} $_cats) ;;
+ (*) continue ;;
+ esac