X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=macros%2Frevisions;h=5d7b5893596c8a9b09edf66e81db0a8c332a6aa3;hb=9684cabf3651df8369d71c7a60e9235730dbe978;hp=c6fb8fa2cb59b7d239b81f372515a5ed96ed3a55;hpb=a6ae272ce0af6b93cabddf4aa4a3cebc7350f5a0;p=shellwiki diff --git a/macros/revisions b/macros/revisions index c6fb8fa..5d7b589 100755 --- a/macros/revisions +++ b/macros/revisions @@ -4,23 +4,78 @@ . "$_EXEC/tools.sh" . "$_EXEC/acl.sh" -page="$1" +_(){ printf %s\\n "$*"; } +[ "${LANGUAGE}" -a -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh" + +LIST=true DIFF= +while [ $# -gt 0 ]; do case $1 in + --list) + LIST=true + shift 1 + ;; + --no-list) + LIST= + shift 1 + ;; + --diff) + DIFF=true + shift 1 + ;; + --no-diff) + DIFF= + shift 1 + ;; + *)page="$1" + shift 1 + ;; +esac; done + page_abs="$(page_abs "$page")" +page_default="${page_abs%:*/}" if ! acl_read "$page_abs"; then return 0 -elif [ ! "$(which git)" ]; then - printf '
GIT is not available to handle revisioning.
' fi -printf '\n' +fi + +if [ "$DIFF" = true -a "$LANGUAGE_DEFAULT" -a "$page_default" != "$page_abs" ]; then + commit="$(git -C "$_DATA" log --pretty=format:%H -- "pages${page_abs}#page.md" |head -n1)" + printf '

%s

' "$(_ 'Latest changes to the original language page')" + git -C "$_DATA" diff -U3 "$commit" -- "pages${page_default}#page.md" |tail -n+5 \ + | while read -r diff; do case $diff in + @@\ *\ @@*) + line="${diff#@@ * @@}" + num="${diff%"${line}"}" + printf '%s\n' "$(HTML "$num")" + printf '%s\n' "$(HTML "$line")" + ;; + -*) printf '%s\n' "$(HTML "$diff")";; + +*) printf '%s\n' "$(HTML "$diff")";; + \ *) printf '%s\n' "$(HTML "$diff")";; + \\\ *) printf '%s\n' "$(HTML "$diff")";; + esac; done + printf '
' +fi + +printf '\n'