./bin/verify_countries.pl
#!/usr/bin/env perl
use Modern::Perl '2014';
use experimental 'switch', 'postderef';
use lib './lib';
use Path::Tiny;
use Data::Dump 'pp';
use Set::Tiny 'set';
use MGH_Biostat::TravEpi::SimpleRulesBase::Countries;
my $canon_countries = set(keys MGH_Biostat::TravEpi::SimpleRulesBase::Countries::_load_country_map()->%*);
my $trans_countries;
{
my $file = path('templates/dynamic.strings')->openr_utf8;
my $current_stanza = '';
my $keys = {};
while(<$file>) {
chomp;
next if m/^#/;
next unless m/\S/;
if (m/^\[(\w+)\]/) {
$current_stanza = $1;
next;
}
if ($current_stanza eq 'countries') {
my ($key, $rest) = split /\s*:\s*/, $_, 2;
$keys->{$key}++;
}
}
close($file);
$trans_countries = set(keys $keys->%*);
}
if ($canon_countries->is_equal($trans_countries)) {
say "Country sets are equal.";
}
else {
my $canon_only = $canon_countries->difference($trans_countries);
my $trans_only = $trans_countries->difference($canon_countries);
say "In master list only: " . join(', ' => sort $canon_only->members);
say "In translated list only: " . join(', ' => sort $trans_only->members);
}