Subversion Repositories wimsdev

Rev

Rev 12614 | Rev 13905 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
11931 schaersvoo 1
#!/usr/bin/perl
3461 bpr 2
 
3
use locale;
3831 bpr 4
use warnings;
5
use strict;
3845 bpr 6
##lancer du répertoire wims : bin/oedfdoc.pl
3461 bpr 7
 
4870 bpr 8
### for "editor"
3831 bpr 9
my %name ;
8474 bpr 10
$name{'explanation'}{'fr'}="Explication" ;
3831 bpr 11
$name{'example'}{'fr'}="Exemple" ;
11537 bpr 12
$name{'special'}{'fr'}="Méthodes spéciales<br/(énoncé)";
3831 bpr 13
$name{'syntax'}{'fr'}="Syntaxe";
14
$name{'slib'}{'fr'}='SLIB';
8474 bpr 15
$name{'anstype'}{'fr'}='Types de réponses' ;
3470 bpr 16
 
8474 bpr 17
$name{'explanation'}{'en'}="Explanation" ;
3831 bpr 18
$name{'example'}{'en'}="Example" ;
11537 bpr 19
$name{'special'}{'en'}="Special method<br/>(statement)";
3831 bpr 20
$name{'syntax'}{'en'}="Syntax";
21
$name{'slib'}{'en'}='SLIB';
22
$name{'anstype'}{'en'}='Answer types' ;
3470 bpr 23
 
8474 bpr 24
$name{'explanation'}{'cn'}="Explanation" ;
3831 bpr 25
$name{'example'}{'cn'}="Example" ;
11537 bpr 26
$name{'special'}{'cn'}="Special method<br/>(statement)";
3831 bpr 27
$name{'syntax'}{'cn'}="Syntax";
28
$name{'slib'}{'cn'}='SLIB';
29
$name{'anstype'}{'cn'}='Answer types' ;
3490 bpr 30
 
8474 bpr 31
$name{'explanation'}{'nl'}="Explanation" ;
3831 bpr 32
$name{'example'}{'nl'}="Example" ;
11537 bpr 33
$name{'special'}{'nl'}="Special method<br/>(statement)";
3831 bpr 34
$name{'syntax'}{'nl'}="Syntax";
35
$name{'slib'}{'nl'}='SLIB';
8474 bpr 36
$name{'anstype'}{'nl'}='Answer types' ;
3490 bpr 37
 
8474 bpr 38
$name{'explanation'}{'it'}="Spiegazione" ;
3831 bpr 39
$name{'example'}{'it'}="Esempio" ;
11537 bpr 40
$name{'special'}{'it'}="Metodi speciali<br/>(enunciato)";
3831 bpr 41
$name{'syntax'}{'it'}="Sintassi";
42
$name{'slib'}{'it'}='SLIB';
8474 bpr 43
$name{'anstype'}{'it'}='Tipi di risposte' ;
3490 bpr 44
 
11545 mquerol 45
$name{'explanation'}{'es'}="Explicación" ;
46
$name{'example'}{'es'}="Ejemplo" ;
47
$name{'special'}{'es'}="Métodos especiales<br/>(enunciado)";
48
$name{'syntax'}{'es'}="Sintaxis";
11510 bpr 49
$name{'slib'}{'es'}='SLIB';
11545 mquerol 50
$name{'anstype'}{'es'}='Tipos de Respuestas' ;
11510 bpr 51
 
8474 bpr 52
$name{'explanation'}{'ca'}="Explicació" ;
5455 mquerol 53
$name{'example'}{'ca'}="Exemple" ;
11537 bpr 54
$name{'special'}{'ca'}="Mètodes especials<br/>(enunciat)";
5455 mquerol 55
$name{'syntax'}{'ca'}="Sintaxi";
5430 bpr 56
$name{'slib'}{'ca'}='SLIB';
5455 mquerol 57
$name{'anstype'}{'ca'}='Tipus de Respostes' ;
3461 bpr 58
my $DOSSIER="public_html/scripts/js/editor/scripts_1/bd_js";
4870 bpr 59
my $DOSSIER_edit_area="public_html/scripts/js/edit_area/reg_syntax";
60
my $DOSSIER_wims="public_html/modules/help/wimsdoc.en/cmd/";
3461 bpr 61
my $slibdir="public_html/scripts/slib/";
62
my $helpdir="public_html/scripts/help";
3481 bpr 63
 
11510 bpr 64
my @Lang=('en','fr','cn','nl','it','ca', 'es') ;
3845 bpr 65
 
3461 bpr 66
system(`mkdir -p $DOSSIER`) ;
8474 bpr 67
my @table=('if', 'oefparm0', 'oefparm1', 'oefparm2', 'oefparm3', 'oefparm4', 'oefparm5','oefcommand') ;
3461 bpr 68
 
