blob: a2d12df494e52764cc49230b525f8fce6cfcdc24 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#!/usr/bin/env perl
use 5.010;
use open qw< :encoding(utf8) :std >;
use autodie;
use strict;
use File::Find;
use Encode::Guess;
# Check if POD files contain non-ASCII without specifying
# =encoding. Run it as:
## perl Porting/checkpodencoding.pl
find(
{
wanted => \&finder,
no_chdir => 1,
},
'.'
);
sub finder {
my $file = $_;
return if -B $file;
open my $fh, '<', $file;
#say STDERR "Checking $file";
next if
# Test cases
$file ~~ m[Pod-Simple/t];
my ($in_pod, $has_encoding, @non_ascii);
FILE: while (my $line = <$fh>) {
chomp $line;
if ($line ~~ /^=[a-z]+/) {
$in_pod = 1;
}
if ($in_pod) {
if ($line ~~ /^=encoding (\S+)/) {
$has_encoding = 1;
last FILE;
} elsif ($line ~~ /[^[:ascii:]]/) {
my $encoding = guess_encoding($line);
push @non_ascii => {
num => $.,
line => $line,
encoding => (ref $encoding ? "$encoding->{Name}?" : 'unknown!'),
};
}
}
if ($line ~~ /^=cut/) {
$in_pod = 0;
}
}
if (@non_ascii and not $has_encoding) {
say "$file:";
$DB::single = 1;
for (@non_ascii) {
say " $_->{num} ($_->{encoding}): $_->{line}";
}
}
}
|