]> git.plutz.net Git - serve0/blobdiff - list.sh
Merge commit 'efaa2a8db2857d130e598104aea0fdbab398f714'
[serve0] / list.sh
diff --git a/list.sh b/list.sh
index 259b9cdf3bfb6dba4b0cf2d583d5979f5477a04c..60609b62c2f26c05dbeef788979d163ac0c178c3 100644 (file)
--- a/list.sh
+++ b/list.sh
@@ -35,12 +35,12 @@ list_item() {
       "$link" "$link" "${name##/}" \
       "$((length / 60))" "$((length % 60))" \
       "$width" "$height" \
-      "$(printf '%s\n' "${tags#tags=}" \
-         | sed -r "$UNSTRING"' s;^;,;; s;,+;,;g; s;,$;;;
+      "$(UNSTRING "${tags#tags=}" \
+         | sed -r 's;^;,;; s;,+;,;g; s;,$;;;
                    :X s;,-?([^,]+)(,|$); [span .tag\n \1]\2;; tX;'
       )" "$name" "$link" "$link"
   else
-    printf 'Canning record for nonexist file: %s\n' "$name" >&2
+    debug "Canning record for nonexist file: $name"
     meta_purge "$_DATA/$ITEM/$name"
   fi
 }
@@ -51,10 +51,14 @@ list_item() {
   STRING "$FILTER^" \
   | sed -E 's;\^;\n;g; s;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\&;g' \
   | while read -r f; do
-    [ "${f#\~}" ] || continue
-    [ "${f#\~}" = "$f" ] \
-    && fex="/(\ttags=([^\t]*,)?)(${f})((,[^\t]*)?\t)/{${fex}}" \
-    || fex="/(\ttags=([^\t]*,)?)(${f#\~})((,[^\t]*)?\t)/d; ${fex}"
+    [ "${f##*[A-Z]*}" ] && tl="y;ABCDEFGHIJKLMNOPQRSTUVWXYZ;abcdefghijklmnopqrstuvwxyz;;"
+    case $f in
+      ''|~) continue;;
+      ~\\\$:*) fex="h; ${tl} /${f#~\\\$:}/d; g;${fex}";;
+      \\\$:*) fex="h; ${tl} /${f#\\\$:}/{g;${fex}}";;
+      ~*) fex="/(\ttags=([^\t]*,)?)(${f#\~})((,[^\t]*)?\t)/d; ${fex}";;
+       *) fex="/(\ttags=([^\t]*,)?)(${f})((,[^\t]*)?\t)/{${fex}}";;
+    esac
     printf '%s\n' "${fex}"
   done \
   | tail -n1
@@ -71,7 +75,7 @@ list_fullname(){
 
 list_filter(){
   if [ "$FILTER" ]; then
-    printf "FEX: %s\n" "$list_fex" >&2
+    debug "FEX:" "$list_fex"
     sed -nE "$list_fex"
   elif [ "${SEARCH#!}" != "${SEARCH}" ]; then
     grep -aviEe "$(STRING "${SEARCH}" \
@@ -207,13 +211,13 @@ printf 'Content-Type: text/html;charset=utf-8\r\n\r\n'
   printf ' by %s]' "$ORDER"
   printf '
   [meta name="viewport" content="width=device-width"]
+  [link rel=stylesheet href="/cgilite/common.css" ]
   [link rel=stylesheet href="/style.css" ]
 ] [body
   [div #navigation
     [a #t_bookmarks href="#bookmarks" ★]'
     w_search
     printf '
-    [a #t_avsearch href="#advsearch" Advanced]
     [a #t_prefs href="#prefs" ⚙]
   ]'
   w_bookmarks