wok-tiny annotate wiki/stuff/var/www/wiki/plugins/wkp_Tables.sh @ rev 100

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