4870 bpr 69
### for "editor"
3832 bpr 70
my (%Begin, %End) ;
8474 bpr 71
$Begin{'if'}= "  " ;
72
$End{'if'}= "  " ;
73
$Begin{'oefparm0'}= '\\\\' ;
3832 bpr 74
$End{'oefparm0'}= "\{  =  \}" ;
8474 bpr 75
$Begin{'oefcommand'}= '\\\\' ;
3832 bpr 76
$End{'oefcommand'}= "\{  \}" ;
3845 bpr 77
$Begin{'anstype'}='' ;
78
$End{'anstype'}='' ;
3832 bpr 79
##$Begin{'anstype'}='\\\\answer\{  \}\{  \}\{type=' ;
80
##$End{'anstype'}='\}\{option=  \}\{ weight= \}\n' ;
3461 bpr 81
for my $tag ("oefparm4") {
8474 bpr 82
   $Begin{$tag}= "" ;
3832 bpr 83
   $End{$tag}= "\(  \)" ;
3461 bpr 84
}
3478 bpr 85
for my $tag ("oefparm2", "oefparm3") {
8474 bpr 86
   $Begin{$tag}= " " ;
3832 bpr 87
   $End{$tag}= " " ;
3478 bpr 88
}
3735 bpr 89
for my $tag ( "oefparm1") {
8474 bpr 90
   $Begin{$tag}= "" ;
3832 bpr 91
   $End{$tag}= "" ;
3735 bpr 92
}
3461 bpr 93
 
94
for my $tag ("oefparm5") {
3832 bpr 95
   $Begin{$tag}= '\\\\' ;
96
   $End{$tag}= "" ;
3461 bpr 97
}
98
 
8474 bpr 99
$Begin{'slib'}= "slib(" ;
3845 bpr 100
$End{'slib'}= " )" ;
3461 bpr 101
 
12614 bpr 102
my @phtml=("expandlines", "imagefill", "help", "tabs2lines", "rename", "tooltip", "codeinput", "imageinput", "mathmlinput", "drawinput", "glossary") ;
3461 bpr 103
for my $tag (@phtml) {
8474 bpr 104
   $Begin{$tag}= "\\special\{" ;
3832 bpr 105
   $End{$tag}= " \}" ;
3461 bpr 106
}
4870 bpr 107
### end for "editor"
108
### begin for "edit area"
109
my $EDIT_AERA_OEF_begin = "editAreaLoader.load_syntax['wimsoef'] = {
110
    'QUOTEMARKS' : {1: ' \" '}
111
        ,'KEYWORD_CASE_SENSITIVE' : true
112
        ,\'KEYWORDS\' : {" ;
113
my $EDIT_AERA_begin = "editAreaLoader.load_syntax['wims'] = {
114
    'QUOTEMARKS' : {1: ' \" '}
115
        ,'KEYWORD_CASE_SENSITIVE' : true
116
        ,\'KEYWORDS\' : {" ;
11429 bpr 117
my $EDIT_AERA_DOC_begin = "editAreaLoader.load_syntax['wimsdoc'] = {
118
    'QUOTEMARKS' : {1: ' \" '}
119
        ,'KEYWORD_CASE_SENSITIVE' : true
120
        ,\'KEYWORDS\' : {" ;
121
 
4870 bpr 122
my $EDIT_AERA_OEF_end = "}
4879 bpr 123
        ,'OPERATORS' : [
124
                '*', '+', '-', '/', '^', ':=', '<', '=', '>','..'
4870 bpr 125
        ]
4879 bpr 126
        ,'DELIMITERS' : [
4870 bpr 127
                '(', ')', '[', ']','{','}','??','??'
4879 bpr 128
        ]
129
        ,'REGEXPS' :
4870 bpr 130
        {
131
                'oefvariables' : { 'search': '()(\\\\\\\\\\\\w+)()',
132
                        'class' : 'oefvariables',
133
                        'modifiers' : 'g', 'execute' : 'after' },
134
                'record' : { 'search': '(\\n)(:)()',
135
                        'class' : 'record',
136
                        'modifiers' : 'g', 'execute' : 'after' },
137
                'question' : { 'search': '(\\\\?\\\\?)([^\\\\?]+)(\\\\?\\\\?)',
138
                        'class' : 'question',
4882 bpr 139
                        'modifiers' : 'g', 'execute' : 'before' }
4870 bpr 140
        }
