Naviguation dans :  Perl  JavaScript  Détail  - load.cgi?Appel=saveAdmin
 présentée :  par cas d'appel   par traitements 
Retour à l'accueil
  
     
 Requêtes 

 load – Admin 

 fromClient 

Requêtes de Ça-déménage.com
Accès professionnel
Relit les données du client
 loadAdmin | baseAdmin | identAdmin | saveAdmin | extractAdmin | contactAdmin | histoAdmin 
  
 
 Bibliothèque CaD  Bibliothèque de Ça-déménage.com
 
  
  
 Bibliothèque 

 Serveur 

 Valeurs 

Bibliothèque standard
Fonctions d'accès au serveur
Gestion des valeurs
 wsImportVal | wsImportVar | runExport | wsExportVal 
  


 wsImportVal  Importer des valeurs (serveur –> client)
Syntaxe wsImportVal(To,TAB,CHP,idx,LISTE)
Paramètres 
nom  type  Description 
To  IN Nom de la table
TAB  IN Hash des valeurs à importer
Perl : hash passé par référence – JavaScript : tableau à 1 élément
CHP  IN Tableau des champs à importer
Perl : tableau passé par référence – JavaScript : tableau à 1 élément
idx  IN Dans le cas d'un tableau de valeurs à importer : index
LISTE  INOUT Dans le cas d'un tableau de valeurs à importer : liste des champs du tableau déjà importés
Perl : scalaire passé par référence – JavaScript : tableau à 1 élément
retourne  OUT  Chaîne de caractères contenant les valeurs sous forme de code dans le langage spécifié
Chaîne vide en cas d'erreur de traitement
Fonctions util. 
 wsRunVar Paramètres de gestion des valeurs


 wsImportVar  Importer une variable (serveur –> client)
Syntaxe wsImportVar(nom,val,LISTE)
Paramètres 
nom  type  Description 
nom  IN Nom de la vaiable
val  IN Valeur à affecter à la variable
LISTE  INOUT Dans le cas d'un tableau de valeurs à importer : liste des champs du tableau déjà importés
Perl : scalaire passé par référence – JavaScript : tableau à 1 élément
retourne  OUT  Chaîne de caractères contenant les valeurs sous forme de code dans le langage spécifié
Chaîne vide en cas d'erreur de traitement
Fonctions util. 
 wsRunVar Paramètres de gestion des valeurs


Code Perl 

