[LON-CAPA-cvs] cvs: modules /gerd/texas THconvert.pl
www
lon-capa-cvs@mail.lon-capa.org
Fri, 17 Nov 2006 22:28:04 -0000
www Fri Nov 17 17:28:04 2006 EDT
Modified files:
/modules/gerd/texas THconvert.pl
Log:
Recognize non-numerical global and local variables
Index: modules/gerd/texas/THconvert.pl
diff -u modules/gerd/texas/THconvert.pl:1.3 modules/gerd/texas/THconvert.pl:1.4
--- modules/gerd/texas/THconvert.pl:1.3 Thu Nov 16 11:27:36 2006
+++ modules/gerd/texas/THconvert.pl Fri Nov 17 17:28:02 2006
@@ -78,6 +78,7 @@
sub generate_script {
my ($script,$multiplechoice)=@_;
my %globals=();
+ my %locals=();
print "\n".'<script type="loncapa/perl">'."\n";
$script=~s/\}\s*$//s;
foreach my $line (split(/[\n\;]/,$script)) {
@@ -89,14 +90,26 @@
if ($tol=~/\s*tol\s*=\s*(.*)$/) {
$globals{$1.'_tol'}=$1;
}
+ } elsif ($line=~/\s*\/\*\s*global.*\s+(\w+)\s+/) {
+ $line="&global('$1','')";
+ $globals{$1}=$2;
+ } elsif ($line=~/^\s*(?:int|double)\s+(.*)$/) {
+ foreach my $localvar (split(/\,/,$1)) {
+ $localvar=~s/\s//g;
+ $locals{$localvar}=1;
+ }
+ $line='';
} else {
$line=~s/\=\((\w+)\)(.+)$/\=\&$1($2)/;
$line=~s/random\(/\&random_default\(/;
foreach my $variable (keys %globals) {
$line=~s/\b(\Q$variable\E)\b/\$$1/g;
}
+ foreach my $variable (keys %locals) {
+ $line=~s/\b(\Q$variable\E)\b/\$$1/g;
+ }
}
- print $line.";\n";
+ if ($line) { print $line.";\n"; }
}
if ($multiplechoice) { print '&generate_truth_values();' }
print"</script>\n";