Diff for /loncom/homework/response.pm between versions 1.154 and 1.156

version 1.154, 2006/12/11 22:02:13 version 1.156, 2006/12/15 22:11:43
Line 488  sub start_mathresponse { Line 488  sub start_mathresponse {
  }   }
     } elsif ($target eq 'answer' || $target eq 'grade') {      } elsif ($target eq 'answer' || $target eq 'grade') {
  &Apache::response::reset_params();   &Apache::response::reset_params();
  my $args_ref= \%{$safeeval->varglob('LONCAPA::mathresponse_args')};  
  undef(%{ $args_ref });  
  $$args_ref{'cas'}=$token->[2]{'cas'};  
         if ($token->[2]{'args'}=~/\$/) {  
     $$args_ref{'args'}=&Apache::run::run($token->[2]{'args'},$safeeval);  
  } elsif ($token->[2]{'args'}=~/\@/) {  
     $$args_ref{'args'}=&Apache::run::run('join(",",'.$token->[2]{'args'}.')',$safeeval);  
  } else {  
     $$args_ref{'args'}=$token->[2]{'args'};  
  }  
     } elsif ($target eq 'meta') {      } elsif ($target eq 'meta') {
  $result .= &Apache::response::meta_package_write('mathresponse');   $result .= &Apache::response::meta_package_write('mathresponse');
     }      }
Line 520  sub end_mathresponse { Line 510  sub end_mathresponse {
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=      $Apache::lonhomework::results{"resource.$part.$id.submission"}=
  $response;   $response;
     my $error;      my $error;
     my $args_ref= \%{$safeeval->varglob('LONCAPA::mathresponse_args')};      my $award;
             my $award;      my $cas = &Apache::lonxml::get_param('cas',$parstack,$safeeval);
             if ($$args_ref{'cas'} eq 'maxima') {              if ($cas eq 'maxima') {
  $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer,$response,$$args_ref{'args'});                  my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)];
     }                  $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer,$response,$args);
               }
     if (!&Apache::inputtags::valid_award($award)) {      if (!&Apache::inputtags::valid_award($award)) {
  $error = $award;   $error = $award;
  $award = 'ERROR';   $award = 'ERROR';
Line 544  sub end_mathresponse { Line 535  sub end_mathresponse {
     return $result;      return $result;
 }  }
   
   sub implicit_multiplication {
       my ($expression)=@_;
   # Escape scientific notation, so 3e8 does not become 3*e*8
   # 3e8 -> 3&8; 3e-8 -> 3&-8; 3E+8 -> e&+8
       $expression=~s/(\d+)e([\+\-]*\d+)/$1\&\($2\)/gsi;
   # 3x10^8 -> 3&8; 3*10^-8 -> 3&-8
       $expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/$1\&\($2\)/gsi;
   # Fill in multiplication signs
   # a b -> a*b;3 b -> 3*b;3 4 -> 3*4
       $expression=~s/(\w)\s+(\w)/$1\*$2/gs;
   # )( -> )*(; ) ( -> )*(
       $expression=~s/\)\s*\(/\)\*\(/gs;
   # 3a -> 3*a; 3( -> 3*(; 3 ( -> 3*(; 3A -> 3*A
       $expression=~s/(\d)\s*([a-zA-Z\(])/$1\*$2/gs;
   # a ( -> a*(
       $expression=~s/(\w)\s+\(/$1\*\(/gs;
   # )a -> )*a; )3 -> )*3; ) 3 -> )*3
       $expression=~s/\)\s*(\w)/\)\*$1/gs;
   # 3&8 -> 3e8; 3&-4 -> 3e-4
       $expression=~s/(\d+)\&\(([\+\-]*\d+)\)/$1e$2/gs;
       return $expression;
   }
   
 sub start_answer {  sub start_answer {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;

Removed from v.1.154  
changed lines
  Added in v.1.156


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>