File Coverage

File:lib/CheckSpelling/CheckPattern.pm
Coverage:94.7%

linestmtbrancondsubtimecode
1#! -*-perl-*-
2
3package CheckSpelling::CheckPattern;
4
5
2
2
2
108230
2
249
use CheckSpelling::Util;
6
7sub process_line {
8
5
1938
    my ($line) = @_;
9
5
6
    chomp $line;
10
5
9
    return ($line, '') if $line =~ /^#/;
11
5
10
    return ($line, '') unless $line =~ /./;
12
5
11
    my $regex_pattern = qr{^(.*?) in regex; marked by <-- HERE in m/(.*) <-- HERE.*$};
13
5
5
    my $warning;
14    local $SIG{__WARN__} = sub {
15
4
27
        $warning = $_[0];
16
5
19
    };
17
5
5
5
54
    if (eval {qr/$line/} && ($warning eq '')) {
18
2
9
        return ($line, '');
19    }
20
3
6
    $warning = $@ unless $warning;
21
3
10
    $warning =~ s/(.*?)\n.*/$1/m;
22
3
3
    my $err = $warning;
23
3
3
    chomp $err;
24
3
15
    $err =~ s{$regex_pattern}{$2};
25
3
5
    my $code = $1;
26
3
5
    my $start = $+[2] - $-[2];
27
3
3
    my $end = $start + 1;
28
3
6
    my $wrapped = CheckSpelling::Util::wrap_in_backticks($err);
29
3
18
    return ("^\$\n", "$start ... $end, Warning - $code: $wrapped. (bad-regex)\n");
30}
31
321;