wok
annotate sokojs/stuff/shrink.sh @ rev 25002
updated nrg2iso (0.4 -> 0.4.1)
author |
Hans-G?nter Theisgen |
date |
Mon May 16 14:45:30 2022 +0100 (2022-05-16) |
parents |
33b1bc3e872a |
children |
8acc87b18a99 |
rev |
line source |
pascal@24567
|
1 #!/bin/sh
|
pascal@24567
|
2
|
pascal@24567
|
3 [ -z "$1" ] && echo "Usage: $0 level-files..." && exit 1
|
pascal@24567
|
4 case "$0" in
|
pascal@24567
|
5 *unshrink*)
|
pascal@24567
|
6 sed -i 's|.*//!||' $@ ;;
|
pascal@24571
|
7 *) for file in $@ ; do
|
pascal@24571
|
8 [ -s "$file" ] || continue
|
pascal@24578
|
9 grep -q '//!' && continue
|
pascal@24571
|
10 awk 'BEGIN { begin=9999; end=9999; tab=" " }
|
pascal@24567
|
11 function scan(s) {
|
pascal@24567
|
12 i=2
|
pascal@24567
|
13 for (b=0;;i++) {
|
pascal@24567
|
14 c=substr(s,i,1)
|
pascal@24567
|
15 if (c != " ") break
|
pascal@24567
|
16 b++
|
pascal@24567
|
17 }
|
pascal@24567
|
18 if (c != "\"") line[row++]=s
|
pascal@24567
|
19 else if (row == 0) print "//!" s
|
pascal@24567
|
20 else line2[cut++]=s
|
pascal@24567
|
21 for (e=0;;i++) {
|
pascal@24567
|
22 c=substr(s,i,1)
|
pascal@24567
|
23 if (c == "\"") break
|
pascal@24567
|
24 if (c == " ") e++; else e=0
|
pascal@24567
|
25 }
|
pascal@24567
|
26 if (b < begin) begin=b
|
pascal@24567
|
27 if (e < end && line[row-1]==s) end=e
|
pascal@24567
|
28 col=i-2
|
pascal@24567
|
29 }
|
pascal@24567
|
30 function flush() {
|
pascal@24567
|
31 for (i=0;i<row;i++) {
|
pascal@24569
|
32 l=length(line[i])-end-begin-3
|
pascal@24569
|
33 if (i == row-1) { tail="\"); //!"
|
pascal@24569
|
34 if (end==0) l--
|
pascal@24569
|
35 } else tail="\", //!"
|
pascal@24569
|
36 print "\"" tab substr(line[i],begin+2,l) tail line[i]
|
pascal@24567
|
37 }
|
pascal@24567
|
38 for (i=0;i<cut;i++) print "//!" line2[i]
|
pascal@24567
|
39 }
|
pascal@24567
|
40 { if (/^"/) {
|
pascal@24567
|
41 scan($0); n++
|
pascal@24567
|
42 if (/");/) flush()
|
pascal@24567
|
43 }
|
pascal@24567
|
44 else if (/^Row/) print "Row=" row " //!" $0
|
pascal@24567
|
45 else if (/^Col/) print "Col=" col-begin-end+length(tab) " //!" $0
|
pascal@24568
|
46 else if (/\\"[0-9]*\\">",$/ && n != 0) {
|
pascal@24567
|
47 s=$0; sub(/.*value=\\"/,"",s); sub(/\\">.*/,"",s)
|
pascal@24567
|
48 l=length(line[0])-3; n-=cut+row; begin-=length(tab)
|
pascal@24567
|
49 n=s - (l*n) - begin - ((begin+end)*(int(s/l)-n))
|
pascal@24567
|
50 print "document.write(\"<INPUT TYPE=\\\"button\\\" value=\\\"" n "\\\">\", //!" $0
|
pascal@24568
|
51 n=0
|
pascal@24567
|
52 }
|
pascal@24570
|
53 else print }' < $file | sed 's|"")|")|' > $file.$$
|
pascal@24567
|
54 mv -f $file.$$ $file
|
pascal@24567
|
55 done ;;
|
pascal@24567
|
56 esac
|