--- loncom/interface/Attic/lonspreadsheet.pm	2002/04/18 20:21:38	1.87
+++ loncom/interface/Attic/lonspreadsheet.pm	2002/04/29 21:06:30	1.88
@@ -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 @@ sub expandnamed {
 	    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 @@ sub sett {
 	      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 @@ sub sett {
             }
         }
     }
+    # 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;