#!/bin/zsh
-url="$(egrep -o '(^|&)(i=).+(&|$)' <<<"${QUERY_STRING}" |sed -r 's:^&?i=::;s:&.*::;s:\+: :g;s:%:\\x:g')"
-url="$(echo -e "${url}" |sed 's:\t: :g;s:\r::g;s:\\:\\\\:g' |head -n1)"
-rev="$(egrep -o '(^|&)(r=)[0-9]+(&|$)' <<<"${QUERY_STRING}" |tr -d 'r=&')"
+url="$(sed -rn 's:\+: :g;s:%:\\x:g;s:^(.*&)?i=([^&]+)(&.*)?$:\2:p' <<<"${QUERY_STRING}")"
+url="$(echo -e "${url}" |sed -rn '1{s:\t: :g;s:\r::g;s:\\:\\\\:g;p}')"
+rev="$(sed -rn '/^(.*&)?r=([0-9]+)(&.*)?$/{s:^(.*&)?r=([0-9]+)(&.*)?$:\2:;s:\+: :g;s:%:\\x:g;p}' <<<"${QUERY_STRING}")"
-baseuri=$(egrep '^svnRepo=.*$' project.meta |cut -d= -f2-)
-lastrev=$(svn info "$baseuri" |egrep '^Revision:' |cut -d\ -f2)
+baseuri=$(sed -rn 's:^svnRepo=(.*)$:\1:p' project.meta)
+lastrev=$(svn info "$baseuri" |sed -rn 's;^Revision: *([0-9]+);\1;p')
[ -z "$rev" ] && rev="$lastrev"
cat <<SVNEND
<div id="LEFT">
<h1>Path:</h1>
<a href='?p=Subversion&i=/&r=$rev'>[root]</a>
-SVNEND
-tmp=$url
-until [ -z "$tmp" -o "$tmp" = // ]; do
- echo "<a href='?p=Subversion&i=$tmp&r=$rev'>/$(basename "$tmp")</a> "
- tmp=$(dirname "$tmp")/
-done |tac
-echo '<hr><h1>Revisions:</h1>'
-for i in {1.."$lastrev"}; do
- echo "<a href='?p=Subversion&i=$url&r=$i'>$i</a>"
-done
-
-cat <<SVNEND
+ $(tmp=$url
+ until [ -z "$tmp" -o "$tmp" = // ]; do
+ echo "<a href='?p=Subversion&i=$tmp&r=$rev'>/$(basename "$tmp")</a> "
+ tmp=$(dirname "$tmp")/
+ done |tac)
+ <hr><!---------------------------------------------------------------------------------->
+ <h1>Revisions:</h1>
+ $(for i in {1.."$lastrev"}; do
+ echo "<a href='?p=Subversion&i=$url&r=$i'>$i</a>"
+ done)
</div>
<div id="RIGHT">
<h1>Changelog:</h1><hr>
$(svn log $(egrep -q '^(.*/|)$' <<<"$url" && echo '') "${baseuri}/${url}" |\
-sed -rn '2,${s:^-+$:</div>:g;
-s:^r([0-9]+) \| ([a-zA-Z0-9]+) \| ([0-9: -]+) .+$:<div class="changelog"><h2>Revision \1 by \2<br>at \3</h2>:g;p}')
+ sed -rn '2,${s:^-+$:</div>:g;
+ s:^r([0-9]+) \| ([a-zA-Z0-9]+) \| ([0-9: -]+) .+$:<div class="changelog"><h2>Revision \1 by \2<br>at \3</h2>:g;p}')
</div>
<div id="MAIN">
<div class='wikitext'><h1>$(basename "$url"), Revision "$rev":</h1>
-SVNEND
-if (egrep -q '^(.*/|)$' <<<"$url"); then
- svn ls -r "$rev" "${baseuri}/${url}" |sed -r "s:^.*$:<a href='?p=Subversion\&i=$url/&\&r=$rev'>&</a><br>:g"
- echo '</div>'
-else
- lang=$(source-highlight --lang-list |cut -d\ -f1 |grep -x "$(sed 's:.*\.::g' <<<"$url")" || echo sh)
- grep -q '\.' <<<"$url" || lang=txt
- svn cat -r "$rev" "${baseuri}/${url}" |source-highlight -s "$lang" #|sed 's:<:\<:g;s:>:\>:g;'
-fi
-cat <<SVNEND
+ $(if (egrep -q '^(.*/|)$' <<<"$url"); then #are we showing a directory
+ svn ls -r "$rev" "${baseuri}/${url}" |sed -r "s:^.*$:<a href='?p=Subversion\&i=$url/&\&r=$rev'>&</a><br>:g"
+ echo '</div>'
+ else #or are we showing a file
+ lang=$(source-highlight --lang-list |cut -d\ -f1 |grep -x "$(sed 's:.*\.::g' <<<"$url")" || echo sh)
+ grep -q '\.' <<<"$url" || lang=txt
+ svn cat -r "$rev" "${baseuri}/${url}" |source-highlight -s "$lang"
+ fi)
</div></div>
SVNEND