141
        ,'STYLES' : {
4879 bpr 142
                'COMMENTS': 'color: #0000CD;'
4870 bpr 143
                ,'QUOTESMARKS': 'color: #6381F8;'
144
                ,'KEYWORDS' : {
145
                        'oefcommand' : 'color: #FF9933;'
146
                        ,'oefparm0' : 'color: #FF9933;'
147
                        ,'oefparm1' : 'color: #985717;'
148
                        ,'oefparm2' : 'color: #336600;'
149
                        ,'oefparm3' : 'color: #336600;'
150
                        ,'oefparm4' : 'color: #3399FF;'
151
                        ,'oefparm5' : 'color: #330099;'
152
                        ,'iff' : 'color: #FF00FF;'
4882 bpr 153
                        ,'slib' : 'color: #60CA33;'
4870 bpr 154
                        ,'anstype' : 'color: #3399FF;'
8474 bpr 155
                        ,'special' : 'color: #3399FF;'
4870 bpr 156
                        }
157
                ,'OPERATORS' : 'color: #FF00FF;'
4879 bpr 158
                ,'DELIMITERS' : 'color: #60CA00;'
159
                ,'REGEXPS': {
4870 bpr 160
                        'oefvariables' : 'color: #FF3A6E;'
161
                        ,'question' : 'color:#985717;'
162
                }
163
        }
164
};" ;
11429 bpr 165
my $EDIT_AERA_DOC_end = "}
166
        ,'OPERATORS' : [
167
                '*', '+', '-', '/', '^', ':=', '<', '=', '>','..'
168
        ]
169
        ,'DELIMITERS' : [
170
                '(', ')', '[', ']','{','}','??','??'
171
        ]
172
        ,'REGEXPS' :
173
        {
174
                'docvariables' : { 'search': '()(\\\\\\\\\\\\w+)()',
175
                        'class' : 'docvariables',
176
                        'modifiers' : 'g', 'execute' : 'after' },
177
                'record' : { 'search': '(\\n)(:)()',
178
                        'class' : 'record',
179
                        'modifiers' : 'g', 'execute' : 'after' },
180
                'question' : { 'search': '(\\\\?\\\\?)([^\\\\?]+)(\\\\?\\\\?)',
181
                        'class' : 'question',
182
                        'modifiers' : 'g', 'execute' : 'before' }
183
        }
184
        ,'STYLES' : {
185
                'COMMENTS': 'color: #0000CD;'
186
                ,'QUOTESMARKS': 'color: #6381F8;'
187
                ,'KEYWORDS' : {
188
                        'text' : 'color: #FF9933;'
189
                        ,'iff' : 'color: #FF00FF;'
190
                        ,'slib' : 'color: #60CA33;'
191
                        }
192
                ,'OPERATORS' : 'color: #FF00FF;'
193
                ,'DELIMITERS' : 'color: #60CA00;'
194
                ,'REGEXPS': {
195
                        'docvariables' : 'color: #FF3A6E;'
196
                        ,'question' : 'color:#985717;'
197
                }
198
        }
199
};" ;
4870 bpr 200
my $EDIT_AERA_end = "}
201
        ,'OPERATORS' :[
202
                '*', '+', '-', '/', '^', ':=', '<', '=', '>','//','\$'
203
        ]
204
        ,'DELIMITERS' :[
205
                '(', ')', '[', ']','{','}','\\(', '\\)','??','??'
206
        ],
207
        'REGEXPS' :
208
        {
209
                'wimsvariables' : { 'search': '(\\\\\$)([a-zA-Z0-9_]*)()',
210
                        'class' : 'wimsvariables',
211
                        'modifiers' : 'g', 'execute' : 'before' },
212
                'record' : { 'search': '(\\n)(:)()',
213
                        'class' : 'record',
214
                        'modifiers' : 'g', 'execute' : 'after' },
215
        }
216
        ,'STYLES' : {
217
                'COMMENTS': 'color: #AAAAAA;'
218
                ,'QUOTESMARKS': 'color: #6381F8;'
219
                ,'KEYWORDS' : {
220
                        'wimscommand' : 'color: #3399FF;'
221
                        ,'compare' : 'color: #FF00FF;'
222
                        ,'wimslogiciel' : 'color: yellow;'
223
                        }
224
                ,'OPERATORS' : 'color: green;'
225
                ,'DELIMITERS' : 'color: #60CA00;',
226
                'REGEXPS': {
227
                        'wimsvariables' : 'color: #FF3A6E;'
228
                        ,'tex' : 'color:red;'
229
                }
230
        }
231
};" ;
232
### end for "editarea"
233
##### generation
3461 bpr 234
 
4870 bpr 235
my $debut_oef=1;
236
my $debut_wims=1;
237
my $EDIT_AERA_OEF=$EDIT_AERA_OEF_begin ;
238
my $EDIT_AERA=$EDIT_AERA_begin ;
11429 bpr 239
my $EDIT_AERA_DOC=$EDIT_AERA_DOC_begin ;
4870 bpr 240
 
