File Coverage: lib/Yukki/TextUtil.pm

# File Coverage

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

line | stmt | bran | cond | sub | pod | time | code
--- | --- | --- | --- | --- | --- | --- | ---
1 |  |  |  |  |  |  | package Yukki::TextUtil;
2 |
3 | 4 4 |  |  | 4 |  | 29 8 | use v5.24;
4 | 4 4 4 |  |  | 4 |  | 10 5 16 | use utf8;
5 |
6 | 4 4 4 |  |  | 4 |  | 1113 22747 46 | use Encode ();
7 | 4 4 4 |  |  | 4 |  | 3377 70212 79 | use IO::Prompter ();
8 | 4 4 4 |  |  | 4 |  | 21 5 132 | use Path::Tiny;
9 | 4 4 4 |  |  | 4 |  | 13 6 30 | use YAML ();
10 |
11 | 4 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 |  |  | 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 |
39 |  |  |  |  |  |  | sub dump_file {
40 | 0 |  |  | 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 |
52 |  |  |  |  |  |  | sub load_file {
53 | 4 |  |  | 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 |
65 |  |  |  |  |  |  | sub prompt {
66 | 0 |  |  | 0 | 1 |  | Encode::decode('UTF-8', IO::Prompter::prompt(@_));
67 |  |  |  |  |  |  | }
68 |
69 |  |  |  |  |  |  | 1;