X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=macros%2Finclude;h=5eb613aa4659ec96128a0a6da670fc71a17719ac;hb=32a46b9aa404d760772578be04d100ae1c9a55f7;hp=790514705c87316c01471db8b0d29442d3227dc0;hpb=f7710b2f821cd2a7dc11f7818f10b70d065b5b52;p=shellwiki diff --git a/macros/include b/macros/include index 7905147..5eb613a 100755 --- a/macros/include +++ b/macros/include @@ -4,11 +4,7 @@ . "$_EXEC/acl.sh" . "$_EXEC/tools.sh" -from=1 -to=\$ -rev='' -items=\$ -path_info="$PATH_INFO" +from='1'; to='$'; rev=''; items='$' while [ $# -gt 0 ]; do case $1 in --from) from="$2"; shift 2;; @@ -38,25 +34,25 @@ page_glob "$page" \ | sort $rev \ | sed "${items}q" \ | while read glob; do - case $glob in - /*) export PATH_INFO="$(PATH "$glob")";; - *) export PATH_INFO="$(PATH "$path_info/$glob")";; - esac - acl_read || continue - if [ -f "$_DATA/pages/$PATH_INFO/#page.md" ]; then - mdfile="$_DATA/pages/$PATH_INFO/#page.md" - elif [ -f "$_EXEC/pages/$PATH_INFO/#page.md" ]; then - mdfile="$_EXEC/pages/$PATH_INFO/#page.md" - else - continue - fi - printf '
' "$(HTML "$glob")" - ( cd -- "${mdfile%/*}" + page="$(page_abs "$glob")" + acl_read "$page" || continue + mdfile="$(mdfile "$page")" || continue + hglob="$(HTML "$glob")" + refpfx="$(printf %s\\n "$hglob" |sed 's;[\;&\;];\\&;g')" + printf '
+ %s +
' \ + "${hglob}" "${hglob}" "${hglob}" + ( # PATH_INFO may be used by macros in the included page + export PATH_INFO="$page" + cd -- "${mdfile%/*}/" sed -n "${from},${to}p" <"$mdfile" \ | md \ | grep -vx '' ) | sed -E ' - s;(<[^>]+ )(href|src)="([^#/"][^"]*)"([^>]*>);\1\2="'"$(HTML "$glob")"'\3"\4;g + 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 ' - printf '
' + printf '
' done