--- loncom/xml/lonplot.pm	2001/12/21 22:45:47	1.17
+++ loncom/xml/lonplot.pm	2001/12/27 19:47:02	1.19
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.17 2001/12/21 22:45:47 matthew Exp $
+# $Id: lonplot.pm,v 1.19 2001/12/27 19:47:02 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -34,8 +34,6 @@ use Apache::File;
 use Apache::response;
 use Apache::lonxml;
 
-use Digest::MD5 qw(md5_base64);
-
 sub BEGIN {
   &Apache::lonxml::register('Apache::lonplot',('plot'));
 }
@@ -53,6 +51,7 @@ sub BEGIN {
 ##  grid
 ##  border
 ##  font
+##  align
 ##
 ##  @labels: $labels[$i] = \%label
 ##           %label: text, xpos, ypos, justify
@@ -68,7 +67,8 @@ sub BEGIN {
 ## Tests used in checking the validitity of input
 ##
 my $int_test       = sub {$_[0]=~s/\s+//g;$_[0]=~/^\d+$/};
-my $real_test      = sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*$/};
+my $real_test      = 
+    sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*([eE][+-]\d+)?$/};
 my $color_test     = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-f]{6}$/};
 my $onoff_test     = sub {$_[0]=~/^(on|off)$/};
 my $key_pos_test   = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/};
@@ -88,7 +88,8 @@ my %plot_defaults =
      grid         => {default => 'off',     test => $onoff_test },
      border       => {default => 'on',      test => $onoff_test },
      font         => {default => 'medium',  test => $sml_test   },
-     align        => {default => 'left',    test => $words_test }
+     align        => {default => 'left',    test => 
+			  sub {$_[0]=~/^(left|right|center)$/} }
      );
 
 my %key_defaults = 
@@ -365,13 +366,7 @@ sub start_data {
 	    delete($curves[-1]->{'function'});
 	}
 	my $datatext = &Apache::lonxml::get_all_text("/data",$$parser[-1]);
-	&Apache::lonxml::warning(
-             ' Length of data string: '.length($datatext));    
 	$datatext =~ s/\s+/ /g;  
-	if ($datatext !~ /^(([+-]?\d*\.?\d*)[, ]?)+$/) {
-	    &Apache::lonxml::warning('Malformed data: '.$datatext);
-	    $datatext = '';
-	}
 	# Need to do some error checking on the @data array - 
 	# make sure it's all numbers and make sure each array 
 	# is of the same length.
@@ -381,12 +376,21 @@ sub start_data {
 	} else { # Assume it's space seperated.
 	    @data = split / /,$datatext;
 	}
-	&Apache::lonxml::warning(' Data Points: '.$#data);
 	for (my $i=0;$i<=$#data;$i++) {
 	    # Check that it's non-empty
+	    if (! defined($data[$i])) {
+		&Apache::lonxml::warning(
+		    'undefined <data> value.  Replacing with '.
+		    ' pi/e = 1.15572734979092');
+		$data[$i] = 1.15572734979092;
+	    }
 	    # Check that it's a number
-	    # Maybe I need a 'debug=on' switch to list the data set
-	    #    out in a warning?
+	    if (! &$real_test($data[$i]) & ! &$int_test($data[$i])) {
+		&Apache::lonxml::warning(
+		    'Bad <data> value of '.$data[$i].'  Replacing with '.
+		    ' pi/e = 1.15572734979092');
+		$data[$i] = 1.15572734979092;
+	    }
 	}
 	push  @{$curves[-1]->{'data'}},\@data;
 	# This routine should never return anything.
@@ -441,8 +445,7 @@ sub get_attributes{
     my $parstack = shift;
     my $safeeval = shift;
     my $tag      = shift;
-    my $attr;
-    foreach $attr (keys %{$defaults}) {
+    foreach my $attr (keys %{$defaults}) {
 	$values->{$attr} = 
 	    &Apache::lonxml::get_param($attr,$parstack,$safeeval);
 	if ($values->{$attr} eq '' | !defined($values->{$attr})) {