X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=macros%2Finclude;h=fbc2ffffbde5b013584c5242bfc27cf244adf452;hb=a0950e004fddb7466b0883c4a623076d654c0849;hp=f6b3a34ced7f4c22b700b9b4886e1070c8c2f421;hpb=7ee49ea6a4595386680b9a19ae75108068b93fb0;p=shellwiki diff --git a/macros/include b/macros/include index f6b3a34..fbc2fff 100755 --- a/macros/include +++ b/macros/include @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2022 Paul Hänsch +# Copyright 2022 - 2023 Paul Hänsch # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -18,8 +18,9 @@ . "$_EXEC/acl.sh" . "$_EXEC/tools.sh" -from='1'; to='$'; rev=''; items='$'; link='true' +from='1'; to='$'; rev=''; items='$'; hl=0; link='true'; depth=0; tags=''; page=''; +set -- "$@" -- while [ $# -gt 0 ]; do case $1 in --from) from="$2"; shift 2;; from=*) from="${1#*=}"; shift 1;; @@ -29,7 +30,11 @@ while [ $# -gt 0 ]; do case $1 in items=*) items="${1#*=}"; shift 1;; --rev|--reverse) rev="-r"; shift 1;; --nolink) link=""; shift 1;; - *) page="$1"; shift 1;; + --hl|-hl) hl=$2; shift 2;; + --depth) depth=$2; shift 2;; + \#*) tags="${tags}${tags:+ }${1}"; shift 1;; + --) shift 1; break;; + *) set -- "$@" "$1"; shift 1;; esac; done if ! printf %s\\n "$from" |grep -qEx '[0-9]+|/([^/\\]|\\/|\\.)*/'; then @@ -45,13 +50,18 @@ if ! printf %s\\n "$items" |grep -qEx '\$|[0-9]+'; then exit 1 fi -page_glob "$page" \ +for page in "$@"; do + page_glob "$page" "$depth" +done \ | sort $rev \ | sed "${items}q" \ | while read glob; do page="$(page_abs "$glob")" - acl_read "$page" || continue mdfile="$(mdfile "$page")" || continue + acl_read "$page" || continue + has_tags "$page" $tags || continue + printf %s\\n "$INCLUDE_LIST" |grep -qxF "$page" && continue + export INCLUDE_LIST="${INCLUDE_LIST}${INCLUDE_LIST:+${BR}}$page" hglob="$(HTML "$glob")" refpfx="$(printf %s\\n "$hglob" |sed 's;[\;&\;];\\&;g')" [ "$link" ] \ @@ -72,6 +82,39 @@ page_glob "$page" \ s;(<[^>]+ )(href|src)="([^"]+://[^"]*|[mM][aA][iI][lL][tT][oO]:[^"]*)"([^>]*>);\1\2="/#safe/\3"\4;g s;(<[^>]+ )(href|src)="([^#/"][^"]*)"([^>]*>);\1\2="'"${refpfx}"'\3"\4;g s;(<[^>]+ )(href|src)="/#safe/([^"]*)"([^>]*>);\1\2="\3"\4;g - ' + ' | case $hl in + 1) sed -E 's;();\16\2;g; + s;();\15\2;g; + s;();\14\2;g; + s;();\13\2;g; + s;();\12\2;g; + ';; + 2) sed -E 's;();\16\2;g; + s;();\16\2;g; + s;();\15\2;g; + s;();\14\2;g; + s;();\13\2;g; + ';; + 3) sed -E 's;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + s;();\15\2;g; + s;();\14\2;g; + ';; + 4) sed -E 's;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + s;();\15\2;g; + ';; + 5|[6789]) + sed -E 's;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + s;();\16\2;g; + ';; + *) cat;; + esac printf '' done