]> git.plutz.net Git - serve0/blob - actions/filter.sh
tagging engine
[serve0] / actions / filter.sh
1 #!/bin/zsh
2
3 if [ -n "${CONTENT_LENGTH}" -a "${CONTENT_LENGTH}" -gt 0 ]; then
4 (head -c "${CONTENT_LENGTH}"; echo)|sed 's:&:\n:g;s:\r::g' |while read line; do
5   case "$line" in
6     type[0-9]=neg)
7       [ -z "$filters" ] && filters="!"
8       [ -n "$filters" ] && egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^!"
9       ;;
10     type[0-9]=pos)
11       egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^"
12       ;;
13     category=*)
14       category="$(sed 's/^category=//;s/+/ /g;s/%/\\x/g' <<<"$line")"
15       category="$(echo -e "${category}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
16       ;;
17     filter=*)
18       filter="$(sed 's/^filter=//;s/+/ /g;s/%/\\x/g' <<<"$line")"
19       filter="$(echo -e "${filter}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
20       egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|"
21       filters="${filters}${filter}"
22       ;;
23     cfilter=*)
24       cfilter="$(sed 's/^cfilter=//;s/+/ /g;s/%/\\x/g' <<<"$line")"
25       cfilter="$(echo -e "${cfilter}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
26       egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|"
27       [ -n "$cfilter" ] && filters="${filters}${category}:${cfilter}"
28       ;;
29     o=Name) order=Name;;
30     o=Date) order=Date;;
31     o=Length) order=Length;;
32   esac
33 done
34 fi
35
36 echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent
37 echo -n "Location: ?o=${order}&f=${filters}\n\n"