Log Message:
-----------
forward port
of the rel-2-4-5 changes that allow BEGIN_HINT, etc.
Modified Files:
--------------
pg/lib/WeBWorK/PG:
Translator.pm
Revision Data
-------------
Index: Translator.pm
===================================================================
RCS file: /webwork/cvs/system/pg/lib/WeBWorK/PG/Translator.pm,v
retrieving revision 1.20
retrieving revision 1.21
diff -Llib/WeBWorK/PG/Translator.pm -Llib/WeBWorK/PG/Translator.pm -u -r1.20 -r1.21
--- lib/WeBWorK/PG/Translator.pm
+++ lib/WeBWorK/PG/Translator.pm
@@ -154,6 +154,8 @@
my $class = shift;
my $safe_cmpt = new Safe; #('PG_priv');
my $self = {
+ preprocess_code => \&default_preprocess_code,
+ postprocess_code => \&default_postprocess_code,
envir => undef,
PG_PROBLEM_TEXT_ARRAY_REF => [],
PG_PROBLEM_TEXT_REF => 0,
@@ -882,13 +884,19 @@
##########################################
###### PG preprocessing code #############
##########################################
- # BEGIN_TEXT and END_TEXT must occur on a line by themselves.
- $evalString =~ s/\n\s*END_TEXT[\s;]*\n/\nEND_TEXT\n/g;
- $evalString =~ s/\n\s*BEGIN_TEXT[\s;]*\n/\nTEXT\(EV3\(<<'END_TEXT'\)\);\n/g;
- $evalString =~ s/ENDDOCUMENT.*/ENDDOCUMENT();/s; # remove text after ENDDOCUMENT
+
+ $evalString = &{$self->{preprocess_code}}($evalString);
+
+
+# # default_preprocess_code
+# # BEGIN_TEXT and END_TEXT must occur on a line by themselves.
+# $evalString =~ s/\n\s*END_TEXT[\s;]*\n/\nEND_TEXT\n/g;
+# $evalString =~ s/\n\s*BEGIN_TEXT[\s;]*\n/\nTEXT\(EV3\(<<'END_TEXT'\)\);\n/g;
+# $evalString =~ s/ENDDOCUMENT.*/ENDDOCUMENT();/s; # remove text after ENDDOCUMENT
+#
+# $evalString =~ s/\\/\\\\/g; # \ can't be used for escapes because of TeX conflict
+# $evalString =~ s/~~/\\/g; # use ~~ as escape instead, use # for comments
- $evalString =~ s/\\/\\\\/g; # \ can't be used for escapes because of TeX conflict
- $evalString =~ s/~~/\\/g; # use ~~ as escape instead, use # for comments
=pod
@@ -922,6 +930,12 @@
########## end EVALUATION code ###########
#############################################################################
+ ##########################################
+ ###### PG postprocessing code #############
+ ##########################################
+ $PG_PROBLEM_TEXT_REF = &{$self->{postprocess_code}}($PG_PROBLEM_TEXT_REF);
+
+
=pod
(5) B<Process errors>
@@ -960,7 +974,7 @@
$self -> {errors}."\r\n" .
"****************<BR>\n");
- push(@PROBLEM_TEXT_OUTPUT , "------Input Read\r\n");
+ push(@PROBLEM_TEXT_OUTPUT , "------Input Read\r\n");
$self->{source} =~ s/</</g;
@input=split("\n", $self->{source});
$lineNumber = 1;
@@ -1607,6 +1621,37 @@
}
+sub original_preprocess_code {
+ my $evalString = shift;
+ # BEGIN_TEXT and END_TEXT must occur on a line by themselves.
+ $evalString =~ s/\n\s*END_TEXT[\s;]*\n/\nEND_TEXT\n/g;
+ $evalString =~ s/\n\s*BEGIN_TEXT[\s;]*\n/\nTEXT\(EV3\(<<'END_TEXT'\)\);\n/g;
+ $evalString =~ s/ENDDOCUMENT.*/ENDDOCUMENT();/s; # remove text after ENDDOCUMENT
+
+ $evalString =~ s/\\/\\\\/g; # \ can't be used for escapes because of TeX conflict
+ $evalString =~ s/~~/\\/g; # use ~~ as escape instead, use # for comments
+ $evalString;
+}
+sub default_preprocess_code {
+ my $evalString = shift;
+ # BEGIN_TEXT and END_TEXT must occur on a line by themselves.
+ $evalString =~ s/\n\s*END_TEXT[\s;]*\n/\nEND_TEXT\n/g;
+ $evalString =~ s/\n\s*END_SOLUTION[\s;]*\n/\nEND_SOLUTION\n/g;
+ $evalString =~ s/\n\s*END_HINT[\s;]*\n/\nEND_HINT\n/g;
+ $evalString =~ s/\n\s*BEGIN_TEXT[\s;]*\n/\nTEXT\(EV3\(<<'END_TEXT'\)\);\n/g;
+ $evalString =~ s/\n\s*BEGIN_SOLUTION[\s;]*\n/\nSOLUTION\(EV3\(<<'END_SOLUTION'\)\);\n/g;
+ $evalString =~ s/\n\s*BEGIN_HINT[\s;]*\n/\nHINT\(EV3\(<<'END_HINT'\)\);\n/g;
+ $evalString =~ s/ENDDOCUMENT.*/ENDDOCUMENT();/s; # remove text after ENDDOCUMENT
+
+ $evalString =~ s/\\/\\\\/g; # \ can't be used for escapes because of TeX conflict
+ $evalString =~ s/~~/\\/g; # use ~~ as escape instead, use # for comments
+ $evalString;
+}
+sub default_postprocess_code {
+ my $evalString_ref = shift;
+ $evalString_ref;
+}
+
sub dumpvar {
my ($packageName) = @_;
|