summaryrefslogtreecommitdiff
path: root/cork-hbar.rc
diff options
context:
space:
mode:
Diffstat (limited to 'cork-hbar.rc')
-rw-r--r--cork-hbar.rc65
1 files changed, 65 insertions, 0 deletions
diff --git a/cork-hbar.rc b/cork-hbar.rc
new file mode 100644
index 0000000..e3ca727
--- /dev/null
+++ b/cork-hbar.rc
@@ -0,0 +1,65 @@
+#!/bin/rc
+
+path=(. /bin)
+
+req_p=`{echo -n $REQUEST_URI }
+
+fn run {
+ lpaf=home$REQUEST_URI
+ rpafs='/'; wd='/'; ifs='/';
+ arg = `{echo -n $REQUEST_URI}
+ if (test -d $lpaf) {
+ lpaf=$lpaf^'i'
+ }
+ for (i in $arg) {
+ wd=$wd^$i
+ rpafs=($rpafs $wd)
+ wd=$wd'/'
+ }
+http_content_type='text/html'
+echo Content-Type: $http_content_type
+ echo;
+ for (h in $bar) { $$h }
+ mh $lpaf.md
+}
+
+
+fn sbar {
+ echo -n 'insert html preamble'
+ ls -F home/./$rpafs | sed -e 's,/+\./+,/,g' \
+ -e '/\/i\.(md)$/d' \
+ -e 's/\.(md)$//' -e 's!^home!!' | sort | awk -F/ '
+ function p(x, y, s) { for(i=0; i < x-y; i+=1) printf s }
+ BEGIN { lNF=2; printf "<ul>" }
+ {
+ d = ""
+ if(match($0, "/$"))
+ d = "/"
+ sub("/$", "") # Strip trailing / for dirs so NF is consistent
+
+ p(NF, lNF, "<ul>» 「"); p(lNF, NF, "」</ul>")
+ lNF = NF
+
+ bname = $NF d
+ path = $0 d
+ gsub(/[\-_]/, " ", bname)
+
+ # To avoid false matches add trailing / even for plain files to act as delimiter
+ pa = path
+ gsub(/[^\/]$/, "&/", pa)
+
+ if(index(ENVIRON["req_p"] "/", pa) == 1)
+ printf "<li><a href="path" class=\"c\">"bname"</a>"
+ else
+ printf "<li><a href="path">"bname"</a>"
+ }
+ END { p(lNF, 2, "</ul>"); printf "</ul></nav><hr><article>" }'
+}
+
+fn add {
+ _l = $1^_^$#$1
+ $_l = $*(2-)
+ $1 = ($$1 $_l)
+}
+
+add bar sbar; run