3 # Copyright 2024 Paul Hänsch
5 # Permission to use, copy, modify, and/or distribute this software for any
6 # purpose with or without fee is hereby granted, provided that the above
7 # copyright notice and this permission notice appear in all copies.
9 # THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
12 # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 # IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 . "$_EXEC/cgilite/cgilite.sh"
18 . "$_EXEC/cgilite/storage.sh"
19 . "$_EXEC/cgilite/db23.sh"
22 while [ $# -gt 0 ]; do case $1 in
23 --cloud) cloud=true; shift 1;;
24 --link) link=true; shift 1;;
29 for tagfile in "$_DATA"/tags/*; do
31 [ "$tag" = "*" ] && break
33 n=0; while read -r page date; do
34 if ! pdate="$(DB3 get "$page")"; then
35 if pdate="$(stat -c %Y "$_DATA/pages/$(UNSTRING "$page")/#page.md" )"; then
36 DB3 set "$page" "$pdate"
38 debug "Remove $page from $tag"
39 # DBM "$tagfile" remove "$(UNSTRING "$page")"
43 [ "$date" -ge "$pdate" ] && n=$((n + 1))
46 printf '%i %i %s\n' "$RANDOM" "$n" "$tag"
48 debug "Removing tag: $tagfile" # && rm -- "$tagfile"
50 [ $n -gt $max ] && max="$n"
54 max="${taglist##*${BR}}"
55 taglist="${taglist%${BR}*}"
57 if [ "$taglist" ]; then
58 [ "$cloud" ] && printf '<ul class="macro taglist cloud">\n' \
59 || printf '<ul class="macro taglist">\n'
60 printf %s\\n "$taglist" \
61 | { [ "$cloud" ] && sort -n || sort -k 3; } \
62 | while read -r junk inc tag; do
64 printf '<li class=tag inc=%i rel=%i ><a href="./[search]?q=%s">#%s</a></li>\n' \
65 "$inc" "$((9 * inc / max))" "$(URL "$tag")" "$(HTML "$tag")"
67 printf '<li class=tag inc=%i rel=%i >#%s</li>\n' \
68 "$inc" "$((9 * inc / max))" "$(HTML "$tag")"