File Coverage

blib/lib/Data/Petitcom/CharTBL.pm
Criterion Covered Total %
statement 29 29 100.0
branch 3 4 75.0
condition n/a
subroutine 8 8 100.0
pod 0 2 0.0
total 40 43 93.0


line stmt bran cond sub pod time code
1             package Data::Petitcom::CharTBL;
2              
3 4     4   25 use strict;
  4         24  
  4         136  
4 4     4   23 use warnings;
  4         8  
  4         115  
5 4     4   2161 use utf8;
  4         24  
  4         27  
6              
7 4     4   134 use parent qw { Exporter };
  4         8  
  4         31  
8             our @EXPORT = qw{};
9             our @EXPORT_OK = qw{ load_char dump_char };
10              
11 4         570 use constant GRAPHIC_CHAR => [
12             [ 0, " " ], [ 1, "А" ], [ 2, "Б" ], [ 3, "В" ], [ 4, "Г" ], [ 5, "Д" ], [ 6, "Е" ], [ 7, "Ё" ],
13             [ 8, "Ж" ], [ 9, "З" ], [ 10, "И" ], [ 11, "Й" ], [ 12, "К" ], [ 13, "\n" ], [ 14, "М" ], [ 15, "Н" ],
14             [ 16, "♪" ], [ 17, "О" ], [ 18, "н" ], [ 19, "П" ], [ 20, "Р" ], [ 21, "С" ], [ 22, "Т" ], [ 23, "У" ],
15             [ 24, "Ф" ], [ 25, "Х" ], [ 26, "◎" ], [ 27, "Ц" ], [ 28, "→" ], [ 29, "←" ], [ 30, "↑" ], [ 31, "↓" ],
16             [ 128, "◇" ], [ 129, "━" ], [ 130, "┃" ], [ 131, "┏" ], [ 132, "┓" ], [ 133, "┛" ], [ 134, "┗" ], [ 135, "┣" ],
17             [ 136, "┳" ], [ 137, "┫" ], [ 138, "┻" ], [ 139, "╋" ], [ 140, "┠" ], [ 141, "┯" ], [ 142, "┨" ], [ 143, "┷" ],
18             [ 144, "┴" ], [ 145, "┬" ], [ 146, "├" ], [ 147, "┼" ], [ 148, "┤" ], [ 149, "─" ], [ 150, "│" ], [ 151, "┿" ],
19             [ 152, "┌" ], [ 153, "┐" ], [ 154, "└" ], [ 155, "┘" ], [ 156, "┝" ], [ 157, "┰" ], [ 158, "┥" ], [ 159, "┸" ],
20             [ 224, "■" ], [ 225, "●" ], [ 226, "▲" ], [ 227, "▼" ], [ 228, "□" ], [ 229, "○" ], [ 230, "△" ], [ 231, "▽" ],
21             [ 232, "Ч" ], [ 233, "Ш" ], [ 234, "Щ" ], [ 235, "Ъ" ], [ 236, "Ы" ], [ 237, "Ь" ], [ 238, "Э" ], [ 239, "Ю" ],
22             [ 240, "Я" ], [ 241, "а" ], [ 242, "б" ], [ 243, "в" ], [ 244, "г" ], [ 245, "д" ], [ 246, "е" ], [ 247, "ё" ],
23             [ 248, "ж" ], [ 249, "з" ], [ 250, "и" ], [ 251, "й" ], [ 252, "к" ], [ 253, "л" ], [ 254, "м" ], [ 255, "╂" ]
24 4     4   3301 ];
  4         9  
25              
26 4     4   22 use Encode;
  4         11  
  4         1239  
27             my $enc = Encode::find_encoding('cp932');
28              
29             sub load_char {
30 40     40 0 53 my $byte = shift;
31 40         245 my $dec_code = unpack "C", $byte;
32 40         52 for my $tpl ( @{ GRAPHIC_CHAR() } ) {
  40         74  
33 3676 100       21283 return $tpl->[1] if ( $tpl->[0] == $dec_code );
34             }
35 38         437 return $enc->decode($byte);
36             }
37              
38             sub dump_char {
39 40     40 0 200 my $char = shift;
40 40         47 for my $tpl ( @{ GRAPHIC_CHAR() } ) {
  40         231  
41 3840 50       11729 return pack( "C*", $tpl->[0] ) if ( $char eq $tpl->[1] );
42             }
43 40         222 return $enc->encode($char);
44             }
45              
46             1;