]> git.plutz.net Git - shellwiki/blobdiff - macros/pagelist
allow negative tag selection
[shellwiki] / macros / pagelist
index 08764aabe4d91c4924557557c609f5037d9d489d..ced89eb1efedc8bf92ab66cc9b93ac2a09b51857 100755 (executable)
@@ -18,7 +18,7 @@
 . "$_EXEC/acl.sh"
 . "$_EXEC/tools.sh"
 
-tags='' dir='' depth='' glob_system_pages=false
+tags='' ntags='' dir='' depth='' glob_system_pages=false
 label='' labeltype='' altlabel='' cnt=0
 
 set -- "$@" --
@@ -26,6 +26,7 @@ while [ $# -gt 0 ]; do case $1 in
   --system) glob_system_pages=true; shift 1;;
   --depth)  depth="$2" shift 2;;
   \#*) tags="${tags}${tags:+ }${1###}"; shift 1;;
+  \!*) ntags="${ntags}${ntags:+ }${1##!}"; shift 1;;
   --h1|--h2|--h3|--h4|--h5|--h6|--label)
     labeltype="${1#--}" label="$2"; shift 2;;
   --alt-label)
@@ -54,7 +55,8 @@ done \
     if [ -f "$_DATA/pages/${pagedir}/#page.md" -o \
          -f "$_EXEC/pages/${pagedir}/#page.md" ] \
        && acl_read "$pagedir" \
-       && has_tags "$pagedir" $tags
+       && has_tags "$pagedir" $tags \
+       && ! has_tag "$pagedir" $ntags
     then
       [ "$cnt" -eq 0 -a "$label" ] \
       && printf '<%s class="macro pagelist label">%s</%s>' \