Log Message:
-----------
The \s regular expression was matching newlines, and so newlines
around BEGIN_TEXT/END_TEXT (and other such constructs) were being
removed. This is OK when the problem runs correctly, but when an
error message is produced, the line number of the error report will
not correspond to the proper line number in the code listing.
Solution is to use [ \t] instead.
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.22
retrieving revision 1.23
diff -Llib/WeBWorK/PG/Translator.pm -Llib/WeBWorK/PG/Translator.pm -u -r1.22 -r1.23
--- lib/WeBWorK/PG/Translator.pm
+++ lib/WeBWorK/PG/Translator.pm
@@ -908,7 +908,6 @@
=cut
-
my ($PG_PROBLEM_TEXT_REF, $PG_HEADER_TEXT_REF, $PG_ANSWER_HASH_REF, $PG_FLAGS_REF)
=$safe_cmpt->reval(" $evalString");
@@ -1621,26 +1620,26 @@
}
-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 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\(EV3P\(<<'END_TEXT'\)\);\n/g;
- $evalString =~ s/\n\s*BEGIN_SOLUTION[\s;]*\n/\nSOLUTION\(EV3P\(<<'END_SOLUTION'\)\);\n/g;
- $evalString =~ s/\n\s*BEGIN_HINT[\s;]*\n/\nHINT\(EV3P\(<<'END_HINT'\)\);\n/g;
+ $evalString =~ s/^[ \t]*END_TEXT[ \t;]*$/END_TEXT/gm;
+ $evalString =~ s/^[ \t]*END_SOLUTION[ \t;]*$/END_SOLUTION/mg;
+ $evalString =~ s/^[ \t]*END_HINT[ \t;]*$/END_HINT/mg;
+ $evalString =~ s/^[ \t]*BEGIN_TEXT[ \t;]*$/TEXT\(EV3P\(<<'END_TEXT'\)\);/mg;
+ $evalString =~ s/^[ \t]*BEGIN_SOLUTION[ \t;]*$/SOLUTION\(EV3P\(<<'END_SOLUTION'\)\);/mg;
+ $evalString =~ s/^[ \t]*BEGIN_HINT[ \t;]*$/HINT\(EV3P\(<<'END_HINT'\)\);/mg;
$evalString =~ s/ENDDOCUMENT.*/ENDDOCUMENT();/s; # remove text after ENDDOCUMENT
$evalString =~ s/\\/\\\\/g; # \ can't be used for escapes because of TeX conflict
|