File Coverage

blib/lib/WWW/Webrobot/MyEncode.pm
Criterion Covered Total %
statement 25 49 51.0
branch 5 28 17.8
condition 1 4 25.0
subroutine 7 9 77.7
pod 2 4 50.0
total 40 94 42.5


line stmt bran cond sub pod time code
1             package WWW::Webrobot::MyEncode;
2 2     2   10 use strict;
  2         4  
  2         67  
3 2     2   9 use warnings;
  2         4  
  2         61  
4              
5             # Author: Stefan Trcek
6             # Copyright(c) 2004 ABAS Software AG
7              
8 2     2   10 use Exporter;
  2         2  
  2         91  
9 2     2   11 use base qw/Exporter/;
  2         21  
  2         382  
10             our @EXPORT_OK = qw/has_Encode legacy_mode octet_to_internal_utf8 octet_to_encoding/;
11              
12              
13              
14             my $_has_Encode;
15             my $_legacy_mode;
16             BEGIN {
17 2     2   3 eval {require Encode};
  2         1961  
18 2 50       23655 $_has_Encode = $@ ? 0 : 1;
19 2 50       861 if (!$_has_Encode) {
20 0         0 warn "Missing 'Encode': Data may be improperly encoded.";
21              
22             # check for Unicode::Lite
23 0         0 eval {require Unicode::Lite};
  0         0  
24 0 0       0 $_legacy_mode = $@ ? 0 : 1;
25 0 0       0 warn "Missing 'Unicode::Lite': Can't encode." if !$_legacy_mode;
26             #$_legacy_mode = 0;
27             }
28             }
29              
30 4     4 0 29 sub has_Encode { $_has_Encode }
31 0     0 0 0 sub legacy_mode { $_legacy_mode }
32              
33             sub octet_to_internal_utf8 {
34 4     4 1 10 my ($encoding, $value) = @_;
35 4   50     11 $encoding ||= "ascii";
36 4 50       11 return $value if !$value;
37 4 50       9 if ($_has_Encode) {
    0          
38 4         7 my $ret;
39 4         5 eval { $ret = Encode::decode($encoding, $value) };
  4         17  
40 4 50       281 return $@ ? "" : $ret;
41             }
42             elsif ($_legacy_mode) {
43 0           my $ret;
44 0           eval { $ret = Unicode::Lite::convert($encoding, "latin1", $value) };
  0            
45 0 0         return $@ ? $value : $ret;
46             }
47             else {
48 0           return $value;
49             }
50             }
51              
52             sub octet_to_encoding {
53 0     0 1   my ($encoding, $value) = @_;
54 0   0       $encoding ||= "ascii";
55 0 0         return $value if !$value;
56 0 0         if ($_has_Encode) {
    0          
57 0           my $ret;
58 0           eval { $ret = Encode::encode($encoding, $value) };
  0            
59 0 0         return $@ ? $value : $ret;
60             }
61             elsif ($_legacy_mode) {
62 0           my $ret;
63 0           eval { $ret = Unicode::Lite::convert("utf8", $encoding, $value) };
  0            
64 0 0         return $@ ? "" : $ret;
65             }
66             else {
67 0           return $value;
68             }
69             }
70              
71              
72             1;
73              
74              
75             =head1 NAME
76              
77             WWW::Webrobot::MyEncode - Subroutines for 'Encode'
78              
79             =head1 SYNOPSIS
80              
81             octet_to_internal_utf8("iso-8859-1", "a text");
82             octet_to_encoding("iso-8859-1", "a text");
83              
84             =head1 DESCRIPTION
85              
86             Data conversion
87              
88             =head1 METHODS
89              
90             =over
91              
92             =item octet_to_internal_utf8($encoding, $text)
93              
94             Assume C<$text> is in octet form, but is a valid encoding C<$encoding>
95             and convert it to Perls internal form (utf-8).
96              
97             =item octet_to_encoding($encoding, $text)
98              
99             Assume C<$text> is in octet form an convert it to encoding C<$encoding>.
100              
101             =back
102              
103             =cut