The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package GeoIP2::Role::Record::HasNames;
{
  $GeoIP2::Role::Record::HasNames::VERSION = '0.040000';
}
BEGIN {
  $GeoIP2::Role::Record::HasNames::AUTHORITY = 'cpan:TJMATHER';
}

use strict;
use warnings;

use GeoIP2::Types qw( MaybeStr NameHashRef );
use List::Util qw( first );
use Sub::Quote qw( quote_sub );

use Moo::Role;

with 'GeoIP2::Role::HasLanguages';

has name => (
    is      => 'ro',
    isa     => MaybeStr,
    lazy    => 1,
    builder => '_build_name',
);

has names => (
    is      => 'ro',
    isa     => NameHashRef,
    default => quote_sub(q{ {} }),
);

sub _build_name {
    my $self = shift;

    my $names = $self->names();

    my $lang = first { exists $names->{$_} } @{ $self->languages() };

    return unless $lang;
    return $names->{$lang};
}

1;