Diff for /loncom/homework/default_homework.lcpm between versions 1.169 and 1.173

version 1.169, 2014/06/25 16:50:51 version 1.173, 2017/02/07 21:24:29
Line 309  sub caparesponse_check_list { Line 309  sub caparesponse_check_list {
  #for numerical problems split off the unit   #for numerical problems split off the unit
         my $part1;          my $part1;
         my $part2;          my $part2;
           my $match_algebra = qr{^(.*[^\s])\s+([^\s]+)$};
           # FIXME: with the above regexp, algebra with spaces will not be evaluated correctly
           my $match_numerical_units = qr{^([\d\.\,\s\$]*(?:(?:[xX\*]10[\^\*]*|[eE]*)[\+\-]*\d*)*(?:^|\S)\d+)([\$\s\w\^\*\/\(\)\+\-]*[^\d\.\s\,][\$\s\w\^\*\/\(\)\+\-]*)$};
         if ($allowalgebra) {          if ($allowalgebra) {
            ($part1,$part2)=($responses->[0][-1]=~ /^(.*[^\s])\s+([^\s]+)$/);              ($part1,$part2) = ($responses->[0][-1] =~ /$match_algebra/); 
         } else {          } else {
            ($part1,$part2)=($responses->[0][-1]=~ /^([\d\.\,\s\$]*(?:(?:[xX\*]10[\^\*]*|[eE]*)[\+\-]*\d*)*(?:^|\S)\d+)([\$\s\w\^\*\/\(\)\+\-]*[^\d\.\s\,][\$\s\w\^\*\/\(\)\+\-]*)$/);             ($part1,$part2) = ($responses->[0][-1] =~ /$match_numerical_units/);
         }          }
         if (defined($part1) && defined($part2)) {          if (defined($part1) && defined($part2)) {
     $responses->[0][-1]=$part1;      $responses->[0][-1]=$part1;
Line 327  sub caparesponse_check_list { Line 330  sub caparesponse_check_list {
                     }                      }
                 }                  }
             }              }
               if (scalar(@$responses) > 0 && defined $answerunit) {
                   # there are several response values, units should be the same for all
                   $part2 =~ s/^\s+|\s+$//g;
                   for (my $i=1; $i<scalar(@$responses); $i++) {
                       my $element = $responses->[$i][-1];
                       my ($part1i, $part2i);
                       if ($allowalgebra) {
                           ($part1i, $part2i) = ($element =~ /$match_algebra/); 
                       } else {
                           ($part1i, $part2i) = ($element =~ /$match_numerical_units/);
                       }
                       $part2i =~ s/^\s+|\s+$//g;
                       if (!defined $part2i) {
                           return 'NO_UNIT';
                       } elsif ($part2i ne $part2) {
                           return ('UNIT_FAIL', "$part2 $part2i");
                       } else {
                           $responses->[$i][-1] = $part1i;
                       }
                   }
               }
  }   }
     }      }
     $unit=~s/\s//;      $unit=~s/\s//;
Line 902  sub chemparse { Line 926  sub chemparse {
     my $formula = '';      my $formula = '';
     foreach my $token (@tokens) {      foreach my $token (@tokens) {
  if ($token eq '->' ) {   if ($token eq '->' ) {
     $formula .= '<m>\ensuremath{\rightarrow}</m> ';              if ($external::target eq 'web') {
                   $formula .= '&rarr; ';
               } else {
                   $formula .= '<m>\ensuremath{\rightarrow}</m> ';
       }
     next;      next;
  }   }
  if ($token eq '<-' ) {   if ($token eq '<-' ) {
     $formula .= '<m>\ensuremath{\leftarrow}</m> ';              if ($external::target eq 'web') {
                   $formula .= '&larr; ';
               } else {
                   $formula .= '<m>\ensuremath{\leftarrow}</m> ';
       }
     next;      next;
  }     }  
  if ($token eq '<=>') {   if ($token eq '<=>') {
Line 1228  sub sec { Line 1260  sub sec {
 }  }
   
 sub submission {  sub submission {
    my ($partid,$responseid,$subnumber,$encode,$cleanupnum)=@_;     my ($partid,$responseid,$subnumber,$encode,$cleanupnum,$mapalias)=@_;
    my $sub='';     my $sub='';
    if ($subnumber) { $sub=$subnumber.':'; }     if ($subnumber) { $sub=$subnumber.':'; }
    my $output =     my $output =
        &EXT('user.resource.'.$sub.'resource.'.$partid.'.'.$responseid.'.submission');         &EXT('user.resource.'.$sub.'resource.'.$partid.'.'.$responseid.'.submission',$mapalias);
    if (ref($output) eq 'ARRAY') {     if (ref($output) eq 'ARRAY') {
        my @items = @{$output};         my @items = @{$output};
        if ($encode) {         if ($encode) {
Line 1458  sub proper_path { Line 1490  sub proper_path {
     }      }
 }  }
   
   sub input_id {
       my ($part_id, $response_id, $textline_id) = @_;
       return 'HWVAL_'.$part_id.'_'.$response_id.'_'.$textline_id;
   }
   

Removed from v.1.169  
changed lines
  Added in v.1.173


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