+list_item() {
+ local meta file link name
+
+ if [ "${META_NAME%/}" != "${META_NAME}" ]; then
+ printf '[a .list .dir href="%s?%s" . %s]' \
+ "$(URL "${PATH_INFO%/}/${META_NAME}")" "${w_refuri#*\?}" \
+ "$(HTML "${META_NAME%/}")"
+ return 0
+ fi
+
+ file="$_DATA/${PATH_INFO%/}/$(list_fullname "${META_NAME}")"
+ if [ -f "$file" ]; then
+ link="$(URL "${PATH_INFO%/}/${file#${_DATA}/${PATH_INFO}}")"
+ name="$(HTML "${PATH_INFO%/}/${file#${_DATA}/${PATH_INFO}}")"
+ printf '[div .list .file
+ [a href="%s" [img src="%s?a=thumbnail"]][label . %s]
+ [span .time %i:%02imin] [span .dim %ix%i] %s
+ [checkbox "select" "%s" id="select_%s"][label for="select_%s" +]
+ ]' \
+ "$link" "$link" "${name##/}" \
+ "$((META_LENGTH / 60))" "$((META_LENGTH % 60))" \
+ "$META_WIDTH" "$META_HEIGHT" \
+ "$(printf %s\\n "${META_TAGS}" \
+ | sed -r 's;^;,;; s;,+;,;g; s;,$;;;
+ :X s;,-?([^,]+)(,|$); [span .tag\n \1]\2;; tX;'
+ )" "$name" "$link" "$link"
+ else
+ debug "Canning record for nonexist file: $META_NAME"
+ meta_purge "$_DATA/$ITEM/$META_NAME"
+ fi
+}
+
+[ "$FILTER" ] && list_fex="$(
+ fex='p'
+ STRING "$FILTER^" \
+ | sed -E 's;\^;\n;g; s;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\&;g' \
+ | while read -r f; do
+ [ "${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
+)"
+
+list_fullname(){
+ local short="$1" file
+ file="$(printf %s\\n "$_DATA/$ITEM/$short".*)"
+ file="${file%%${BR}*}"
+ [ -e "$file" ] && printf %s\\n "${file#${_DATA}/${ITEM}/}"
+}
+
+list_filter(){
+ if [ "$FILTER" ]; then
+ debug "FEX:" "$list_fex"
+ sed -nE "$list_fex"
+ elif [ "${SEARCH#!}" != "${SEARCH}" ]; then
+ grep -aviEe "$(STRING "${SEARCH}" \
+ | sed -E ':x s;((^|[^\\])(\\\\)*)\+;\1 ;g; tx;
+ s;((^|[^\\])(\\\\)*)\\\+;\1+;g;
+ s; ;\\+;g;')"
+ elif [ "${SEARCH}" ]; then
+ grep -aiEe "$(STRING "${SEARCH}" \
+ | sed -E ':x s;((^|[^\\])(\\\\)*)\+;\1 ;g; tx;
+ s;((^|[^\\])(\\\\)*)\\\+;\1+;g;
+ s; ;\\+;g;')"