[system] / trunk / webwork-modperl / doc / parser / extensions / 8-answer.pg Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/doc/parser/extensions/8-answer.pg

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 2572 Revision 2573
25# 25#
26# Make the answer checker 26# Make the answer checker
27# 27#
28sub vector_cmp { 28sub vector_cmp {
29 my $v = shift; 29 my $v = shift;
30 die "vector_cmp requires a vector" unless defined $v; 30 die "vector_cmp requires a vector argument" unless defined $v;
31 my $v = Vector($v); # covert to vector if it isn't already 31 my $v = Vector($v); # covert to vector if it isn't already
32 my $ans = new AnswerEvaluator; 32 my $ans = new AnswerEvaluator;
33 $ans->ans_hash(type => "vector",correct_ans => $v->string, vector=>$v); 33 $ans->ans_hash(type => "vector",correct_ans => $v->string, vector=>$v);
34 $ans->install_evaluator(~~&vector_cmp_check); 34 $ans->install_evaluator(~~&vector_cmp_check);
35 return $ans; 35 return $ans;
39 my $ans = shift; my $v = $ans->{vector}, 39 my $ans = shift; my $v = $ans->{vector},
40 $ans->score(0); # assume failure 40 $ans->score(0); # assume failure
41 my $student = $ans->{student_ans}; 41 my $student = $ans->{student_ans};
42 # 42 #
43 # Make student answer safe to eval by doubling \ and quoting ' 43 # Make student answer safe to eval by doubling \ and quoting '
44 # (remember, ~~ equals \)
44 # 45 #
45 $student =~ s/~~~~/~~~~~~~~/g; $student =~ s/'/~~~~'/g; # remember that ~~ means \ 46 $student =~ s/~~~~/~~~~~~~~/g; $student =~ s/'/~~~~'/g;
46 my ($fV,$err) = PG_restricted_eval('$f = Formula(~~''.$student.'~~'); [$f,$f->eval]'); 47 my ($fV,$err) = PG_restricted_eval('$f = Formula(~~''.$student.'~~'); [$f,$f->eval]');
47 if (defined $fV) { 48 if (defined $fV) {
48 my ($f,$V) = @{$fV}; # extract the formula and is value 49 my ($f,$V) = @{$fV}; # extract the formula and is value
49 $ans->{preview_latex_string} = $f->TeX; 50 $ans->{preview_latex_string} = $f->TeX;
50 $ans->{preview_text_string} = $f->string; 51 $ans->{preview_text_string} = $f->string;
59 $ans->{ans_message} = $ans->{error_message} = 60 $ans->{ans_message} = $ans->{error_message} =
60 "Your answer doesn't seem to be a Vector" unless $inputs_ref->{previewAnswers}; 61 "Your answer doesn't seem to be a Vector" unless $inputs_ref->{previewAnswers};
61 } 62 }
62 } else { 63 } else {
63 # 64 #
64 # Student answer evaluation Failed. 65 # Student answer evaluation failed.
65 # Report the error, with formatting, if possible. 66 # Report the error, with formatting, if possible.
66 # 67 #
67 my $context = Context(); 68 my $context = Context();
68 my $message = $context->{error}{message}; 69 my $message = $context->{error}{message};
69 if ($context->{error}{pos}) { 70 if ($context->{error}{pos}) {

Legend:
Removed from v.2572  
changed lines
  Added in v.2573

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9