X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=widgets.sh;h=4e93629165dedb3386802eb692e8bd33399917ca;hb=09b108b3ecd6c49467d0030576468c6cbf93c2f0;hp=35b8b70ed349a9414e020e1789df3dc4176aa301;hpb=b5b075a30b393de910def9745a9692dad89bf2cf;p=serve0 diff --git a/widgets.sh b/widgets.sh old mode 100644 new mode 100755 index 35b8b70..4e93629 --- a/widgets.sh +++ b/widgets.sh @@ -4,6 +4,7 @@ include_widgets="$0" . "$_EXEC/cgilite/storage.sh" +. "$_EXEC/db_meta.sh" w_refuri="$(URL "$PATH_INFO")?$(HTML "$QUERY_STRING")" @@ -14,23 +15,14 @@ c_tags="$_DATA/.index/tags.cache"; c_tagcategories="$_DATA/.index/tagcategories. if [ ! -s "$c_tags" -o ! -s "$c_tagcategories" ] \ || [ "$(find "$_DATA/" -path '*/.index/meta' -newer "$c_tags")" ] then - w_tags="$( cn=1 - find "$_DATA/" -path '*/.index/meta' -print0 \ - | xargs -r0 sed -r ' - s;^.*\t.*\t.*\ttags=(.*)\tcomment=.*\t.*\r$;\1;; - s;,;\n;g;'"$UNSTRING" \ - | { sort; printf '\n'; } \ - | while read -r tag; do - [ "$tag" = "$otag" ] \ - && cn=$((cn + 1)) \ - || { - printf "%i %s\n" "$cn" "$otag" - cn=1 - } - otag="$tag" - done \ - |sort -rn |cut -f2- |HTML \ - |sed "s- -\n-g; s;\n\n;\n;g;" + w_tags="$( + list_meta |sed -E ' + s;^.*\ttags=([^\t]*)\t.*$;\1;; + s;,;\n;g; + ' \ + | sort |uniq -c |sort -rn |sed -E 's;^ *[0-9]+ ;;;' \ + | UNSTRING | HTML \ + | sed -E 's; \;;\n;g; s;\n+;\n;g;' )" w_tagcategories="$(printf %s "$w_tags" | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' |sort -u )" printf %s "$w_tags" >"$c_tags"