/[cvs]/nfo/perl/libs/Data/Mungle/Transform/Encode.pm
ViewVC logotype

Annotation of /nfo/perl/libs/Data/Mungle/Transform/Encode.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Thu Feb 20 20:48:36 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
Changes since 1.2: +29 -25 lines
renamed methods

1 joko 1.3 ## -------------------------------------------------------------------------
2     ## $Id: Encode.pm,v 1.2 2002/12/05 13:57:22 joko Exp $
3     ## -------------------------------------------------------------------------
4     ## $Log: Encode.pm,v $
5     ## Revision 1.2 2002/12/05 13:57:22 joko
6     ## + now able to export 'scalar2utf8'
7     ## + comments
8     ##
9     ## Revision 1.1 2002/11/29 04:49:20 joko
10     ## + initial check-in
11     ##
12     ## Revision 1.1 2002/10/10 03:26:00 cvsjoko
13     ## + new
14     ## -------------------------------------------------------------------------
15 joko 1.1
16    
17     package Data::Transform::Encode;
18    
19     use strict;
20     use warnings;
21    
22     require Exporter;
23     our @ISA = qw( Exporter );
24 joko 1.3 our @EXPORT_OK = qw( &latin_to_utf8 &latin_to_utf8_scalar &utf8_to_latin &utf8_to_latin_scalar );
25    
26 joko 1.1
27     use Unicode::String qw(utf8 latin1);
28    
29 joko 1.2 # TODO: refactor using Greg London's "Iterate" from CPAN
30 joko 1.3 sub latin_to_utf8 {
31 joko 1.1 my $vref = shift;
32     if (ref $vref eq 'HASH') {
33     foreach (keys %{$vref}) {
34     if ((ref $vref->{$_}) =~ m/ARRAY|HASH/) {
35 joko 1.3 latin_to_utf8($vref->{$_});
36 joko 1.1 } else {
37 joko 1.3 $vref->{$_} = latin_to_utf8_scalar($vref->{$_});
38 joko 1.1 }
39     }
40     } elsif (ref $vref eq 'ARRAY') {
41     foreach (@{$vref}) {
42     if (ref $_ ne 'SCALAR') {
43 joko 1.3 latin_to_utf8($_);
44 joko 1.1 } else {
45 joko 1.3 $_ = latin_to_utf8_scalar($_);
46 joko 1.1 }
47     }
48     }
49    
50     }
51    
52 joko 1.3 sub latin_to_utf8_scalar {
53 joko 1.1 my $scalar = shift;
54     if ($scalar) {
55     my $u = latin1($scalar);
56     return $u->utf8;
57     }
58     }
59    
60 joko 1.2 # TODO: refactor using Greg London's "Iterate" from CPAN
61 joko 1.3 sub utf8_to_latin {
62 joko 1.1 my $vref = shift;
63     if (ref $vref eq 'HASH') {
64     foreach (keys %{$vref}) {
65     if ((ref $vref->{$_}) =~ m/ARRAY|HASH/) {
66 joko 1.3 utf8_to_latin($vref->{$_});
67 joko 1.1 } else {
68 joko 1.3 $vref->{$_} = utf8_to_latin_scalar($vref->{$_});
69 joko 1.1 }
70     }
71     } elsif (ref $vref eq 'ARRAY') {
72     foreach (@{$vref}) {
73     if (ref $_ ne 'SCALAR') {
74 joko 1.3 utf8_to_latin($_);
75 joko 1.1 } else {
76 joko 1.3 $_ = utf8_to_latin_scalar($_);
77 joko 1.1 }
78     }
79     }
80    
81     }
82    
83 joko 1.3 sub utf8_to_latin_scalar {
84 joko 1.1 my $scalar = shift;
85     if ($scalar) {
86     my $u = utf8($scalar);
87     return $u->latin1;
88     }
89     }
90    
91     1;
92 joko 1.3 __END__

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed