From 5265f0fb5c0b960a89be7fcd9c9e7cc12d1bcde4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Tue, 22 Feb 2022 17:58:03 +0100 Subject: [PATCH] avoid multiple reordering of tags --- multitag.sh | 2 -- widgets.sh | 27 +++++++++++++-------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/multitag.sh b/multitag.sh index d928e45..12117cd 100755 --- a/multitag.sh +++ b/multitag.sh @@ -51,8 +51,6 @@ done ( if [ $(POST_COUNT select) -gt 0 ]; then taglist >"$c_tags.$$" - tclist "$(cat "$c_tags.$$")" >"$c_tagcategories.$$" mv -- "$c_tags.$$" "$c_tags" - mv -- "$c_tagcategories.$$" "$c_tagcategories" fi & ) & 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#*:}" -- 2.39.2