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; |
} |
} |