X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=widgets.sh;fp=widgets.sh;h=46fdbf65525d32b017d47f2bdb4d4d2f71218903;hb=5265f0fb5c0b960a89be7fcd9c9e7cc12d1bcde4;hp=26d755fb4301e3676b973cad186edfc41f13af8f;hpb=d530d1d96264df5d7684eac1be32c41beec48311;p=serve0 diff --git a/widgets.sh b/widgets.sh index 26d755f..46fdbf6 100755 --- a/widgets.sh +++ b/widgets.sh @@ -20,11 +20,13 @@ taglist(){ | UNSTRING | HTML \ | sed -E 's; \;;\n;g; s;\n+;\n;g;' } - -tclist(){ - printf %s "$*" \ - | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' \ - |sort -u +tagorder(){ + printf '*\n%s\n$\n' "$w_tagcategories" \ + | while read -r category; do + printf '%s\n' "$w_tags" \ + | { [ "$category" = '*' ] && grep -avF ':' || grep -awF "${category}"; } \ + | { sed -u 10q; sort; } + done } c_tags="$_DATA/.index/tags.cache"; @@ -33,13 +35,12 @@ if [ ! -s "$c_tags" ]; then mv "$c_tags.$$" "$c_tags" fi w_tags="$(cat "$c_tags")" - -c_tagcategories="$_DATA/.index/tagcategories.cache" -if [ ! -s "$c_tagcategories" ]; then - tclist "$w_tags" >"$c_tagcategories.$$" - mv "$c_tagcategories.$$" "$c_tagcategories" -fi -w_tagcategories="$(cat "$c_tagcategories")" +w_tagcategories="$( + printf %s "$w_tags" \ + | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' \ + |sort -u +)" +w_tags="$(tagorder)" [ "$ORDER" = Name ] && w_coname=checked [ "$ORDER" = Date ] && w_codate=checked @@ -194,7 +195,6 @@ w_advsearch(){ printf '%s\n' "$w_tags" \ | { [ "$category" = '*' ] && grep -avF ':' || grep -awF "${category}"; } \ - | { sed -u 10q; sort; } \ | while read -r tag; do [ "$tag" ] || continue t=''; [ ! "${f%%*|${tag}|*}" ] && t=checked @@ -244,7 +244,6 @@ w_tagging(){ printf '[fieldset [legend %s:][div .tagselect\n' "$category" printf %s "$w_tags" \ | { [ "$category" = 'Tags' ] && grep -avF ':' || grep -awF "${category}"; } \ - | { sed -u 10q; sort; } \ | while read -r tag; do [ "$tag" ] || continue d="${tag#-}"; d="${d#*:}"