package Number::Phone::UK::Data;

use warnings;
use strict;

use Number::Phone;

our $VERSION = "2.0001";

use DBM::Deep;
use File::ShareDir;

my $file = Number::Phone::_find_data_file('Number-Phone-UK-Data.db');

my $slurped = 0;
my $db;
my $pid = -1;

sub db {
    return $db if($slurped);
    if(!$db || $pid != $$) {
        # we want to re-open the DB if we've forked, because of
        # https://github.com/DrHyde/perl-modules-Number-Phone/issues/72
        $pid = $$;
        open(my $ro_fh, '<:bytes', $file) || die(__PACKAGE__.": can't open $file: $!\n");
        $db = DBM::Deep->new(fh => $ro_fh);
    }
    return $db
}

sub slurp {
    return if($slurped);
    $db = _slurp(db());
    $slurped++;
}

sub _slurp {
    my $db = shift;
    if(!ref($db)) {
        return $db
    } else {
        return { map {
            $_ => _slurp($db->{$_})
        } keys(%{$db}) };
    }
}

1;
