| File: | expect-collator.pl |
| Coverage: | 90.7% |
| line | stmt | bran | cond | sub | time | code |
|---|---|---|---|---|---|---|
| 1 | #!/usr/bin/env -S perl | |||||
| 2 | ||||||
| 3 | 3 3 3 | 3137 3 1619 | use warnings; | |||
| 4 | ||||||
| 5 | 3 | 132123 | my ($collated, $notes) = @ARGV; | |||
| 6 | 3 | 2 | my @words; | |||
| 7 | 3 | 41 | open EXPECT, '<', $collated; | |||
| 8 | 3 | 25 | while (<EXPECT>) { | |||
| 9 | 4 | 4 | chomp; | |||
| 10 | 4 | 9 | next unless /(.*) \((.*)\)/; | |||
| 11 | 2 | 3 | my ($key, $list) = ($1, $2); | |||
| 12 | 2 | 3 | my @variants = split /, /, $list; | |||
| 13 | 2 4 | 1 5 | @variants = grep { $_ ne $key } @variants; | |||
| 14 | 2 | 6 | push @words, @variants; | |||
| 15 | } | |||||
| 16 | 3 | 8 | close EXPECT; | |||
| 17 | 3 2 | 1 4 | my $pattern = '\`(?:'.join('|', map { quotemeta($_) } @words).')`'; | |||
| 18 | 3 | 22 | open SOURCES, '<', $notes; | |||
| 19 | 3 | 25 | while (<SOURCES>) { | |||
| 20 | 8 | 21 | if ($_ =~ /$pattern/) { | |||
| 21 | 2 | 1 | $print = 0; | |||
| 22 | 2 | 5 | $print = 1 if s/not a recognized word/ignored by check-spelling because another more general variant is also in expect/; | |||
| 23 | 2 | 4 | $print = 1 if s/unrecognized-spelling/ignored-expect-variant/; | |||
| 24 | 2 | 2 | next unless $print; | |||
| 25 | } else { | |||||
| 26 | 6 | 12 | next unless /\(((?:\w+-)+\w+)\)$/; | |||
| 27 | 6 | 18 | next if $1 eq 'unrecognized-spelling'; | |||
| 28 | } | |||||
| 29 | 4 | 10 | print; | |||
| 30 | } | |||||
| 31 | 3 | 0 | close SOURCES; | |||