File Coverage

blib/lib/Encode/Unicode/Japanese.pm
Criterion Covered Total %
statement 37 37 100.0
branch 2 4 50.0
condition n/a
subroutine 8 8 100.0
pod 3 3 100.0
total 50 52 96.1


line stmt bran cond sub pod time code
1             ## ----------------------------------------------------------------------------
2             # Encode::Unicode::Japanese
3             # -----------------------------------------------------------------------------
4             # Mastering programmed by YAMASHINA Hio
5             #
6             # Copyright 2006 YAMASHINA Hio
7             # -----------------------------------------------------------------------------
8             # $Id: Japanese.pm 4 2006-06-15 15:49:18Z hio $
9             # -----------------------------------------------------------------------------
10             package Encode::Unicode::Japanese;
11 3     3   88164 use warnings;
  3         7  
  3         89  
12 3     3   18 use strict;
  3         6  
  3         213  
13             our $VERSION = '0.02';
14              
15 3     3   14 use base qw(Encode::Encoding);
  3         17  
  3         3370  
16 3     3   51039 use Unicode::Japanese;
  3         15236  
  3         18  
17              
18             &_register_encodings;
19              
20             1;
21              
22             # -----------------------------------------------------------------------------
23             # Methods.
24             # -----------------------------------------------------------------------------
25              
26             sub new($ $)
27             {
28 36     36 1 49 my $pkg = shift;
29 36         161 my $code = shift;
30 36         255 bless \$code, $pkg;
31             }
32              
33             sub encode($$;$)
34             {
35 9     9 1 8019 my ($obj, $str, $chk) = @_;
36 9         31 my $code = $$obj;
37 9         323 $str = Unicode::Japanese->new($str)->conv($code);
38 9 50       32020 $_[1] = '' if $chk; # this is what in-place edit means
39 9         35 return $str;
40             }
41              
42             sub decode($$;$)
43             {
44 6     6 1 4648 my ($obj, $buf, $chk) = @_;
45 6         12 my $code = $$obj;
46 6         28 $buf = Unicode::Japanese->new($buf, $code)->getu;
47 6 50       2048 $_[1] = '' if $chk; # this is what in-place edit means
48 6         294 return $buf;
49             }
50              
51             sub _register_encodings
52             {
53             # triple Japanese encodings.
54             #
55 3     3   19 __PACKAGE__->new("sjis")->Define('unijp-sjis');
56 3         65 __PACKAGE__->new("euc" )->Define('unijp-euc');
57 3         52 __PACKAGE__->new("jis" )->Define('unijp-jis');
58            
59             # emoji, and variation.
60             # ex. imode, imode1, imode2
61 3         38 __PACKAGE__->new("sjis-imode" )->Define("unijp-sjis-imode");
62 3         40 __PACKAGE__->new("sjis-imode1")->Define("unijp-sjis-imode1");
63 3         38 __PACKAGE__->new("sjis-imode2")->Define("unijp-sjis-imode2");
64 3         41 __PACKAGE__->new("sjis-jsky" )->Define("unijp-sjis-jsky");
65 3         37 __PACKAGE__->new("sjis-jsky1")->Define("unijp-sjis-jsky1");
66 3         38 __PACKAGE__->new("sjis-jsky2")->Define("unijp-sjis-jsky2");
67            
68             # unicode variation.
69 3         46 __PACKAGE__->new('utf8' )->Define("unijp-utf8");
70 3         56 __PACKAGE__->new('ucs2' )->Define("unijp-ucs2");
71 3         38 __PACKAGE__->new('utf16')->Define("unijp-utf16");
72             }
73              
74             __END__