sub wsWrite {local($appel,$x,$IN) = @_; 
 if ($toJs eq "true") {return $x}
if($appel eq "imed"){
 if (substr($x,0,2) eq "//") {$x = "#".substr($x,2)}; return $x;
}elsif($appel eq "nom"){
 $x =~ s/\[/{/gi; $x =~ s/\]/}/gi; return $x;
}elsif($appel eq "ref"){
 local $y = ''; 
 if (substr($x,0,4) eq 'var ') {$y = 'local '; $x = substr($x,4)}
 if (substr($$IN,0,1) eq "[") {$x = '@'.$x} elsif (substr($$IN,0,1) eq "(") {$x = '%'.$x} else {$x = '$'.$x}
 $x = $y.$x; return $x;
}elsif($appel eq "use"){
 $x = &wsWrite("nom",$x);
 if (substr($$IN,0,1) eq "[") {$x = '@{$'.$x.'}'} elsif (substr($$IN,0,1) eq "(") {$x = '%{$'.$x.'}'} else {$x = '$'.$x}
 return $x;
}elsif($appel eq "val"){
 if (substr($x,0,1) eq "[") {$x = '('.substr($x,1,length($x)-2).')'}; return $x;
}elsif($appel eq "void"){
 $x = "()"; return $x;
}elsif($appel eq "recons"){
 local $y = ''; local($y1,$nom); 
 while($x=~/(\w+)(,|;)/) {
  $nom = $1; $y1 = $2; $x = substr($x,length($nom)+1);
  if ($$IN=~/\"(.)$nom\"/) {$y .= $1.$nom.$y1}
 }; return $y;
}}

sub writeVar {local($nom,$IN,$LISTE) = @_; 
 local $x = ''; 
if ($nom!~/^(\w+)\W/) {
 $x .= &wsWrite("ref",'var '.$nom,$IN).' = '.&wsWrite("val",$$IN).';'."\n";
 return $x
}
if (index($$LISTE,';'.$1.';')==-1) {
 $$LISTE .= $1.';';
 local $In = "()"; 
 $x .= &wsWrite("ref",'var '.$1,\$In).' = '.&wsWrite("val",&wsWrite("void",'new Array()')).'; ';
}
 $x .= &wsWrite("use",$nom,$IN).' = '.&wsWrite("val",$$IN).';'."\n";
 return $x
}

sub writeVal {local($x) = @_; 
 if ($x eq "") {return "\"\""};
 $x =~ s/\\\/\\#/\/#/gi;
 $x =~ s/\\/\\\\/gi;
if ($toJs eq "false") {
 $x =~ s/\$/\\\$/gi; $x =~ s/\@/\\\@/gi; $x =~ s/\%/\\\%/gi; $x =~ s/\&/\\\&/gi;
}
 $x =~ s/\n/\\n/gi; $x =~ s/\"/\\\"/gi; $x =~ s/\'/\\\'/gi;
 return "\"".$x."\"";
}

sub wsImportVar {local($nom,$val,$LISTE) = @_; 
 local $In = ''; 
 $In = &writeVal($val);
 return &writeVar($nom,\$In,$LISTE);
}

sub wsImportVal {local($To,$TAB,$CHP,$idx,$LISTE) = @_; 
 local($k,$i,$nom,$In,$Out); 
 local($y1,$Struct,$Liste); 
 local $x=''; 
 if (!(defined $idx)) {$idx = ""; $LISTE = (';')};
 $y1 = ""; $Struct = ''; $Liste = $$LISTE;
 $nom = "/#T"; if (defined $$TAB{$nom}) {$x .= &wsWrite("imed",$$TAB{$nom})."\n"}
for($k=0;$k<scalar(@{$CHP});$k++) {
 $nom = $$CHP[$k];
 if (defined $$TAB{$nom}) {
  $In = $$TAB{$nom}; $Out = '';
  if (($i=&wsImportRec(0,$nom.$idx,$TAB,\$In,\$Out,\$Struct,()))!=0) {return ''};
 } else {
  $Out = '""';
 }
 $x .= &writeVar($nom.$idx,\$Out,\$Liste);
 $y1 .= ','.&writeVal(&wsWrite("ref",$nom,\$Out));
}
 $Struct = &wsWrite("recons",$Struct,($y1));
 $Out = '['.&writeVal($Struct).$y1.']';
 $x .= &writeVar($To.$idx,\$Out,\$Liste);
 $$LISTE = $Liste;
 return $x;
}

sub wsImportRec {local($n,$nom,$TAB,$IN,$OUT,$STRUCT,@Tparm) = @_; 
 local $x = $$IN; 
 local($i,$k,$Type,@Parm,$cas); 
 local($Out); 
 $Type = 0; @Parm = ();
 if (($i=&wsImportStruct($TAB,$IN,\$Type,\@Parm))!=0) {return $i}; $cas = $Type; $$IN = $x;
 if (($cas!=1)&&(scalar(@Tparm)!=0)) {return 21};
if ($cas==0) {
 $x = $$IN; $k = index($x,"/#"); if ($k==-1) {$k = length($x)};
 $$OUT .= &writeVal(substr($x,0,$k)); $x = substr($x,$k);
} elsif ((($cas==1)&&(scalar(@Tparm)==0))||(($cas==2)&&(scalar(@Parm)==0))) {
 $Out = '';
 while(true) {
  $x = $$IN; if ($x ne "") {$x =~ s/^\s*//};
  if (($x eq '')||(substr($x,0,2) eq "/#")) {last};
  $Type = 0; @Parm = ();
  if (($i=&wsImportStruct($TAB,$IN,\$Type,\@Parm))!=0) {return $i};
  if ($Type!=$cas) {return 22};
  if ($$IN!~/^\s*\/#L/) {return 22}
  if (($i=&wsImportArray1($n,$nom,$TAB,$IN,\$Out))!=0) {return $i};
 }
 if ($n==0) {
  $x = $nom; $x =~ s/^(\w+).*/$1/; if ($cas==2) {$x .= ',1'};
  $$STRUCT .= $x.';';
 }
  $$OUT .= '['.substr($Out,1).']';
} else {
 $$OUT .= &wsWrite("void",'new Array()');
 while(true) {
  $x = $$IN; if ($x ne "") {$x =~ s/^\s*//};
  if (($x eq '')||(substr($x,0,2) eq "/#")) {last};
  $Type = 0; @Parm = ();
  if (($i=&wsImportStruct($TAB,$IN,\$Type,\@Parm))!=0) {return $i};
  if ($Type!=$cas) {return 22};
 if ($n==0) {
  $x = $nom; $x =~ s/^(\w+).*/$1/; for($i=0;$i<scalar(@Parm);$i++) {$x .= ','.$Parm[$i]};
  $$STRUCT .= $x.';';
 }
  if (($i=&wsImportArray($n,$nom,$TAB,$IN,$OUT,(($cas==2)?@Parm:@Tparm)))!=0) {return $i};
 }
}
 $$IN = $x; return 0;
}

sub wsImportStruct {local($TAB,$IN,$TYPE,$PARM) = @_; 
 local $x = $$IN; 
 local($k); 
 if ($x ne "") {$x =~ s/^\s*//};
 if (substr($x,0,3) ne "(#L") {$$TYPE = 0; return 0}
 if (substr($x,0,4) eq "(#L)") {$$IN = "/#L)".substr($x,4); $$TYPE = 1; return 0}
 if (substr($x,0,4) eq "(#L:") {$$IN = "/#L:".substr($x,4); $$TYPE = 1; return 0}
 if (substr($x,0,4) ne "(#L(") {return 11}; $x = substr($x,4); $k = index($x,")");
 if ($k==-1) {return 12}; if (substr($x,0,$k) eq "1") {@{$PARM} = ()} else {@{$PARM} = split(/\/#/,substr($x,0,$k))}; $x = substr($x,$k+1);
 for($k=0;$k<scalar(@{$PARM});$k++) {if (!(defined $$TAB{$$PARM[$k]})) {return 13}}
 if (substr($x,0,1) eq ")") {$$IN = "/#L)".substr($x,1); $$TYPE = 2; return 0}
 if (substr($x,0,1) eq ":") {$$IN = "/#L:".substr($x,1); $$TYPE = 2; return 0}
 {return 14};
}

sub wsImportArray {local($n,$nom,$TAB,$IN,$OUT,@Tparm) = @_; 
 local $x = $$IN; 
 local($i,$In,$Out,$k); 
 local($y,@T,@T0); 
 $y = $$TAB{$Tparm[0]}; @T = @Tparm; shift @T; @T0 = ();
 if ($y ne "") {$y =~ s/^\s*//};
 if (substr($y,0,6) eq "(#L(1)") {$y = "(#L".substr($y,6)}
 if (substr($y,0,4) eq "(#L)") {$y = "/#L)".substr($y,4)}
 if ($y ne "") {$y =~ s/\/#L\)\s*/\/#L\)/};
 if ($y ne "/#L)") {
  if ((substr($y,0,4) ne "(#L:")||(substr($y,length($y)-4) ne "/#L)")) {return 31}; @T0 = split(/\/#L:/,substr($y,4,length($y)-8));
 }
 for($k=0;$k<scalar(@T0);$k++) {
  if ($x ne "") {$x =~ s/^\s*//};
 if (substr($x,0,4) eq "/#L:"){
  $In = substr($x,4); $Out = '';
  if (($i=&wsImportRec($n+1,$nom.'['.&writeVal($T0[$k]).']',$TAB,\$In,\$Out,"",@T))!=0) {return $i};
 } else {$Out = '""'}
  $$OUT .= ';'.&wsWrite("use",$nom.'['.&writeVal($T0[$k]).']',\$Out).' = '.&wsWrite("val",$Out);
  $x = $In;
 }
 if (substr($x,0,4) ne "/#L)") {return 32}; $$IN = substr($x,4); return 0;
}

sub wsImportArray1 {local($n,$nom,$TAB,$IN,$OUT) = @_; 
 local $x = $$IN; 
 local($k); 
 while(true) {
  if ($x ne "") {$x =~ s/^\s*//};
  if (substr($x,0,4) ne "/#L:") {last}; $x = substr($x,4);
  if ($x=~/^\s*\(#L/) {return 41};
  $k = index($x,"/#"); if ($k==-1) {$k = length($x)};
  $$OUT .= ','.&writeVal(substr($x,0,$k)); $x = substr($x,$k);
 }
 if (substr($x,0,4) ne "/#L)") {return 42}; $$IN = substr($x,4); return 0;
}
Code JavaScript 

function wsWrite(appel,x,IN) { 
 if (toJs=="true") {return x}
switch(appel) {
case "imed":
 if (x.substr(0,2)=="//") {x = "#"+x.substr(2)}; return x;
case "nom":
 x = x.replace(/\[/gi,"{"); x = x.replace(/\]/gi,"}"); return x;
case "ref":
 var y = ''; 
 if (x.substr(0,4)=='var ') {y = 'local '; x = x.substr(4)}
 if (IN[0].substr(0,1)=="[") {x = '@'+x} else if (IN[0].substr(0,1)=="(") {x = '%'+x} else {x = '$'+x}
 x = y+x; return x;
case "use":
 x = wsWrite("nom",x);
 if (IN[0].substr(0,1)=="[") {x = '@{$'+x+'}'} else if (IN[0].substr(0,1)=="(") {x = '%{$'+x+'}'} else {x = '$'+x}
 return x;
case "val":
 if (x.substr(0,1)=="[") {x = '('+x.substr(1,x.length-2)+')'}; return x;
case "void":
 x = "()"; return x;
case "recons":
 var y = ''; var y1,nom; 
 while(x.match(/(\w+)(,|;)/)) {
  nom = RegExp.$1; y1 = RegExp.$2; x = x.substr(nom.length+1);
  if (IN[0].match(new RegExp("\\\"(.)"+nom+"\\\""))) {y += RegExp.$1+nom+y1}
 }; return y;
}}

function writeVar(nom,IN,LISTE) { 
 var x = ''; 
if (!nom.match(/^(\w+)\W/)) {
 x += wsWrite("ref",'var '+nom,IN)+' = '+wsWrite("val",IN[0])+';'+"\n";
 return x
}
if (LISTE[0].indexOf(';'+RegExp.$1+';')==-1) {
 LISTE[0] += RegExp.$1+';';
 var In = Array("()"); 
 x += wsWrite("ref",'var '+RegExp.$1,In)+' = '+wsWrite("val",wsWrite("void",'new Array()'))+'; ';
}
 x += wsWrite("use",nom,IN)+' = '+wsWrite("val",IN[0])+';'+"\n";
 return x
}

function writeVal(x) { 
 if (x=="") {return "\"\""};
 x = x.replace(/\\\/\\#/gi,"\/#");
 x = x.replace(/\\/gi,"\\\\");
if (toJs=="false") {
 x = x.replace(/\$/gi,"\\\$"); x = x.replace(/\@/gi,"\\\@"); x = x.replace(/\%/gi,"\\\%"); x = x.replace(/\&/gi,"\\\&");
}
 x = x.replace(/\n/gi,"\\n"); x = x.replace(/\"/gi,"\\\""); x = x.replace(/\'/gi,"\\\'");
 return "\""+x+"\"";
}

function wsImportVar(nom,val,LISTE) { 
 var In = Array(''); 
 In[0] = writeVal(val);
 return writeVar(nom,In,LISTE);
}

function wsImportVal(To,TAB,CHP,idx,LISTE) { 
 var k,i,nom,In,Out; 
 var y1,Struct,Liste; 
 var x=''; 
 if (typeof(idx)=="undefined") {idx = ""; LISTE = Array(';')};
 y1 = ""; Struct = Array(''); Liste = Array(LISTE[0]);
 nom = "/#T"; if (typeof(TAB[0][nom])!="undefined") {x += wsWrite("imed",TAB[0][nom])+"\n"}
for(k=0;k<CHP[0].length;k++) {
 nom = CHP[0][k];
 if (typeof(TAB[0][nom])!="undefined") {
  In = Array(TAB[0][nom]); Out = Array('');
  if ((i=wsImportRec(0,nom+idx,TAB,In,Out,Struct,[]))!=0) {return ''};
 } else {
  Out = Array('""');
 }
 x += writeVar(nom+idx,Out,Liste);
 y1 += ','+writeVal(wsWrite("ref",nom,Out));
}
 Struct[0] = wsWrite("recons",Struct[0],Array(y1));
 Out = Array('['+writeVal(Struct[0])+y1+']');
 x += writeVar(To+idx,Out,Liste);
 LISTE[0] = Liste[0];
 return x;
}

function wsImportRec(n,nom,TAB,IN,OUT,STRUCT,Tparm) { 
 var x = IN[0]; 
 var i,k,Type,Parm,cas; 
 var Out; 
 Type = Array(); Type[0] = 0; Parm = Array(Array());
 if ((i=wsImportStruct(TAB,IN,Type,Parm))!=0) {return i}; cas = Type[0]; IN[0] = x;
 if ((cas!=1)&&(Tparm.length!=0)) {return 21};
if (cas==0) {
 x = IN[0]; k = x.indexOf("/#"); if (k==-1) {k = x.length};
 OUT[0] += writeVal(x.substr(0,k)); x = x.substr(k);
} else if (((cas==1)&&(Tparm.length==0))||((cas==2)&&(Parm[0].length==0))) {
 Out = Array('');
 while(true) {
  x = IN[0]; if (x!="") {x = x.replace(/^\s*/,"")};
  if ((x=='')||(x.substr(0,2)=="/#")) {break};
  Type = Array(); Type[0] = 0; Parm = Array(Array());
  if ((i=wsImportStruct(TAB,IN,Type,Parm))!=0) {return i};
  if (Type[0]!=cas) {return 22};
  if (!IN[0].match(/^\s*\/#L/)) {return 22}
  if ((i=wsImportArray1(n,nom,TAB,IN,Out))!=0) {return i};
 }
 if (n==0) {
  x = nom.replace(/^(\w+).*/,"$1"); if (cas==2) {x += ',1'};
  STRUCT[0] += x+';';
 }
  OUT[0] += '['+Out[0].substr(1)+']';
} else {
 OUT[0] += wsWrite("void",'new Array()');
 while(true) {
  x = IN[0]; if (x!="") {x = x.replace(/^\s*/,"")};
  if ((x=='')||(x.substr(0,2)=="/#")) {break};
  Type = Array(); Type[0] = 0; Parm = Array(Array());
  if ((i=wsImportStruct(TAB,IN,Type,Parm))!=0) {return i};
  if (Type[0]!=cas) {return 22};
 if (n==0) {
  x = nom.replace(/^(\w+).*/,"$1"); for(i=0;i<Parm[0].length;i++) {x += ','+Parm[0][i]};
  STRUCT[0] += x+';';
 }
  if ((i=wsImportArray(n,nom,TAB,IN,OUT,((cas==2)?Parm[0]:Tparm)))!=0) {return i};
 }
}
 IN[0] = x; return 0;
}

function wsImportStruct(TAB,IN,TYPE,PARM) { 
 var x = IN[0]; 
 var k; 
 if (x!="") {x = x.replace(/^\s*/,"")};
 if (x.substr(0,3)!="(#L") {TYPE[0] = 0; return 0}
 if (x.substr(0,4)=="(#L)") {IN[0] = "/#L)"+x.substr(4); TYPE[0] = 1; return 0}
 if (x.substr(0,4)=="(#L:") {IN[0] = "/#L:"+x.substr(4); TYPE[0] = 1; return 0}
 if (x.substr(0,4)!="(#L(") {return 11}; x = x.substr(4); k = x.indexOf(")");
 if (k==-1) {return 12}; if (x.substr(0,k)=="1") {PARM[0] = []} else {PARM[0] = x.substr(0,k).split(/\/#/)}; x = x.substr(k+1);
 for(k=0;k<PARM[0].length;k++) {if (typeof(TAB[0][PARM[0][k]])=="undefined") {return 13}}
 if (x.substr(0,1)==")") {IN[0] = "/#L)"+x.substr(1); TYPE[0] = 2; return 0}
 if (x.substr(0,1)==":") {IN[0] = "/#L:"+x.substr(1); TYPE[0] = 2; return 0}
 {return 14};
}

function wsImportArray(n,nom,TAB,IN,OUT,Tparm) { 
 var x = IN[0]; 
 var i,In,Out,k; 
 var y,T,T0; 
 y = TAB[0][Tparm[0]]; T = Tparm.slice(1); T0 = [];
 if (y!="") {y = y.replace(/^\s*/,"")};
 if (y.substr(0,6)=="(#L(1)") {y = "(#L"+y.substr(6)}
 if (y.substr(0,4)=="(#L)") {y = "/#L)"+y.substr(4)}
 if (y!="") {y = y.replace(/\/#L\)\s*/,"\/#L\)")};
 if (y!="/#L)") {
  if ((y.substr(0,4)!="(#L:")||(y.substr(y.length-4)!="/#L)")) {return 31}; T0 = y.substr(4,y.length-8).split(/\/#L:/);
 }
 for(k=0;k<T0.length;k++) {
  if (x!="") {x = x.replace(/^\s*/,"")};
 if (x.substr(0,4)=="/#L:"){
  In = Array(x.substr(4)); Out = Array('');
  if ((i=wsImportRec(n+1,nom+'['+writeVal(T0[k])+']',TAB,In,Out,"",T))!=0) {return i};
 } else {Out = Array('""')}
  OUT[0] += ';'+wsWrite("use",nom+'['+writeVal(T0[k])+']',Out)+' = '+wsWrite("val",Out[0]);
  x = In[0];
 }
 if (x.substr(0,4)!="/#L)") {return 32}; IN[0] = x.substr(4); return 0;
}

function wsImportArray1(n,nom,TAB,IN,OUT) { 
 var x = IN[0]; 
 var k; 
 while(true) {
  if (x!="") {x = x.replace(/^\s*/,"")};
  if (x.substr(0,4)!="/#L:") {break}; x = x.substr(4);
  if (x.match(/^\s*\(#L/)) {return 41};
  k = x.indexOf("/#"); if (k==-1) {k = x.length};
  OUT[0] += ','+writeVal(x.substr(0,k)); x = x.substr(k);
 }
 if (x.substr(0,4)!="/#L)") {return 42}; IN[0] = x.substr(4); return 0;
}