| Code Perl |
sub useText {local($nom,$TIN) = @_;
if (!(defined $$TIN{$nom})) {return ''}
local $x = &useText2($$TIN{$nom},$TIN);
$x =~ s/\[#me!\]/$nom/g;
$x =~ s/\[#(\w+)!\]/\[#$1\]/g;
return $x;
}
sub evalText {local($val,$TIN) = @_;
local $x = &useText2($val,$TIN);
$x =~ s/\[#(\w+)!\]/\[#$1\]/g;
return $x;
}
sub useText2 {local($x,$TIN) = @_;
local($x0,$k,$y,$y1,$y2);
$x0 = "";
if (($k=index($x,"/#"))!=-1) {$x0 = substr($x,$k); $x = substr($x,0,$k)}
while($x=~/\[#(\w+)\]/) {
$y1 = $1;
if (!(defined $$TIN{$y1})) {
$y2 = "\[#".$y1."!\]";
} else {
$y2 = &useText2($$TIN{$y1},$TIN);
$x = &useTextINT($x,$y1,$y2);
}
$x =~ s/\[#$y1\]/$y2/g;
}
while($x0=~/(\/#\w+=)/) {
$y = $1; $k = index($x0,$y); $x0 = substr($x0,$k+length($y));
if (($k=index($x0,"/#"))==-1) {$k = length($x0)}
$y=~/\/#(\w+)=/;
$y1 = $1; $y2 = substr($x0,0,$k); $x0 = substr($x0,$k);
$y2 =~ s/^\s*//; $y2 =~ s/\s*$//;
$x = &useTextINT($x,$y1,$y2);
$y2 = &useText2($y2,$TIN);
$x =~ s/\[#$y1!?\]/$y2/g;
}
$x =~ s/^\s*//; $x =~ s/\s*$//;
return $x;
}
sub useTextINT {local($x,$y1,$y2) = @_;
local($x1,$x2,$x3);
if ($y2 eq "") {
$x =~ s/\[\?$y1:([^\?]*)\?\]//g;
} else {
$x =~ s/\[\?$y1:([^\?]*)\?\]/$1/g;
if ($y2=~/^(\w+)\?/) {
$x1 = $1; $x2 = substr($y2,length($x1)+1); $x3 = "";
if ($x2=~/:([^:]*)$/) {$x3 = $1; $x2 = substr($x2,0,length($x2)-length($x3)-1); }
$x =~ s/\[#$y1=$x1\]/$x2/g;
$x =~ s/\[#$y1=\w+\]/$x3/g;
}
}
return $x;
}
|
| Code JavaScript |
function useText(nom,TIN) {
if (typeof(TIN[0][nom])=="undefined") {return ''}
var x = useText2(TIN[0][nom],TIN);
x = x.replace(/\[#me!\]/g,nom);
x = x.replace(/\[#(\w+)!\]/g,"\[#$1\]");
return x;
}
function evalText(val,TIN) {
var x = useText2(val,TIN);
x = x.replace(/\[#(\w+)!\]/g,"\[#$1\]");
return x;
}
function useText2(x,TIN) {
var x0,k,y,y1,y2;
x0 = "";
if ((k=x.indexOf("/#"))!=-1) {x0 = x.substr(k); x = x.substr(0,k)}
while(x.match(/\[#(\w+)\]/)) {
y1 = RegExp.$1;
if (typeof(TIN[0][y1])=="undefined") {
y2 = "\[#"+y1+"!\]";
} else {
y2 = useText2(TIN[0][y1],TIN);
x = useTextINT(x,y1,y2);
}
x = x.replace(new RegExp("\\\[#"+y1+"\\\]","g"),y2);
}
while(x0.match(/(\/#\w+=)/)) {
y = RegExp.$1; k = x0.indexOf(y); x0 = x0.substr(k+y.length);
if ((k=x0.indexOf("/#"))==-1) {k = x0.length}
y.match(/\/#(\w+)=/);
y1 = RegExp.$1; y2 = x0.substr(0,k); x0 = x0.substr(k);
y2 = y2.replace(/^\s*/,""); y2 = y2.replace(/\s*$/,"");
x = useTextINT(x,y1,y2);
y2 = useText2(y2,TIN);
x = x.replace(new RegExp("\\\[#"+y1+"!?\\\]","g"),y2);
}
x = x.replace(/^\s*/,""); x = x.replace(/\s*$/,"");
return x;
}
function useTextINT(x,y1,y2) {
var x1,x2,x3;
if (y2=="") {
x = x.replace(new RegExp("\\\[\\\?"+y1+":([^\\\?]*)\\\?\\\]","g"),"");
} else {
x = x.replace(new RegExp("\\\[\\\?"+y1+":([^\\\?]*)\\\?\\\]","g"),"$1");
if (y2.match(/^(\w+)\?/)) {
x1 = RegExp.$1; x2 = y2.substr(x1.length+1); x3 = "";
if (x2.match(/:([^:]*)$/)) {x3 = RegExp.$1; x2 = x2.substr(0,x2.length-x3.length-1); }
x = x.replace(new RegExp("\\\[#"+y1+"="+x1+"\\\]","g"),x2);
x = x.replace(new RegExp("\\\[#"+y1+"=\\w+\\\]","g"),x3);
}
}
return x;
}
|