]> git.plutz.net Git - shellwiki/commitdiff
introduce css pragma as separate handler
authorPaul Hänsch <paul@plutz.net>
Thu, 18 May 2023 10:57:45 +0000 (12:57 +0200)
committerPaul Hänsch <paul@plutz.net>
Thu, 18 May 2023 10:57:45 +0000 (12:57 +0200)
handlers/10_css.sh [new file with mode: 0755]
handlers/10_page.sh

diff --git a/handlers/10_css.sh b/handlers/10_css.sh
new file mode 100755 (executable)
index 0000000..2efc07b
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+css(){
+  local path="${1:-${PATH_INFO}}"
+  local pagefile css=''
+  # Get directory part of PATH_INFO
+  path="${path%/*}/./"
+
+  while :; do
+    [ "$path" = / ] && break
+    path="${path%/*/}/"
+
+    if ! acl_read "$path"; then
+      continue
+    elif [ -f "$_DATA/pages/$path/#page.md" ]; then
+      pagefile="$_DATA/pages/$path/#page.md"
+    elif [ -f "$_EXEC/pages/$path/#page.md" ]; then
+      pagefile="$_EXEC/pages/$path/#page.md"
+    else
+      continue
+    fi
+
+    css="$(sed -En '
+      s;\r$;;;
+      /^%css([\t ]+.*)?$/bCSS;
+      20q;
+      b;
+
+      :CSS
+      s;(%(css)?)?[\t ]*;;
+      p; n; s;\r$;;;
+      /^(%[ \t]+|%css[ \t]+|[ \t]+)[^ \t\r]+$/bCSS;
+      /^(%[ \t]*|%css[ \t]*)$/bCSS;
+    ' <"$pagefile")${BR}${css}"
+  done
+
+  printf %s\\n "${css}"
+}
+
+PAGE_CSS="$(css "${PATH_INFO}")"
+
+return 1
index f8cbbafaae166c9f141af7d548c18f3a5cba47b5..87af6850279a517c957be9440221c8a0f4a4b8e2 100755 (executable)
@@ -1,7 +1,6 @@
 #!/bin/sh
 
 . "$_EXEC/cgilite/file.sh"
-. "$_EXEC/css.sh"
 
 CACHE_AGE=${CACHE_AGE:-300}
 export MD_MACROS="$_EXEC/macros"
@@ -62,7 +61,6 @@ case "${PATH_INFO}" in
     elif ! acl_read "$PATH_INFO"; then
       theme_error 403
     else
-      PAGE_CSS="$(css "${PATH_INFO}")"
       theme_page "${PATH_INFO}"
     fi
     return 0