Skip to content

Commit 3756e61

Browse files
committed
Handle loadMacros arguments in the form q{ } and related.
1 parent 6cc64fb commit 3756e61

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

bin/pg-critic.pl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ =head1 OPTIONS
3131

3232
use Mojo::File qw(curfile);
3333
use Getopt::Long;
34-
use Data::Dumper;
34+
use Mojo::Util qw(dumper);
3535

3636
use lib curfile->dirname->dirname . '/lib';
3737

@@ -88,9 +88,9 @@ ($prob)
8888
for (grep { $_ =~ /\.pg$/ } @ARGV) {
8989
say $_ if $verbose;
9090
my $features = analyzePGfile($_);
91-
# print Dumper $features if $verbose;
91+
say dumper $features if $verbose;
9292
if ($score) {
93-
print Dumper scoreProblem($features) if $verbose;
93+
say dumper scoreProblem($features) if $verbose;
9494
}
9595
}
9696

lib/WeBWorK/PG/PGProblemCritic.pm

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,3 @@
1-
package WeBWorK::PG::PGProblemCritic;
2-
use parent qw(Exporter);
3-
4-
use strict;
5-
use warnings;
6-
use experimental 'signatures';
7-
use feature 'say';
8-
9-
use Mojo::File qw(curfile);
10-
use Data::Dumper;
11-
12-
our @EXPORT_OK = qw(analyzePGfile analyzePGcode getDeprecatedMacros);
131

142
=head1 NAME
153
@@ -75,6 +63,19 @@ folder.
7563
7664
=cut
7765

66+
package WeBWorK::PG::PGProblemCritic;
67+
use parent qw(Exporter);
68+
69+
use strict;
70+
use warnings;
71+
use experimental 'signatures';
72+
use feature 'say';
73+
74+
use Mojo::File qw(curfile);
75+
use Mojo::Util qw(dumper);
76+
77+
our @EXPORT_OK = qw(analyzePGfile analyzePGcode getDeprecatedMacros);
78+
7879
sub analyzePGcode ($code) {
7980
# default flags for presence of features in a PG problem
8081
my $features = {
@@ -144,9 +145,17 @@ sub analyzePGcode ($code) {
144145
$line =~ s/(.*)#.*/$1/;
145146
$macros .= $line;
146147
}
147-
# Split by commas and pull out the quotes.
148-
# TODO: handle cases with loadMacros(qw/macro1.pl macro2.pl/);
149-
my @macros = map {s/['"\s]//gr} split(/\s*,\s*/, $macros =~ s/loadMacros\((.*)\)\;$/$1/r);
148+
149+
$macros =~ s/^\s*loadMacros\(\s*(.*)\s*\);\s*$/$1/;
150+
my @macros;
151+
# if the arguments of loadMacros is q[qw] form, handle this.
152+
if ($macros =~ /^q[qw]?[\(\[\{\/](.*)[\)\]\/\}]$/) {
153+
$macros =~ s/^q[qw]?[\(\[\{\/](.*)[\)\]\/\}]$/$1/;
154+
@macros = grep { $_ ne '' } split(/\s+/, $macros);
155+
} else { # arguments are strings separated by commas.
156+
@macros = map {s/['"\s]//gr} split(/\s*,\s*/, $macros =~ s/loadMacros\((.*)\)\;$/$1/r);
157+
}
158+
150159
$features->{macros} = \@macros;
151160
for my $macro (@macros) {
152161
push(@{ $features->{deprecated_macros} }, $macro) if (grep { $macro eq $_ } @$all_deprecated_macros);

0 commit comments

Comments
 (0)