[LON-CAPA-cvs] cvs: loncom /interface lonspreadsheet.pm

matthew lon-capa-cvs@mail.lon-capa.org
Mon, 29 Apr 2002 21:06:30 -0000


matthew		Mon Apr 29 17:06:30 2002 EDT

  Modified files:              
    /loncom/interface	lonspreadsheet.pm 
  Log:
  Added ability in &expandnamed to use [ModuleWeight] instead of 
  [parameter_0_ModuleWeights].  Added a few comments to &sett.
  
  
Index: loncom/interface/lonspreadsheet.pm
diff -u loncom/interface/lonspreadsheet.pm:1.87 loncom/interface/lonspreadsheet.pm:1.88
--- loncom/interface/lonspreadsheet.pm:1.87	Thu Apr 18 16:21:38 2002
+++ loncom/interface/lonspreadsheet.pm	Mon Apr 29 17:06:30 2002
@@ -1,5 +1,5 @@
 #
-# $Id: lonspreadsheet.pm,v 1.87 2002/04/18 20:21:38 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.88 2002/04/29 21:06:30 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -742,7 +742,25 @@
 	    return 0;
         }
     } else {
-        return '$c{\''.$expression.'\'}';
+        # it is not a function, so it is a parameter name
+        # We should do the following:
+        #    1. Take the list of parameter names
+        #    2. look through the list for ones that match the parameter we want
+        #    3. If there are no collisions, return the one that matches
+        #    4. If there is a collision, return 'bad parameter name error'
+        my $returnvalue = '';
+        my @matches = ();
+        $#matches = -1;
+        study $expression;
+        foreach $parameter (keys(%c)) {
+            push @matches,$parameter if ($parameter =~ /$expression/);
+        }
+        if ($#matches == 0) {
+            $returnvalue = '$c{\''.$matches[0].'\'}';
+        } else {
+            $returnvalue =  "'bad parameter name : $expression'";
+        }
+        return $returnvalue;
     }
 }
 
@@ -762,11 +780,17 @@
 	      if ($_=~/A(\d+)/) {
 		my $trow=$1;
                 if ($trow) {
+                    # Get the name of this cell
 		    my $lb=$col.$trow;
+                    # Grab the template declaration
                     $t{$lb}=$f{'template_'.$col};
+                    # Replace '#' with the row number
                     $t{$lb}=~s/\#/$trow/g;
+                    # Replace '....' with ','
                     $t{$lb}=~s/\.\.+/\,/g;
+                    # Replace 'A0' with the value from 'A0'
                     $t{$lb}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;
+                    # Replace parameters
                     $t{$lb}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.&expandnamed($2)/ge;
                 }
 	      }
@@ -789,6 +813,8 @@
             }
         }
     }
+    # For some reason 'A0' gets special treatment...  This seems superfluous
+    # but I imagine it is here for a reason.
     $t{'A0'}=$f{'A0'};
     $t{'A0'}=~s/\.\.+/\,/g;
     $t{'A0'}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;