The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use 5.008001;
use utf8;
use strict;
use warnings;

# This module is used when testing Locale::KeyedText.
# It contains some utility methods used by the various LKT_*.t scripts.

package t_LKT_Util;

###########################################################################

sub new_message {
    my (undef, $msg_key, $msg_vars) = @_;
    return Locale::KeyedText::Message->new({
        'msg_key'  => $msg_key,
        'msg_vars' => $msg_vars,
    });
}

###########################################################################

sub new_translator {
    my (undef, $set_names, $member_names) = @_;
    return Locale::KeyedText::Translator->new({
        'set_names'    => $set_names,
        'member_names' => $member_names,
    });
}

###########################################################################

sub message {
    my (undef, $detail) = @_;
    print "# $detail\n";
}

###########################################################################

sub serialize {
    my (undef, $input, $is_key) = @_;
    return join q{},
        !defined $input
            ? 'undef' . ($is_key ? ' => ' : ', ')
        : ref $input eq 'ARRAY'
            ? ( '[ ', ( map {
                  ( t_LKT_Util->serialize( $_ ) )
              } @{$input} ), '], ' )
        : ref $input eq 'HASH'
            ? ( '{ ', ( map {
                  ( t_LKT_Util->serialize( $_, 1 ),
                    t_LKT_Util->serialize( $input->{$_} ) )
              } sort keys %{$input} ), '}, ' )
        :
              ($input eq q{} ? 'q{}' : qq{'$input'})
              . ($is_key ? ' => ' : ', ')
        ;
}

###########################################################################

1;