[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";