wok-current annotate tazwikiss/stuff/var/www/wiki/plugins/wkp_Tables.sh @ rev 5859

Add tazwikiss
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jul 18 12:02:49 2010 +0200 (2010-07-18)
parents
children
rev   line source
pascal@5859 1 plugin="Tables"
pascal@5859 2 description_fr="Syntaxe de tables"
pascal@5859 3 description="Table syntax"
pascal@5859 4
pascal@5859 5 formatBegin()
pascal@5859 6 {
pascal@5859 7 CONTENT=$(sed -e 's/\[\([^]]*\)|\([^]]*\)|\([^]]*\)\]/[\1{WKP_TBL_BAR}\2{WKP_TBL_BAR}\3]/g' \
pascal@5859 8 -e 's/\[\([^]]*\)|\([^]]*\)\]/[\1{WKP_TBL_BAR}\2]/g' -e 's,|,||,g' \
pascal@5859 9 -e 's,^\( *|\)|,\1,' -e 's/|\( *\)$/\1/' <<EOT | awk '
pascal@5859 10 {
pascal@5859 11 if (/^ *\|.*\|$/) {
pascal@5859 12 if (in_array == 0) printf "<table class=\"wikitable\">"
pascal@5859 13 in_array = 1
pascal@5859 14 s = $0
pascal@5859 15 printf "<tr>"
pascal@5859 16 while (match(s,/\|[^\|]*\|/)) {
pascal@5859 17 q = substr(s,RSTART+1,RLENGTH-2)
pascal@5859 18 s = substr(s,RSTART+RLENGTH)
pascal@5859 19 c=""; lr=""; tb=""
pascal@5859 20 if (match(q,/^[hlrtb]+ /)) {
pascal@5859 21 for (i = 0; i < RLENGTH; i++) {
pascal@5859 22 if (q ~ /^h/) c=" class=\"em\""
pascal@5859 23 if (q ~ /^l/) lr="text-align: left; "
pascal@5859 24 if (q ~ /^r/) lr="text-align: right; "
pascal@5859 25 if (q ~ /^t/) tb="vertical-align: top; "
pascal@5859 26 if (q ~ /^b/) tb="vertical-align: bottom; "
pascal@5859 27 q = substr(q,2)
pascal@5859 28 }
pascal@5859 29 }
pascal@5859 30 if (lr != "" || tb != "") c = c " style=\"" lr tb "\""
pascal@5859 31 if (match(q,/^[0-9]+ */)) {
pascal@5859 32 n = RLENGTH
pascal@5859 33 match(q,/^[0-9]+/)
pascal@5859 34 c = c " colspan=\"" substr(q,1,RLENGTH) "\""
pascal@5859 35 q = substr(q,n+1)
pascal@5859 36 }
pascal@5859 37 if (match(q,/^,[0-9]+ */)) {
pascal@5859 38 n = RLENGTH
pascal@5859 39 match(q,/^,[0-9]+/)
pascal@5859 40 c = c " rowspan=\"" substr(q,2,RLENGTH-1) "\""
pascal@5859 41 q = substr(q,n+1)
pascal@5859 42 }
pascal@5859 43 printf " <td" c ">" q "</td>"
pascal@5859 44 }
pascal@5859 45 printf "</tr>"
pascal@5859 46 }
pascal@5859 47 else {
pascal@5859 48 if (in_array != 0) print "</table>"
pascal@5859 49 in_array = 0
pascal@5859 50 print
pascal@5859 51 }
pascal@5859 52 } END { if (in_array != 0) print "</table>" }' | \
pascal@5859 53 sed -e 's/{WKP_TBL_BAR}/|/g' -e 's,||,|,g'
pascal@5859 54 $CONTENT
pascal@5859 55 EOT
pascal@5859 56 )
pascal@5859 57 }