8474 bpr 241
for my $lang (@Lang) {
3470 bpr 242
   print "oefdoc.pl $lang\n" ;  system(`mkdir -p $DOSSIER/$lang`) ;
4882 bpr 243
   slib($lang) ;
3845 bpr 244
   for my $t (@table) { tableau($t,$lang) ; }
3489 bpr 245
   phtml("$helpdir/$lang/special",$lang,"special",@phtml) ;
4870 bpr 246
   $EDIT_AERA_OEF .= "\n, \'special\' : \n[ \'\\embed\', \'\\special{" . join ("\', '\\special{", @phtml) . "\']" if ($lang =~ /en/) ;
8474 bpr 247
   anstype($lang) ;
4882 bpr 248
 
3470 bpr 249
};
4870 bpr 250
$EDIT_AERA_OEF .=$EDIT_AERA_OEF_end ;
11429 bpr 251
$EDIT_AERA_DOC .=$EDIT_AERA_OEF_end ;
4870 bpr 252
if ($debut_wims==1) {$EDIT_AERA .= "\n" ; $debut_wims=0 } else {$EDIT_AERA .= "\n," };
8474 bpr 253
$EDIT_AERA .= " \'wimscommand' : \n[ \' " . join ("\', \'", wimscommand($DOSSIER_wims)) . "']";
3461 bpr 254
 
4870 bpr 255
$EDIT_AERA .=$EDIT_AERA_end ;
256
out( "$DOSSIER_edit_area/wimsoef.js",  $EDIT_AERA_OEF) ;
257
out( "$DOSSIER_edit_area/wims.js",  $EDIT_AERA) ;
11429 bpr 258
out( "$DOSSIER_edit_area/wimsdoc.js",  $EDIT_AERA_DOC) ;
4870 bpr 259
 
3481 bpr 260
sub anstype { my ($lang)=@_ ;
3831 bpr 261
 my %HASH ;
262
 my %HELP ;
3481 bpr 263
 open (IN, "$helpdir/$lang/reply.phtml") ;
3733 bpr 264
   while (<IN>) {my $line = $_; my @t=();
3481 bpr 265
    next if ($line =~ /^\!set/) ;
266
    next if !($line) ;
267
    if ($line =~ /\\\n/) {
3733 bpr 268
      my @L= split( ',', $line) ;
3481 bpr 269
      my $t1 = $L[0] ; $t1=~ s/\|/,/ ;
270
      my @ta=split(',',$t1) ;
3733 bpr 271
      if ($ta[1]) {@t=split(' ',$ta[1]) ; } else {@t=($L[0])};
8474 bpr 272
      for my $tag (@t) { $HASH{$tag} = cleanup3($L[1] . ' ' . (($L[2]) ? $L[2]: '')); $HELP{$tag}=$ta[0] ;}
3481 bpr 273
     }
274
   }
275
 close IN ;
276
 my $text ='';
3831 bpr 277
 my $Text = "var anstypename='$name{'anstype'}{$lang}';\n" ;
3832 bpr 278
   my $var=join ("$End{'anstype'}\',\'$Begin{'anstype'}", sort keys(%HASH)) ;
279
   $Text .="var anstype = [ '$Begin{'anstype'}$var$End{'anstype'}' ];\n" ;
3481 bpr 280
   for my $tag (keys(%HASH)){
8474 bpr 281
     $text .= begin_js("$Begin{'anstype'}$tag$End{'anstype'}")
3481 bpr 282
           . title_js($tag,'title')
3845 bpr 283
           . middle_js($HASH{$tag},'out', $lang)
3735 bpr 284
           . end_js("<a target=\"wims_help\" href=\"wims.cgi?lang=$lang&module=adm%2Fcreatexo&modtoolhelp=yes&+special_parm=reply,$HELP{$tag}\">++>></a>") ;
3481 bpr 285
   }
286
   $Text .= function_js($text,'anstype') ;
4870 bpr 287
   $EDIT_AERA_OEF .= "\n, \'anstype\' : \n[ \' type=" . join ("\', 'type=", sort keys(%HASH)) . "\']"  if $lang=~/en/ ;
288
   out ("$DOSSIER/$lang/anstype" . "_bd\.js", $Text) ;
8474 bpr 289
 
3481 bpr 290
}
4870 bpr 291
 
