| … | |
… | |
| 7 | use WeBWorK::Utils qw(readFile formatDateTime); |
7 | use WeBWorK::Utils qw(readFile formatDateTime); |
| 8 | use WeBWorK::DB::Classlist; |
8 | use WeBWorK::DB::Classlist; |
| 9 | use WeBWorK::DB::WW; |
9 | use WeBWorK::DB::WW; |
| 10 | use WeBWorK::PG::Translator; |
10 | use WeBWorK::PG::Translator; |
| 11 | |
11 | |
| 12 | use base qw(Exporter); |
12 | sub new($$$$$$) { |
| 13 | our @EXPORT = qw(init_translator); |
13 | my $invocant = shift; |
| 14 | our @EXPORT_OK = qw(); |
14 | my $class = ref($invocant) || $invocant; |
| 15 | |
15 | |
| 16 | sub init_translator($$$$$) { |
|
|
| 17 | my $courseEnv = shift; |
16 | my $courseEnv = shift; |
| 18 | my $userName = shift; |
17 | my $userName = shift; |
| 19 | my $setName = shift; |
18 | my $setName = shift; |
| 20 | my $problemNumber = shift; |
19 | my $problemNumber = shift; |
| 21 | my $formData = shift; |
20 | my $formData = shift; |
| … | |
… | |
| 85 | $translator->source_string(readFile($sourceFile)); |
84 | $translator->source_string(readFile($sourceFile)); |
| 86 | |
85 | |
| 87 | # install a safety filter (&safetyFilter) |
86 | # install a safety filter (&safetyFilter) |
| 88 | $translator->rf_safety_filter(\&safetyFilter); |
87 | $translator->rf_safety_filter(\&safetyFilter); |
| 89 | |
88 | |
| 90 | # return the translator |
89 | # translate the PG source into text |
| 91 | return $translator; |
90 | $translator->translate(); |
|
|
91 | |
|
|
92 | # install a grader |
|
|
93 | my $grader = $courseEnv->{pg}->{grader}; |
|
|
94 | $translator->rf_problem_grader(\&FIXME); # *** need a coderef! |
|
|
95 | |
|
|
96 | # process student answers (if any) |
|
|
97 | $translator->process_answers($formData); |
|
|
98 | |
|
|
99 | # a PG object is a REFERENCE to a Translator object |
|
|
100 | return bless \$translator, $class; |
| 92 | } |
101 | } |
| 93 | |
102 | |
| 94 | # ----- |
103 | # ----- |
| 95 | |
104 | |
| 96 | sub defineProblemEnvir($$$$$$) { |
105 | sub defineProblemEnvir($$$$$$) { |
| … | |
… | |
| 178 | |
187 | |
| 179 | return \%envir; |
188 | return \%envir; |
| 180 | } |
189 | } |
| 181 | |
190 | |
| 182 | sub safetyFilter { |
191 | sub safetyFilter { |
| 183 | my $answer = shift; # accepts one answer and checks it |
192 | my $answer = shift; # accepts one answer and checks it |
| 184 | my $submittedAnswer = $answer; |
193 | my $submittedAnswer = $answer; |
| 185 | $answer = '' unless defined $answer; |
194 | $answer = '' unless defined $answer; |
| 186 | my ($errorno); |
195 | my ($errorno); |
| 187 | $answer =~ tr/\000-\037/ /; |
196 | $answer =~ tr/\000-\037/ /; |
| 188 | # Return if answer field is empty |
197 | # Return if answer field is empty |