--- loncom/homework/default_homework.lcpm 2003/09/25 18:48:40 1.66 +++ loncom/homework/default_homework.lcpm 2004/03/12 16:55:35 1.70 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.66 2003/09/25 18:48:40 albertel Exp $ +# $Id: default_homework.lcpm,v 1.70 2004/03/12 16:55:35 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,7 +44,7 @@ sub caparesponse_check { #not to be used: $ans_fmt my ($type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) = eval $_[2]. - ';return ($type,$tol,$sig,$ans_fmt,$unit,$calc,$samples);'; + ';return ($__LC__type,$__LC__tol,$__LC__sig,$__LC__ans_fmt,$__LC__unit,$__LC__calc,$__LC__samples);'; my $tol_type=''; # gets it's value from whether tol has a % or not done my $sig_lbound=''; #done @@ -165,7 +165,8 @@ sub caparesponse_check_list { my $answers=join(':',@list); $result.="Got response :$answers:\n"; my @responselist; - my $type =eval $expr.';return $type;'; + my $type =eval $expr.';return $__LC__type;'; + $result.="Got type :$type:\n"; if ($type ne '' && $#list > 0) { (@responselist)=split /,/,$response; } else { @@ -490,7 +491,7 @@ sub format { my ($value,$fmt)=@_; my $dollarmode; if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } - $fmt=~/e/E/g; + $fmt=~s/e/E/g; my $result=sprintf('%.'.$fmt,$value); $result=~s/(E[+-]*)0/$1/; if ($dollarmode) {$result=&dollarmode($result);} @@ -498,12 +499,13 @@ sub format { } sub prettyprint { - my ($value,$fmt)=@_; + my ($value,$fmt,$target)=@_; my $result; my $dollarmode; + if (!$target) { $target = $external::target; } if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } if ($fmt) { $value=sprintf('%.'.$fmt,$value); } - if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/ ) { + if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/i ) { my $frac=$1; if ($dollarmode) { $frac=&dollarformat($frac); } my $exponent=$2; @@ -512,9 +514,9 @@ sub prettyprint { $exponent=~s/^-0*/-/; if ($exponent eq '-') { undef($exponent); } if ($exponent) { - if ($external::target eq 'web') { + if ($target eq 'web') { $result=$frac.'×10'.$exponent.''; - } elsif ($external::target eq 'tex') { + } elsif ($target eq 'tex') { $result='\ensuremath{'.$frac.'\times 10^{'.$exponent.'}}'; } else { $result=$value; @@ -524,13 +526,14 @@ sub prettyprint { } } else { $result=$value; - if ($dollarmode) { $result=&dollarformat($result); } + if ($dollarmode) { $result=&dollarformat($result,$target); } } return $result; } sub dollarformat { - my ($number) = @_; + my ($number,$target) = @_; + if (!$target) { $target = $external::target; } if ($number =~ /\./) { while ($number =~ /([^\.,]+)([^\.,][^\.,][^\.,])([,0-9]*\.[0-9]*$)/) { $number = $1.','.$2.$3; @@ -540,7 +543,7 @@ sub dollarformat { $number = $1.','.$2.$3; } } - if ($external::target eq 'tex') { + if ($target eq 'tex') { $number='\$'.$number; #' stupid emacs } else { $number='$'.$number; #' stupid emacs