Subversion Repositories wimsdev

Rev

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 def ]; then exit; fi
65
if [ ! -d $def ]; then
-
 
66
  echo 1>&2 "Directory $def not found."
-
 
67
  exit;
-
 
68
fi
22
if [ ! -d src ]; then exit; fi
69
if [ ! -d $src ]; then
-
 
70
  echo 1>&2 "Directory $src not found."
-
 
71
  exit;
-
 
72
fi
23
 
73
 
24
deff=`cd def; ls *.def 2>/dev/null`
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 src/$dd ]; then
78
  if [ ! -f $src/$dd ]; then
29
    echo Removing def/$i.
79
    echo Removing $def/$i.
30
    rm -f def/$i >/dev/null;
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 src
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 grep . $i | head -1 | grep target \
109
    list=`$LL tr '\r' '\n' <$i | grep -a . | head -1 | grep -a target \
59
 	  | tr ',:;./?*#~$\\ ' '                  ' \
110
    | tr ',:;./?*#~$\\ ' '                  ' \
60
 	  | awk -F'=' '{print $2}'`
111
    | awk -F'=' '{print $2}'`
61
    test=`grep -E '^[[:blank:]]*#[[:blank:]]*include' $i \
112
    test=`grep -a -E '^[[:blank:]]*#[[:blank:]]*include' $i \
62
 	  | grep -E -v '^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*"[[:alnum:]_]+.inc"'`
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 . $i | awk 'BEGIN {l=0}; {l++}; l>1 {print}' >cpp.tmp
124
    $LL tr '\r' '\n' <$i | $LL sed "s/'/\&#39;/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 -A- -DTARGET_$j -A"TARGET($j)" cpp.tmp >>../$j.$sext
136
        cpp -P -C -nostdinc -nostdinc++ -DTARGET_$j -A"TARGET($j)" -DOEFFILE=$j cpp.tmp | \
-
 
137
        $LL sed "s/&#39;/'/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 def/$dd ] || [ src/$i -nt def/$dd ]; then
152
  if [ ! -f $def/$dd ] || [ $src/$i -nt $def/$dd ]; then
94
    # echo $dd
-
 
95
    rm -f def/$dd 2>/dev/null
153
    rm -f $def/$dd 2>/dev/null
96
    $wims_home/bin/oef2wims src/$i def/$dd
154
    $wims_home/bin/oef2wims $src/$i $def/$dd
97
  fi
155
  fi
98
done
156
done
99
 
157
 
100
rm -f Exindex Extitles >/dev/null
158
# Processing compiled .def files.
-
 
159
cd $def
101
list=`cd def; ls *.def 2>/dev/null | sed 's/\.def//g'`
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
if [ -z "$list" ]; then exit; fi
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}' def/$i.def | $LL tr ',\11' '; '`
175
  tit=`awk -F= 'NF>=2 {print $2; exit}' $def/$i.def | $LL tr ',\11' '; '`
108
  echo "$i:$tit" >>Extitles
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 Extitles
188
$wims_home/bin/dicsort $extitles.tmp 1>/dev/null
113
if [ -s Extitles.sorted ]; then
189
if [ -s $extitles.tmp.sorted ]; then
114
 mv Extitles.sorted Extitles
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" >tmp1
209
echo "$titlist" >$tmp1
118
echo "$list" >tmp2
210
echo "$list" >$tmp2
119
llist=`$LL paste tmp1 tmp2 | $LL sort -t '	' -f -k 1,1`
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' 'length()>2 {print $2}' |$LL tr '\n' ','`
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 tmp1 tmp2
216
rm -f $tmp1 $tmp2
124
cat >Exindex <<@
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