|
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); |
13 | 1 |
|
14 | 2 | =head1 NAME
|
15 | 3 |
|
@@ -75,6 +63,19 @@ folder.
|
75 | 63 |
|
76 | 64 | =cut
|
77 | 65 |
|
| 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 | + |
78 | 79 | sub analyzePGcode ($code) {
|
79 | 80 | # default flags for presence of features in a PG problem
|
80 | 81 | my $features = {
|
@@ -144,9 +145,17 @@ sub analyzePGcode ($code) {
|
144 | 145 | $line =~ s/(.*)#.*/$1/;
|
145 | 146 | $macros .= $line;
|
146 | 147 | }
|
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 | + |
150 | 159 | $features->{macros} = \@macros;
|
151 | 160 | for my $macro (@macros) {
|
152 | 161 | push(@{ $features->{deprecated_macros} }, $macro) if (grep { $macro eq $_ } @$all_deprecated_macros);
|
|
0 commit comments