corehandlers.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh
  2. handler() {
  3. case "$1" in
  4. **.md)
  5. bin/md2html.awk "$1"
  6. ;;
  7. **.tpl)
  8. eval "$(bin/template.awk "$1")"
  9. ;;
  10. **)
  11. cat "$1"
  12. ;;
  13. esac
  14. }
  15. handler_body_main() {
  16. if [ -d "$SITE_DIR/$REQUEST_URI" ]; then
  17. handler "$SITE_DIR/$REQUEST_URI/index.md"
  18. elif [ -f "$SITE_DIR/$REQUEST_URI.md" ]; then
  19. handler "$SITE_DIR/$REQUEST_URI.md"
  20. fi
  21. }
  22. nav_tree() {
  23. find "$SITE_DIR" |
  24. sed -E -e "$DIR_FILTER s!^$SITE_DIR!!; $DIR_CLEAN" 2>&1 |
  25. sort -u | awk -v req_path="$REQUEST_URI" -F/ '
  26. function p(x, y, s) { for(i=0; i < x-y; i+=1) print s }
  27. BEGIN { lNF=2; print "<ul>" }
  28. {
  29. d = ""
  30. if(match($0, "/$"))
  31. d = "/"
  32. sub("/$", "") # Strip trailing / for dirs so NF is consistent
  33. p(NF, lNF, "<li><ul>")
  34. p(lNF, NF, "</ul></li>")
  35. lNF = NF
  36. bname = $NF d
  37. path = $0 d
  38. gsub(/[\-_]/, " ", bname)
  39. # To avoid false matches add trailing / even for plain files to act as delimiter
  40. pa = path
  41. gsub(/[^\/]$/, "&/", pa)
  42. if(index(req_path "/", pa) == 1)
  43. print "<li><a href=\"" path "\" class=\"thisPage\">&raquo;<i> " bname "</i></a></li>"
  44. else
  45. print "<li><a href=\"" path "\">&rsaquo; " bname "</a></li>"
  46. }
  47. END { p(lNF, 2, "</ul></li>"); print "</ul>" }'
  48. }