File Coverage

File:check-dictionary.pl
Coverage:87.7%

linestmtbrancondsubtimecode
1#!/usr/bin/env perl
2
3
3
3
3
3183
2
74
use Cwd 'realpath';
4
3
3
3
5
2
28
use File::Spec;
5
3
3
3
371
3
49
use CheckSpelling::Util;
6
3
3
3
556
3
1859
use CheckSpelling::CheckDictionary;
7
8
3
3
3
3
81963
690
20
6
open WARNINGS, ">>:encoding(UTF-8)", CheckSpelling::Util::get_file_from_env('early_warnings', '/dev/stderr');
9
3
1192
$ARGV[0] =~ /^(.*)/;
10
3
4
my $file = $1;
11
3
34
open FILE, "<:encoding(UTF-8)", $file;
12
3
54
$/ = undef;
13
3
54
my $content = <FILE>;
14
3
36
close FILE;
15
3
127
open FILE, ">:encoding(UTF-8)", $file;
16
17
3
237
$file = File::Spec->abs2rel(realpath($file));
18
19
3
8
$ENV{comment_char} = '$^' unless $ENV{comment_char} =~ /\S/;
20
21
3
1
my $first_end = undef;
22
3
2
my $messy = 0;
23
3
3
$. = 0;
24
25
3
1
my $remainder;
26
3
10
if ($content !~ /(?:\r\n|\n|\r|\x0b|\f|\x85|\x{2028}|\x{2029})$/) {
27
0
0
    $remainder = $1 if $content =~ /([^\r\n\x0b\f\x85\x{2028}\x{2029}]+)$/;
28}
29
3
8
while ($content =~ s/([^\r\n\x0b\f\x85\x{2028}\x{2029}]*)(\r\n|\n|\r|\x0b|\f|\x85|\x{2028}|\x{2029})//m) {
30
13
10
    ++$.;
31
13
13
    my ($line, $end) = ($1, $2);
32
13
13
    unless (defined $first_end) {
33
3
2
        $first_end = $end;
34    } elsif ($end ne $first_end) {
35        print WARNINGS "$file:$.:$-[0] ... $+[0], Warning - Entry has inconsistent line endings. (unexpected-line-ending)\n";
36    }
37
13
10
    my ($line, $warning) = CheckSpelling::CheckDictionary::process_line($file, $line);
38
13
15
    if ($warning ne '') {
39
3
12
        print WARNINGS $warning;
40    } elsif ($line ne '') {
41
8
14
        print FILE "$line\n";
42    }
43}
44
3
4
if ($remainder ne '') {
45
0
0
    $remainder = CheckSpelling::CheckDictionary::process_line($file, $remainder);
46
0
0
    print FILE $remainder;
47}
48
3
0
close WARNINGS;