3470 bpr 292
sub slib {my ($lang)= @_ ;
3831 bpr 293
 my $Text = "var slibname='$name{'slib'}{$lang}';\n" ;
3733 bpr 294
 my @list_keyword=();
3831 bpr 295
 my %HASH ;
3799 bpr 296
 my $slibdirhelp="$helpdir/$lang/slib";
3461 bpr 297
for my $file (glob("$slibdir/*/*")) {
3845 bpr 298
#for example file=$slibdir/function/integrate
3461 bpr 299
 $file =~s/$slibdir\///;
3733 bpr 300
 my $text=''; my $tag='';
3799 bpr 301
 my $filehelp="$slibdirhelp/$file" ;
302
 if (!open(IN, "$filehelp")) { $filehelp="$slibdirhelp/en/$file"; }
8474 bpr 303
 if (!open(IN, "$filehelp")) { $filehelp="$slibdir/$file"; }
4167 bpr 304
 for my $fff ("$slibdir/$file",$filehelp) {
8474 bpr 305
   open (IN, ("$fff"));
306
   while (<IN>) {my $line=$_;
3461 bpr 307
    if  ($line=~/^ *!exit/) { last ;}
308
    if ($line=~ s/^ *slib_(\w+) *=//){
3735 bpr 309
     $tag=$1;
3461 bpr 310
     $line=cleanup($line) ;
311
     if ($tag=~/parms/) {
312
       $line=~s/\\//;
3831 bpr 313
       $HASH{nbparm}{$file}=$line;
3461 bpr 314
     } else
315
     {
3831 bpr 316
       $HASH{$tag}{$file}=$line ;
3461 bpr 317
     }
318
     } else {
8474 bpr 319
       next if !($tag) ;
3461 bpr 320
       if ($tag=~/parms/) {
321
        chomp $line ;
8474 bpr 322
        next if ($line) ;
3733 bpr 323
        my @parm=split(",", $line) ;
3735 bpr 324
        if (($parm[1]) && ($parm[1] =~ s/\\//)) {
3831 bpr 325
          $HASH{$tag}{$file}.= cleanup3($parm[1]) . ",";
3461 bpr 326
         }
327
         else
3831 bpr 328
         {  $HASH{$tag}{$file}= (($HASH{$tag}{$file})? $HASH{$tag}{$file}:' ') . (($parm[1]) ? cleanup3($parm[1]):'') ;
3461 bpr 329
         }
3831 bpr 330
       # $HASH{$tag}{$file} .= "\[$parm[0]\]" if ($parm[0]);
3461 bpr 331
       }
3735 bpr 332
       else {
3831 bpr 333
         $HASH{$tag}{$file} .= cleanup($line);
8474 bpr 334
         $tag='' if !($line=~/\\$/) ;
3461 bpr 335
       }
336
     }
337
   }
338
 close IN;
4167 bpr 339
 }
3831 bpr 340
  push @list_keyword, $file if ($HASH{'title'}{$file});
3461 bpr 341
 $tag='';
342
 }
3832 bpr 343
 my $var=join ("$End{'slib'}\',\'$Begin{'slib'}", @list_keyword) ;
8474 bpr 344
 $Text .="var slib = [ '$Begin{'slib'}$var$End{'slib'}' ];\n" ;
3735 bpr 345
 my $text='' ;
3461 bpr 346
 for my $file (@list_keyword) {
3831 bpr 347
  next if !($HASH{'title'}{$file}) ;
348
  my @examples=split("\\\\\\\\",$HASH{'example'}{$file}) if ($HASH{'example'}{$file});
3461 bpr 349
  my $example='';
3735 bpr 350
  for my $ex (@examples) {
351
    next if !($ex) ;
3831 bpr 352
    $example .="<div class=\"title\">$name{'example'}{$lang}</div><code><font color=\"red\">slib($file</font> $ex <font color=\"red\">)</font></code>" ;
8474 bpr 353
  }
354
 
355
  $text.=begin_js("$Begin{'slib'}$file$End{'slib'}")
3831 bpr 356
           . title_js($HASH{'title'}{$file},'title')
357
           . syntax_js("<font color=\"red\">slib($file</font> " . ($HASH{'parms'}{$file}  ? $HASH{'parms'}{$file} : '') . " <font color=\"red\">)</font>",$lang)
358
           . middle_js($HASH{'out'}{$file},'out',$lang)
3735 bpr 359
           . middle1_js (cleanup($example),'',$lang)
360
           . end_js("<a target=\"wims_help\" href=\"wims.cgi?lang=$lang&module=adm%2Fcreatexo&modtoolhelp=yes&special_parm=slib&+slibdet=$file#slib\">++>></a>") ;
8474 bpr 361
 $text =cleanup2($text) ;
3461 bpr 362
 }
363
 $Text .= function_js($text,'slib') ;
364
  out ("$DOSSIER/$lang/slib" . "_bd\.js",$Text) ;
8474 bpr 365
  if ($lang=~/en/) {
4882 bpr 366
    if ($debut_oef==1) { $EDIT_AERA_OEF .= "\n" ; $debut_oef=0 } else {$EDIT_AERA_OEF .= "\n," };
367
  $EDIT_AERA_OEF .= "\'slib\' : \n[ \'" . join ("\', '", @list_keyword) . "\']"   ;
368
  }
3461 bpr 369
}
370
##special methode
371
sub phtml {my ($dir,$lang,$f,@file)=@_ ;
372
 my $cities=$f;
373
 my %HASH = (
374
  example       => {},
375
  signification => {},
376
  syntaxe => {},
8474 bpr 377
  ) ;
3461 bpr 378
 my $text='';
3470 bpr 379
 my $tag='';
3831 bpr 380
 my $Text="var specialname= '$name{'special'}{$lang}';\n";
3461 bpr 381
 for my $meth (@file) {
8936 bpr 382
  #print $meth . "\n";
8474 bpr 383
    open (IN, "$dir/$meth.phtml");
3461 bpr 384
    while (<IN>) {my $line=$_;
385
    next if !($line) ;
386
    if ($line =~ /^:/) {
387
    chomp $line;
388
       $tag=$line; $tag=~ s/://;
8474 bpr 389
    }
3461 bpr 390
    else
391
    {
3831 bpr 392
     $HASH{$tag}{$meth} .= cleanup($line) . "\\n" ;
3461 bpr 393
    }
394
  }
395
}
3733 bpr 396
 my $var=join (" }\', \'\\\\special{", @phtml) ;
3470 bpr 397
 ### cas particulier
398
 my $meth='embed';
3733 bpr 399
 my $embd='\\\\embed{r  }' ;
8474 bpr 400
   open (IN, "$helpdir/$lang/embedans.phtml");
3470 bpr 401
    while (<IN>) {my $line=$_;
402
    next if !($line) ;
403
    if ($line =~ /^:/) {
404
    chomp $line;
405
       $tag=$line; $tag=~ s/://;
8474 bpr 406
    }
3470 bpr 407
    else
408
    {
3831 bpr 409
     $HASH{$tag}{$meth} .= cleanup($line) . "\\n" ;
3470 bpr 410
    }
411
  }
412
  close IN ;
413
  $Text .= "var special= [ '$embd', '\\\\special{$var }'];\n" ;
8474 bpr 414
  $text = begin_js("$embd")
3735 bpr 415
        . syntax_js("\\\\embed{r i, option }",$lang)
3831 bpr 416
        . (($HASH{'signification'}{$meth}) ? middle_js($HASH{'signification'}{$meth},'title',$lang) : '')
417
        . (($HASH{'example'}{$meth}) ? middle1_js ($HASH{'example'}{$meth},'title',$lang) : '')
3735 bpr 418
        . end_js("") ;
3470 bpr 419
  ## fin cas particulier embed
3478 bpr 420
  for my $meth (@phtml) {
3461 bpr 421
   $text .= begin_js("\\\\special{$meth }")
8474 bpr 422
           . syntax_js("\\\\special{$meth }",$lang)
3831 bpr 423
           . (($HASH{'signification'}{$meth}) ? middle_js($HASH{'signification'}{$meth},'title',$lang ) : '')
424
           . (($HASH{'example'}{$meth}) ? middle1_js ($HASH{'example'}{$meth},'title',$lang) : '')
3735 bpr 425
           . end_js("") ;
8474 bpr 426
 
3461 bpr 427
  }
428
  $Text .= function_js($text,'special') ;
429
  out ("$DOSSIER/$lang/$f" . "_bd\.js",$Text) ;
430
 
431
}
432
##file : nom du fichier, n nombre de lignes dans chaque record
3470 bpr 433
sub tableau { my ($file, $lang) = @_ ;
3461 bpr 434
### mettre $file à la place ensuite
3470 bpr 435
  my $file1="$helpdir/$lang/$file";
436
  my $cities=$file ;
8474 bpr 437
  if ($file =~ /if/){ $cities .= 'f' } ;
3470 bpr 438
  my @list_keyword;
4870 bpr 439
  my @List_keyword;
3470 bpr 440
  my $text='';
3461 bpr 441
##bug s'il n'y a pas de documentation
442
  open (IN, $file1);
3733 bpr 443
  my $cnt=0 ;my $nl;
8474 bpr 444
  my $Text = '' ;
3470 bpr 445
  while (<IN>) { my $line=$_;
446
   chomp $line ;
8474 bpr 447
   next if !($line) ;
11537 bpr 448
   next if ($line=~ /^(!!)/);
449
   if ($line =~ /!changeto/){ die "$file1 should be translated"};
3470 bpr 450
   if ($line =~ s /^://) {
3461 bpr 451
     $cnt ++ ;
11537 bpr 452
     if ($cnt == 1 ) { $Text = "var $cities" . "name= '" . cleanup3($line) . "';\n ";  }
3470 bpr 453
     next if $cnt < 3 ;
454
     $line =~ s/:// ;
3735 bpr 455
     if($text) { $text .= end_js("") ;}
3832 bpr 456
       if ($text) {$text .= begin_js($Begin{$file} . $line . $End{$file}) ;}
3735 bpr 457
        else
3832 bpr 458
       { $text = begin_js($Begin{$file} . $line . $End{$file}) ; };
3470 bpr 459
     push @list_keyword, $line;
4870 bpr 460
     $line =~ s/(\(|\)|\.|,|\[|\]| )//g ;
461
     push @List_keyword, $line;
3478 bpr 462
     $nl=0;
3470 bpr 463
     }
3461 bpr 464
     else  {
8474 bpr 465
       next if $cnt<3 ; if ($line =~ /^(\d)/) { my $arg=$1 ; next }
3470 bpr 466
       $nl ++ ;
467
       $line = cleanup($line); if ($line =~ /help=/) { $line = '' ;}
8474 bpr 468
       if ($nl==1 && !($file=~/oefcommand/)){
3478 bpr 469
         if ($line) { $text .= syntax_js($line,$lang) ; }
470
        }
471
        else {
4167 bpr 472
         if ($line) { $text .= middle_js($line,1,$lang) ;  }
3470 bpr 473
           }
474
         }
3461 bpr 475
   }
476
  close IN ;
3735 bpr 477
         $text .= end_js("") ;
3832 bpr 478
  my $var=join ("$End{$file}\', \'$Begin{$file}", @list_keyword) ;
8474 bpr 479
  $Text .="var $cities= [ \'$Begin{$file}$var$End{$file}\' ];\n"
3461 bpr 480
  . function_js($text,$cities) ;
3470 bpr 481
  out ("$DOSSIER/$lang/$cities" . "_bd\.js",$Text) ;
4870 bpr 482
   if ($lang=~/en/){
483
     if ($debut_oef==1) { $EDIT_AERA_OEF .= "\n" ; $debut_oef=0 } else {$EDIT_AERA_OEF .= "\n," };
484
     $EDIT_AERA_OEF .= " \'$cities\' : \n[ \'" . join ("\', '", @List_keyword) . "\']" ;
485
     if ($cities=~ /(iff|oefparm4)/) {
486
       if ($debut_wims==1) {$EDIT_AERA .= "\n" ; $debut_wims=0 } else {$EDIT_AERA .= "\n," };
487
       push @List_keyword, ('or', 'and') ;
488
       $EDIT_AERA .= " \'compare\' : \n[ \'" . join ("\', '", @List_keyword) . "\']"  ;
489
     }
490
  }
3461 bpr 491
}
492
 
4870 bpr 493
sub wimscommand { my ($d) = @_;
494
  my @wimslist = () ;
8474 bpr 495
  for my $file (glob("$d/*")) {
4870 bpr 496
    $file =~ s,$d/,, ;
497
    $file =~ s,.phtml,, ;
498
    push @wimslist, $file ;
499
  }
500
  push @wimslist, ("endif","next","else") ;
8474 bpr 501
  @wimslist ;
4870 bpr 502
}
503
### subroutine for "editor"
3461 bpr 504
sub begin_js {my ($t)= @_ ;
505
"case \'$t\' \:\nchaine_aide="
506
}
3478 bpr 507
sub syntax_js {my ($line,$lang)=@_ ;
3831 bpr 508
 "\'<div class=\"syntax\"><div class=\"title\">$name{'syntax'}{$lang}</div><code>$line</code></div>\'+\n"
3461 bpr 509
}
4167 bpr 510
sub middle_js {my ($line,$tag,$lang)=@_ ; if(!$line) {$line='' ;}
3831 bpr 511
 if ($tag) { $line="<div class=\"title\">$name{'explanation'}{$lang}</div>$line" }
3461 bpr 512
 "\'<div class=\"explication\">$line</div>\'+\n";
513
}
514
 
3478 bpr 515
sub middle1_js {my ($line,$tag,$lang)=@_ ;
3831 bpr 516
 if ($tag) { $line="<div class=\"title\">$name{'example'}{$lang}</div>$line" }
3461 bpr 517
 "\'<div class=\"exemple\">$line</div>\'+\n";
518
}
519
 
3478 bpr 520
sub title_js {my ($line,$tag)=@_ ;
3461 bpr 521
 "\'<div class=\"title\">$line</div>\'+\n";
522
}
523
 
3735 bpr 524
sub end_js {my ($text)=@_ ;
525
  "\'$text\' ; return chaine_aide;
3461 bpr 526
           break;
13623 obado 527
        ////********************\n
3735 bpr 528
        "
3461 bpr 529
}
530
sub function_js {my ($text,$tag)=@_ ;
531
 "function $tag" . "fun(instruction){
532
    switch(instruction)
533
        {
534
        $text
535
        }
536
}"
537
}
538
 
