Rev 16209 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 16209 | Rev 18226 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | #LL="env LC_COLLATE=POSIX LANG=POSIX LC_CTYPE=fr_FR.UTF-8" |
3 | #LL="env LC_COLLATE=POSIX LANG=POSIX LC_CTYPE=fr_FR.UTF-8" |
4 | LL="env LC_ALL=C LC_CTYPE=C LANG=C" |
4 | LL="env LC_ALL=C LC_CTYPE=C LANG=C" |
5 | thisdir=`pwd` |
5 | thisdir=`pwd` |
6 | lastdir=$thisdir |
6 | lastdir=$thisdir |
7 | 7 | ||
- | 8 | if [ -z "$wims_home" ]; then wims_home=$1; fi; |
|
8 | if [ -z "$wims_home" ]; then wims_home=$w_wims_home; fi |
9 | if [ -z "$wims_home" ]; then wims_home=$w_wims_home; fi |
9 | 10 | ||
10 | while [ -z "$wims_home" ] && [ "$lastdir" != "/" ] |
11 | while [ -z "$wims_home" ] && [ "$lastdir" != "/" ] |
11 | do |
12 | do |
12 | wims_home=`cat $lastdir/.wimshome 2>/dev/null` |
13 | wims_home=`cat $lastdir/.wimshome 2>/dev/null` |
Line 15... | Line 16... | ||
15 | if [ -z "$wims_home" ]; then |
16 | if [ -z "$wims_home" ]; then |
16 | echo WIMS home directory not found. |
17 | echo WIMS home directory not found. |
17 | exit; |
18 | exit; |
18 | fi |
19 | fi |
19 | proc=$wims_home/public_html/scripts/deduc |
20 | proc=$wims_home/public_html/scripts/deduc |
- | 21 | test= |
|
- | 22 | if [ ! -z "$w_wims_class" ]; then |
|
- | 23 | test=`echo $thisdir | grep -a '/classes/..$'` |
|
- | 24 | fi |
|
- | 25 | if [ ! -z "$test" ] && [ -d $wims_home/log/classes/$w_wims_class ]; then |
|
- | 26 | class_header=$wims_home/log/classes/$w_wims_class |
|
- | 27 | ntest=`awk -F'=' '$1=="sharing_exo" {print $2}' $class_header/neighbors 2>/dev/null` |
|
- | 28 | if [ ! -z "$ntest" ] && [ -d "$wims_home/log/classes/$ntest/src" ]; then |
|
- | 29 | class_header=$wims_home/log/classes/$ntest |
|
- | 30 | fi |
|
- | 31 | def=$class_header/def |
|
- | 32 | src=$class_header/src |
|
- | 33 | exindex=$class_header/Exindex |
|
- | 34 | extitles=$class_header/Extitles |
|
- | 35 | dfindex=$class_header/Dataindex |
|
- | 36 | exauth=$class_header/Exauthors |
|
- | 37 | imindex=$class_header/Imindex |
|
- | 38 | descindex=$class_header/Descindex |
|
- | 39 | obsindex=$class_header/Obsindex |
|
- | 40 | keywindex=$class_header/Exkeywords |
|
- | 41 | dickeyword=$class_header/Dickeywords |
|
- | 42 | tmp1=$class_header/tmp1 |
|
- | 43 | tmp2=$class_header/tmp2 |
|
- | 44 | imagedir=$src/images |
|
- | 45 | mkdir -p $def |
|
- | 46 | else |
|
- | 47 | # not in a class ? |
|
- | 48 | class_header= |
|
- | 49 | def=def |
|
- | 50 | src=src |
|
- | 51 | exindex=Exindex |
|
- | 52 | extitles=Extitles |
|
- | 53 | exauth=Exauthors |
|
- | 54 | dfindex=Dataindex |
|
- | 55 | imindex=Imindex |
|
- | 56 | descindex=Descindex |
|
- | 57 | obsindex=Obsindex |
|
- | 58 | keywindex=Exkeywords |
|
- | 59 | dickeyword=Dickeywords |
|
- | 60 | tmp1=tmp1 |
|
- | 61 | tmp2=tmp2 |
|
- | 62 | imagedir=images |
|
- | 63 | fi |
|
20 | 64 | ||
21 | if [ ! -d |
65 | if [ ! -d $def ]; then |
- | 66 | echo 1>&2 "Directory $def not found." |
|
- | 67 | exit; |
|
- | 68 | fi |
|
22 | if [ ! -d |
69 | if [ ! -d $src ]; then |
- | 70 | echo 1>&2 "Directory $src not found." |
|
- | 71 | exit; |
|
- | 72 | fi |
|
23 | 73 | ||
24 | deff=`cd |
74 | deff=`cd $def; ls *.def 2>/dev/null` |
25 | for i in $deff |
75 | for i in $deff |
26 | do |
76 | do |
27 | dd=`echo $i | sed 's!\.def!.ded!g'` |
77 | dd=`echo $i | sed 's!\.def!.ded!g'` |
28 | if [ ! -f |
78 | if [ ! -f $src/$dd ]; then |
29 | echo Removing |
79 | echo Removing $def/$i. |
30 | rm -f |
80 | rm -f $def/$i >/dev/null; |
31 | fi |
81 | fi |
32 | done |
82 | done |
33 | 83 | ||
- | 84 | # Processing ded src. |
|
34 | sext=ded |
85 | sext=ded |
35 | cd |
86 | cd $src |
36 | if [ -d cpp ]; then |
87 | if [ -d cpp ]; then |
37 | cd cpp |
88 | cd cpp |
38 | incf=`ls *.inc 2>/dev/null` |
89 | incf=`ls *.inc 2>/dev/null` |
39 | for i in $incf |
90 | for i in $incf |
40 | do |
91 | do |
41 | list=`egrep -a -l '#[[:blank:]]*include[[:blank:]]+"'$i'"' *.inc 2>/dev/null` |
92 | list=`egrep -a -l '#[[:blank:]]*include[[:blank:]]+"'$i'"' *.inc 2>/dev/null` |
42 | for j in $list |
93 | for j in $list |
43 | do |
94 | do |
44 | if [ $i -nt $j ]; then touch $j; fi |
95 | if [ $i -nt $j ]; then touch $j; fi |
45 | done |
96 | done |
46 | done |
97 | done |
47 | for i in $incf |
98 | for i in $incf |
48 | do |
99 | do |
49 | list=`egrep -a -l '#[[:blank:]]*include[[:blank:]]+"'$i'"' *.cpp 2>/dev/null` |
100 | list=`egrep -a -l '#[[:blank:]]*include[[:blank:]]+"'$i'"' *.cpp 2>/dev/null` |
50 | for j in $list |
101 | for j in $list |
Line 53... | Line 104... | ||
53 | done |
104 | done |
54 | done |
105 | done |
55 | pref=`ls *.cpp 2>/dev/null` |
106 | pref=`ls *.cpp 2>/dev/null` |
56 | for i in $pref |
107 | for i in $pref |
57 | do |
108 | do |
58 | list=`$LL |
109 | list=`$LL tr '\r' '\n' <$i | grep -a . | head -1 | grep -a target \ |
59 |
|
110 | | tr ',:;./?*#~$\\ ' ' ' \ |
60 |
|
111 | | awk -F'=' '{print $2}'` |
61 | test=`grep -E '^[[:blank:]]*#[[:blank:]]*include' $i \ |
112 | test=`grep -a -E '^[[:blank:]]*#[[:blank:]]*include' $i \ |
62 |
|
113 | | grep -a -E -v '^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*"[[:alnum:]_]+.inc"'` |
63 | if [ ! -z "$test" ]; then |
114 | if [ ! -z "$test" ]; then |
64 | echo $i: include violation. $test |
115 | echo $i: include violation. $test |
65 | list= |
116 | list= |
66 | fi |
117 | fi |
- | 118 | test=`echo $list | grep "-"` |
|
- | 119 | if [ ! -z "$test" ]; then |
|
- | 120 | echo $i: character - not allowed in target. $test |
|
- | 121 | list= |
|
- | 122 | fi |
|
- | 123 | ## perl -pi -e "s/#TARGET\s*\((\w+)\s*\)/defined TARGET_\1 /g" $i |
|
67 | grep . |
124 | $LL tr '\r' '\n' <$i | $LL sed "s/'/\'/g" | grep -a . | awk 'BEGIN {l=0}; {l++}; l>1 {print}' >cpp.tmp |
68 | for j in $list |
125 | for j in $list |
69 | do |
126 | do |
70 | if [ ! -f ../$j.$sext ] || [ $i -nt ../$j.$sext ]; then |
127 | if [ ! -f ../$j.$sext ] || [ $i -nt ../$j.$sext ]; then |
71 | echo "Preprocessing: $i -> ../$j.$sext" |
128 | echo "Preprocessing: $i -> ../$j.$sext" |
72 | cat <<@ >../$j.$sext |
129 | cat <<@ >../$j.$sext |
73 | %% This file is generated by preprocessor! |
130 | %% This file is generated by preprocessor! |
74 | %% Do not edit it by hand. |
131 | %% Do not edit it by hand. |
75 | %% Edit the source file cpp/$i. |
132 | %% Edit the source file cpp/$i. |
76 | 133 | ||
77 | @ |
134 | @ |
- | 135 | perl -pi -e "s/#TARGET\s*\((\w+)\s*\)/defined TARGET_\1 /g" cpp.tmp |
|
78 | cpp -P -C -nostdinc - |
136 | cpp -P -C -nostdinc -nostdinc++ -DTARGET_$j -A"TARGET($j)" -DOEFFILE=$j cpp.tmp | \ |
- | 137 | $LL sed "s/'/'/g" >>../$j.$sext |
|
79 | fi |
138 | fi |
80 | done |
139 | done |
81 | rm -f cpp.tmp |
140 | rm -f cpp.tmp |
82 | done |
141 | done |
83 | cd .. |
142 | cd .. |
84 | fi |
143 | fi |
85 | 144 | ||
86 | srcf=`ls *.ded 2>/dev/null` |
145 | srcf=`ls *.ded 2>/dev/null` |
87 | cd |
146 | cd $thisdir |
88 | oef2wims_mdef="methods variables context environ equivalence startname goal newobject minsteps options" |
147 | oef2wims_mdef="methods variables context environ equivalence startname goal newobject minsteps options" |
89 | export oef2wims_mdef |
148 | export oef2wims_mdef |
90 | for i in $srcf |
149 | for i in $srcf |
91 | do |
150 | do |
92 | dd=`echo $i | sed 's!\.ded!.def!g'` |
151 | dd=`echo $i | $LL sed 's!\.ded!.def!g'` |
93 | if [ ! -f |
152 | if [ ! -f $def/$dd ] || [ $src/$i -nt $def/$dd ]; then |
94 | # echo $dd |
- | |
95 | rm -f |
153 | rm -f $def/$dd 2>/dev/null |
96 | $wims_home/bin/oef2wims |
154 | $wims_home/bin/oef2wims $src/$i $def/$dd |
97 | fi |
155 | fi |
98 | done |
156 | done |
99 | 157 | ||
100 |
|
158 | # Processing compiled .def files. |
- | 159 | cd $def |
|
101 |
|
160 | list=`ls *.def 2>/dev/null | $LL sed 's/\.def//g'` |
- | 161 | cd $thisdir |
|
- | 162 | if [ -f "INDEX" ]; then |
|
- | 163 | transl_lang=`grep -a translation_language INDEX | awk -F= '{print $2}'`; |
|
- | 164 | module_lang=`grep -aw ^language INDEX | awk -F= '{print $2}'`; |
|
102 | 165 | fi |
|
103 |
|
166 | #if [ -z "$list" ]; then exit; fi |
104 | titlist= |
167 | titlist= |
- | 168 | titlist1= |
|
- | 169 | list1= |
|
- | 170 | rm -f $extitles.tmp |
|
- | 171 | rm -f $exauth $descindex $obsindex $keywindex $dickeyword |
|
- | 172 | ||
105 | for i in $list |
173 | for i in $list |
106 | do |
174 | do |
107 | tit=`awk -F= 'NF>=2 {print $2; exit}' |
175 | tit=`awk -F= 'NF>=2 {print $2; exit}' $def/$i.def | $LL tr ',\11' '; '` |
108 | echo "$i:$tit" >> |
176 | echo "$i:$tit" >>$extitles.tmp |
- | 177 | for lang in $transl_lang ; do |
|
- | 178 | titl=`grep -a "title_$lang" $def/$i.def | awk -F= '{print $2}'`; |
|
- | 179 | echo "$i:$titl" >>"${extitles}_$lang.tmp" |
|
- | 180 | done |
|
109 | titlist="$titlist$tit |
181 | titlist="$titlist$tit |
110 | " |
182 | " |
- | 183 | titlist1="$titlist1$tit," |
|
- | 184 | list1="$list1$i," |
|
111 | done |
185 | done |
- | 186 | ||
- | 187 | # Processing dicsort. |
|
112 | $wims_home/bin/dicsort |
188 | $wims_home/bin/dicsort $extitles.tmp 1>/dev/null |
113 | if [ -s |
189 | if [ -s $extitles.tmp.sorted ]; then |
114 |
|
190 | cat $extitles.tmp.sorted >$extitles |
- | 191 | rm -f $extitles.tmp* |
|
- | 192 | else |
|
- | 193 | rm -f $extitles.tmp.sorted |
|
- | 194 | echo >$extitles |
|
115 | fi |
195 | fi |
- | 196 | ||
- | 197 | # Processing trans_lang. |
|
- | 198 | for lang in $transl_lang |
|
- | 199 | do |
|
- | 200 | $wims_home/bin/dicsort "${extitles}_$lang.tmp" |
|
- | 201 | if [ -s "${extitles}_$lang.tmp.sorted" ]; then |
|
- | 202 | cat "${extitles}_$lang.tmp.sorted" > "${extitles}_$lang" |
|
- | 203 | else |
|
- | 204 | echo >"${extitles}_$lang" |
|
- | 205 | fi |
|
- | 206 | done |
|
- | 207 | rm -f *.tmp *.sorted |
|
116 | 208 | ||
117 | echo "$titlist" > |
209 | echo "$titlist" >$tmp1 |
118 | echo "$list" > |
210 | echo "$list" >$tmp2 |
119 | llist=`$LL paste |
211 | llist=`$LL paste $tmp1 $tmp2 | $LL sort -t ' ' -f -k 1,1` |
- | 212 | list1=`echo "$llist" | $LL awk -F'\11' 'length()>2 {print $2}' | $LL tr '\n' ' '` |
|
120 | list=`echo "$llist" | awk -F'\11' |
213 | list=`echo "$llist" | $LL awk -F'\11' 'length()>2 {print $2}' | $LL tr '\n' ','` |
121 | titlist=`echo "$llist" | awk -F'\11' 'length()>2 {print $1}' | $LL tr '\n' ','` |
214 | titlist=`echo "$llist" | $LL awk -F'\11' 'length()>2 {print $1}' | $LL tr '\n' ','` |
122 | 215 | ||
123 | rm -f |
216 | rm -f $tmp1 $tmp2 |
124 | cat > |
217 | cat >$exindex <<@ |
125 | !set exolist =!char 1 to -2 of $list |
218 | !set exolist =!char 1 to -2 of $list |
126 | !set titlelist=!char 1 to -2 of $titlist |
219 | !set titlelist=!char 1 to -2 of $titlist |
- | 220 | !set titlelist_$module_lang=!char 1 to -2 of $titlist |
|
127 | !set exototal =!itemcnt \$exolist |
221 | !set exototal =!itemcnt \$exolist |
128 | 222 | ||
- | 223 | @ |
|
- | 224 | ||
- | 225 | for lang in $transl_lang ; do |
|
- | 226 | for ex in $list1; do |
|
- | 227 | a=`grep -a title_$lang $def/$ex.def | awk -F= '{print $2}'`; |
|
- | 228 | if [ -z "$a" ]; then a=`grep -a "!set title" $def/$ex.def | awk -F= '{print $2}'` ; fi |
|
- | 229 | echo "$a">>tmp1 |
|
- | 230 | done |
|
- | 231 | titlist2=`cat $tmp1 | $LL tr '\n' ','` ; |
|
- | 232 | rm -f $tmp1 |
|
- | 233 | cat >>$exindex <<@ |
|
- | 234 | !set titlelist_$lang=!char 1 to -2 of $titlist2 |
|
129 | @ |
235 | @ |
- | 236 | done |
|
- | 237 | ||
- | 238 | ## keywords:exercises |
|
- | 239 | cd $thisdir |
|
- | 240 | export KEYWINDEX; KEYWINDEX="$keywindex"; |
|
- | 241 | export DICKEYWORD; DICKEYWORD="$dickeyword"; |
|
- | 242 | perl <<'EOF' |
|
- | 243 | my %hash=();my $TEXT=''; my $hash=\%hash; |
|
- | 244 | my ($file)=$ENV{KEYWINDEX}; open(IN, "$file"); |
|
- | 245 | while(<IN>) { |
|
- | 246 | my @a=split(":", $_); my @b=split(",", $a[1]); |
|
- | 247 | for my $c (@b){ chomp $c; $c=~ s/^\s+//; $c=~ s/\s+$//; $hash->{$c} .= "$a[0],";} |
|
- | 248 | } |
|
- | 249 | for my $aa (keys %hash){ chop $hash->{$aa}; $TEXT .= "$aa:$hash->{$aa}\n";}; |
|
- | 250 | if ($TEXT) { |
|
- | 251 | open (OUT, ">$ENV{DICKEYWORD}"); print OUT $TEXT; close OUT; |
|
- | 252 | } |
|
- | 253 | EOF |
|
- | 254 | ||
- | 255 | #### index of files in images/ "name:directory" |
|
- | 256 | cd $thisdir |
|
- | 257 | rm -f $imindex |
|
- | 258 | if [ -d $imagedir ]; then |
|
- | 259 | images=`cd $imagedir ; find * -type f 2>/dev/null` |
|
- | 260 | if [ -z "$images" ]; then |
|
- | 261 | echo "<!-- This file is automatically generated. Do not edit! -->" >$imindex |
|
- | 262 | for i in $images ; do d=`dirname $i` ; file=`basename $i` ; |
|
- | 263 | echo "$file:$d" >> $imindex ; |
|
- | 264 | done; |
|
- | 265 | fi |
|
- | 266 | fi |
|
- | 267 | ||
- | 268 | [ -n "$class_header" ] && exit |
|
- | 269 | ||
- | 270 | # Datafiles |
|
- | 271 | ||
- | 272 | if [ -d src/data ]; then |
|
- | 273 | datafiles=`cd src/data; ls *.data | sed 's/\.data$//'` |
|
- | 274 | rm -f $dfindex.tmp |
|
- | 275 | for df in $datafiles; do |
|
- | 276 | tit=`awk 'NF>0 {if($1 ~ /^[^.:]/) print; exit}' src/data/$df.data` |
|
- | 277 | author=`awk -F.author '/^.author / {print $2}' src/data/$df.data`; |
|
- | 278 | recordcnt=`awk '/^:/{i++}END{print i}' src/data/$df.data` |
|
- | 279 | [ -z "$tit" ] && tit=$df |
|
- | 280 | echo "$df,$tit,$author,$recordcnt" >>$dfindex.tmp |
|
- | 281 | done |
|
- | 282 | $LL sort -f -t, -k2 <$dfindex.tmp >$dfindex |
|
- | 283 | rm -f $dfindex.tmp |
|
- | 284 | fi |
|
- | 285 | ||
- | 286 | # Gather content for robots. |
|
- | 287 | ||
- | 288 | outputfile=content.html |
|
- | 289 | ||
- | 290 | tit= |
|
- | 291 | echo "<!-- This file is automatically generated. Do not edit! -->" >$outputfile |
|
- | 292 | for f in `ls $def/*.def 2>/dev/null`; do |
|
- | 293 | tit=`head -1 $f | $LL cut -d= -f2` |
|
- | 294 | [ -z "$tit" ] && continue |
|
- | 295 | content=`awk 'BEGIN {a=0}; |
|
- | 296 | NF == 0 {next}; |
|
- | 297 | /!exit/ {a=0}; |
|
- | 298 | /^!/ {next}; |
|
- | 299 | a > 0 {print}; |
|
- | 300 | /^:question/ {a=1}; |
|
- | 301 | ' $f | $LL sed 's/\$()//g'` |
|
- | 302 | echo "<hr> |
|
- | 303 | <h3>$tit</h3> |
|
- | 304 | $content |
|
- | 305 | " >>$outputfile |
|
- | 306 | tit= |
|
- | 307 | done |