File Coverage

File:lib/Yukki/TextUtil.pm
Coverage:88.1%

linestmtbrancondsubpodtimecode
1package Yukki::TextUtil;
2
3
4
4
29
8
use v5.24;
4
4
4
4
10
5
16
use utf8;
5
6
4
4
4
1113
22747
46
use Encode ();
7
4
4
4
3377
70212
79
use IO::Prompter ();
8
4
4
4
21
5
132
use Path::Tiny;
9
4
4
4
13
6
30
use YAML ();
10
11
4
4
4
13
5
24
use namespace::clean;
12
13# ABSTRACT: Utilities to help make everything happy UTF-8
14
15 - 19
=head1 DESCRIPTION

Yukki aims at fully supporting UTF-8 in everything it does. Please report any bugs you find. This library exports tools used internally to help make sure that input is decoded from UTF-8 on the way in and encoded into UTF-8 on the way out.

=cut
20
21
4
1479
use Sub::Exporter -setup => {
22    exports => [ qw(
23        dump_file
24        load_file
25        prompt
26    ) ],
27
4
4
1847
39
};
28
29 - 37
=head1 SUBROUTINES

=head2 dump_file

    dump_file($file, $data);

This is pretty much identical in purpose to L<YAML/DumpFile>, but encodes to UTF-8 on the way out.

=cut
38
39sub dump_file {
40
0
1
0
    my ($file, $data) = @_;
41
0
0
    path($file)->spew_utf8(YAML::Dump($data));
42}
43
44 - 50
=head2 load_file

    $data = load_file($file);

This is similar to L<YAML/LoadFile>, but decodes from UTF-8 while reading input.

=cut
51
52sub load_file {
53
4
1
4157
    my ($file) = @_;
54
4
14
    YAML::Load(path($file)->slurp_utf8);
55}
56
57 - 63
=head2 prompt

    $value = prompt(...);

This is similar to L<IO::Prompter/prompt>, but decodes UTF-8 in the input.

=cut
64
65sub prompt {
66
0
1
    Encode::decode('UTF-8', IO::Prompter::prompt(@_));
67}
68
691;