File Coverage

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

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