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

version 1.168, 2014/06/25 15:43:04 version 1.169, 2014/06/25 16:50:51
Line 1228  sub sec { Line 1228  sub sec {
 }  }
   
 sub submission {  sub submission {
    my ($partid,$responseid,$subnumber,$encode)=@_;     my ($partid,$responseid,$subnumber,$encode,$cleanupnum)=@_;
    my $sub='';     my $sub='';
    if ($subnumber) { $sub=$subnumber.':'; }     if ($subnumber) { $sub=$subnumber.':'; }
    my $output =     my $output =
Line 1238  sub submission { Line 1238  sub submission {
        if ($encode) {         if ($encode) {
            @items = map { &encode_response($_); } @items;             @items = map { &encode_response($_); } @items;
        }         }
          if (ref($cleanupnum) eq 'HASH') {
              @items = map { &cleanup_numerical_response($cleanupnum,$_); } @items;
          }
        return \@items;         return \@items;
    } else {     } else {
        if ($encode) {         if ($encode) {
            $output = &encode_response($output);             $output = &encode_response($output);
        }         }
          if (ref($cleanupnum) eq 'HASH') {
              $output = &cleanup_numerical_response($cleanupnum,$output);
          }
        return $output;         return $output;
    }     }
 }  }
Line 1256  sub encode_response { Line 1262  sub encode_response {
     return $value;      return $value;
 }  }
   
   sub cleanup_numerical_response {
       my ($cleanupnum,$value) = @_;
       if (ref($cleanupnum) eq 'HASH') {
           if ($cleanupnum->{exponent}) {
               if ($value =~ m{^(.*)[\*xX]\s*10\s*\^\s*(\+|\-)?\s*(\d+)(.*)$}) {
                   my $pre_exp = $1;
                   my $sign = $2;
                   my $exponent = $3;
                   my $post_exp = $4;
                   if ($pre_exp !~ /\./) {
                       $pre_exp .= '.';
                   }
                   if ($sign eq '') {
                       $sign = '+';
                   }
                   $value = $pre_exp.'E'.$sign.$exponent.$post_exp;
               }
           }
           if ($cleanupnum->{comma}) {
               $value =~ s{(\d+),(\d+)}{$1$2};
           }
           if ($cleanupnum->{letterforzero}) {
               $value =~ s/^\s*o(\.\d+)/0$1/i;
           }
           if ($cleanupnum->{spaces}) {
               $value =~ s{^\s+|\s+$}{}g;
               if ($value =~ m{^(.*)\.\s+(\d+)(.*)$}) {
                   my $pre_pt = $1;
                   my $decimal = $2;
                   my $post_dec = $3;
                   $value = $pre_pt.'.'.$decimal.$post_dec;
               }
           }
           if ($cleanupnum->{format} =~ /^\d+s$/i) {
               $value = &format_significant_figures($value,$cleanupnum->{format});
           }
       }
       return $value;
   }
   
 sub currentpart {  sub currentpart {
    return $external::part;     return $external::part;
 }  }

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


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