539
sub cleanup { my ($txt)=@_ ;
3735 bpr 540
  return $txt if !($txt) ;
3762 bpr 541
  $txt=~ s/\\\b/&#92;/g ;
542
  $txt=~ s/\\\(/&#92;(/g ;
543
  $txt=~ s/\\\)/&#92;)/g ;
8474 bpr 544
  $txt=~ s,\\,\\\\,g ;
3461 bpr 545
  $txt=~ s/'/\\'/g ;
546
  $txt=~ s/\n/ /g ;
8474 bpr 547
  return $txt ;
3461 bpr 548
}
549
sub cleanup2 {my ($txt)=@_ ;
3735 bpr 550
  $txt=~ s/\\\\ / /g if ($txt) ;
3461 bpr 551
  return $txt;
552
}
553
sub cleanup3 {my ($txt)=@_ ;
3735 bpr 554
  $txt=~ s/'/\\'/g if ($txt);
3461 bpr 555
  return $txt;
556
}
3762 bpr 557
 
558
 
3461 bpr 559
sub htmltex { my ($TEXT) = @_ ;
560
$TEXT =~ s/<tt>\\/\\ttb{/g;
561
$TEXT =~ s/_/\\_/g;
562
$TEXT =~ s/\^/\\^{}/g;
563
$TEXT =~ s/\&/\\\&/g;
564
$TEXT =~ s/<(tt)>/\\text$1\{/g;
565
$TEXT =~ s/<(em|i)>/\\textit\{/g;
566
$TEXT =~ s/<b>/\\textbf\{/g;
567
$TEXT =~ s'</(b|tt|em|i)>'}'g;
11537 bpr 568
$TEXT =~ s/<br\s*\/?>/\\par /g;
3461 bpr 569
$TEXT =~ s/<p>/\\par /g;
570
$TEXT =~ s/<\/p>/\\par /g;
571
$TEXT =~ s/<ul>/\\begin{itemize}\n /g;
572
$TEXT =~ s/<\/ul>/\\end{itemize}\n /g;
573
$TEXT =~ s/<ol>/\\begin{enumerate}\n /g;
574
$TEXT =~ s/<\/ol>/\\end{enumerate}\n /g;
575
$TEXT =~ s/<li>/\\item /g;
576
$TEXT =~ s/<\/li>/\n /g;
577
$TEXT =~ s/<\/center>/\\end{center}\n /g;
578
$TEXT =~ s/<center>/\\begin{center}\n /g;
579
$TEXT =~ s/<\/center>/\n /g;
580
$TEXT =~ s/<center>/\n /g;
581
$TEXT =~ s/<table[^>]*>/\\begin{table}\\begin{tabular}{*{1}{p{30mm}}|*{1}{p{50mm}|}|*{1}{p{50mm}|}}\\hline /g;
582
$TEXT =~ s/<\/table>/\\\\ \\hline \\end{tabular} \\end{table}/g;
583
$TEXT =~ s/\$table_tr/\\\\\\hline /g;
584
$TEXT =~ s/\$table_hdtr/\\\\ \\hline/g;
8474 bpr 585
$TEXT =~ s/\$table_header/\\begin{table}\\begin{tabular}{*{1}{p{30mm}}|*{1}{p{50mm}|}|*{1}{p{50mm}|}}\\hline/g ;
3461 bpr 586
$TEXT =~ s/\$table_end/\\end{tabular}\\end{table}/g;
587
#$TEXT =~ s/<caption>/\\caption\{ /g;
588
#$TEXT =~ s/<\/caption>/\}\n /g;
589
$TEXT =~ s/<tr[^>]*>/\\\\/g;
590
$TEXT =~ s/<\/tr>/\\\\/g;
591
$TEXT =~ s/<(td|th) colspan=(\d)( nowrap)?>/\\multicolumn{$2}{|c|}{/g;
592
$TEXT =~ s/<\/(td|th)>/&/g;
593
$TEXT =~ s/<(td|th)[^>]*>/&/g;
594
$TEXT =~ s/&&/&/g;
595
$TEXT =~ s/\_/_/g;
596
$TEXT =~ s/&amp;/\\&/g;
597
$TEXT =~ s'\\\\&'\\\\'g;
598
$TEXT =~ s/&nbsp;/ /g;
599
$TEXT =~ s/&eacute;/é/g;
600
$TEXT =~ s/&egrave;/è/g;
601
$TEXT =~ s/&agrave;/à/g;
602
$TEXT =~ s/&ecirc;/ê/g;
603
$TEXT =~ s/&lt;/</g;
604
$TEXT =~ s/<(H|h)3>/\\subsection{/g;
605
$TEXT =~ s/<\/(H|h)3>/}/g;
606
$TEXT =~ s/<(H|h)4>/\\subsubsection{/g;
607
$TEXT =~ s/<\/(H|h)4>/}/g;
608
$TEXT =~ s/<(H|h)2>/\\section{/g;
609
$TEXT =~ s/<\/(H|h)2>/}/g;
610
$TEXT =~ s/&gt;/>/g;
611
$TEXT =~ s/\#//g;
612
$TEXT =~ s/<hr>/\\hrule/g;
613
$TEXT =~ s/<pre>/\\begin{verbatim}/g;
614
$TEXT =~ s/<\/pre>/\\end{verbatim}/g;
615
$TEXT =~ s/\n{3,}/\n\n/g;
616
$TEXT =~ s/<a[^>]+>([^<]+)<\/a>/\\url{$1}/g;
617
 
8474 bpr 618
$TEXT ;
3461 bpr 619
}
620
 
621
sub out { my ($bloc, $text) = @_ ;
8474 bpr 622
  open  (OUT, ">$bloc") || die "peut pas créer $bloc";
623
  print OUT "<!-- Automatically generated by bin/oefdoc.pl -->\n" . $text ; close OUT ;
3461 bpr 624
}
625
 
3481 bpr 626
sub sortuniq {
627
  my $prev = "not $_[0]";
628
  grep { $_ ne $prev && ($prev = $_, 1) } sort @_;
3505 czzmrn 629
}