Skip to content

Commit 9fcbea1

Browse files
committed
Switch to a better approach to using PGML::Parse.
This is much more minimal.
1 parent 64a6049 commit 9fcbea1

File tree

2 files changed

+9
-17
lines changed

2 files changed

+9
-17
lines changed

lib/WeBWorK/PG/Critic.pm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ use Mojo::File qw(path);
4949
use PPI;
5050
use Perl::Critic;
5151

52+
require WeBWorK::PG::Translator;
53+
5254
our @EXPORT_OK = qw(critiquePGFile critiquePGCode);
5355

5456
sub critiquePGCode ($code, $force = 0) {

lib/WeBWorK/PG/Critic/Utils.pm

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ use Env qw(PG_ROOT);
6161

6262
use lib curfile->dirname->dirname->dirname->dirname->dirname->child('lib');
6363

64-
require WeBWorK::PG::Translator;
64+
require Value;
6565

6666
our @EXPORT_OK = qw(getDeprecatedMacros parsePGMLBlock parseTextBlock);
6767

@@ -74,7 +74,12 @@ sub getDeprecatedMacros () {
7474
{ map { $_->basename => 1 } @{ path($PG_ROOT)->child('macros', 'deprecated')->list } };
7575
}
7676

77+
# Mock methods used by PGML.
7778
sub main::PG_restricted_eval ($code) { return $code; }
79+
sub main::loadMacros(@macros) { return; }
80+
sub main::Context() { return; }
81+
82+
do "$PG_ROOT/macros/core/PGML.pl";
7883

7984
sub walkPGMLTree ($block, $results //= {}) {
8085
for my $item (@{ $block->{stack} }) {
@@ -103,22 +108,7 @@ sub parsePGMLBlock (@lines) {
103108
my $sourceHash = md5_sum(encode('UTF-8', $source));
104109
return $processedBlocks{$sourceHash} if defined $processedBlocks{$sourceHash};
105110

106-
package main; ## no critic (Modules::ProhibitMultiplePackages)
107-
108-
require WeBWorK::PG::Environment;
109-
require WeBWorK::PG;
110-
require PGcore;
111-
require Parser;
112-
113-
$WeBWorK::PG::IO::pg_envir = WeBWorK::PG::Environment->new;
114-
%main::envir = %{ WeBWorK::PG::defineProblemEnvironment($WeBWorK::PG::IO::pg_envir) };
115-
116-
do "$ENV{PG_ROOT}/macros/PG.pl";
117-
118-
$main::PG = $main::PG = PGcore->new(\%main::envir);
119-
loadMacros('PGML.pl');
120-
121-
$PGML::warningsFatal = $PGML::warningsFatal = 1;
111+
PGML::ClearWarnings();
122112
my $parser = eval { PGML::Parse->new($source =~ s/\\\\/\\/gr) };
123113
return { errors => [$@] } if $@;
124114

0 commit comments

Comments
 (0)