—##---------------------------------------------------------------------------##
## File:
## $Id: CharMaps.pm,v 1.2 2003/03/05 22:17:15 ehood Exp $
## Author:
## Earl Hood earl@earlhood.com
## Description:
## POD after __END__
##---------------------------------------------------------------------------##
## Copyright (C) 1997-2002 Earl Hood, earl@earlhood.com
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA
##---------------------------------------------------------------------------##
package
MHonArc::CharMaps;
use
strict;
use
Carp;
use
Exporter ();
@ISA
=
qw( Exporter )
;
@EXPORT
=
qw( $HTMLSpecials %HTMLSpecials )
;
# The following two variables need to be in sync. The hash version should
# have contain mappings for each character in the scalar version.
$HTMLSpecials
=
"\x22\x26\x3C\x3E"
;
%HTMLSpecials
= (
"\x22"
=>
'"'
,
# ISOnum : Quotation mark
"\x26"
=>
'&'
,
# ISOnum : Ampersand
"\x3C"
=>
'<'
,
# ISOnum : Less-than sign
"\x3E"
=>
'>'
,
# ISOnum : Greater-than sign
);
sub
new {
my
$self
= { };
my
$mod
=
shift
;
# Name of module
my
$tbl
=
shift
;
# Table of charsets to map files
my
$class
=
ref
(
$mod
) ||
$mod
;
$self
->{
'_maps'
} = { };
# Loaded maps
$self
->{
'_tbl'
} =
$tbl
;
# charsets -> map files table
bless
$self
,
$class
;
$self
;
}
sub
set_map {
my
$self
=
shift
;
my
$charset
=
shift
;
my
$map
=
shift
;
my
$old_map
=
$self
->{
'_maps'
}{
$charset
} ||
undef
;
$self
->{
'_maps'
}{
$charset
} =
$map
;
$old_map
;
}
sub
get_map {
my
$self
=
shift
;
my
$charset
=
shift
;
my
$map
=
$self
->{
'_maps'
}{
$charset
};
return
$map
if
defined
(
$map
);
my
$file
=
$self
->{
'_tbl'
}{
$charset
};
if
(!
defined
(
$file
)) {
carp
'Warning: Unknown charset: '
,
$charset
,
"\n"
;
$map
=
$self
->{
'_maps'
}{
$charset
} = { };
}
else
{
delete
$INC
{
$file
};
eval
{
$map
=
$self
->{
'_maps'
}{
$charset
} =
require
$file
;
};
if
($@) {
carp
'Warning: '
, $@,
"\n"
;
$map
=
$self
->{
'_maps'
}{
$charset
} = { };
}
}
$map
;
}
##---------------------------------------------------------------------------##
1;
__END__
=head1 SYNOPSIS
use MHonArc::CharMaps;
my %map_tbl = (
charset1 => 'charset1_file.pm',
charset2 => 'charset2_file.pm',
#...
charsetN => 'charsetN_file.pm',
);
my $char_maps = MHonArc::CharMaps->new(\%map_tbl);
my $map = $char_maps->get_map('charset1');
=head1 DESCRIPTION
MHonArc::CharMaps provides management for character mapping tables.
=head1 VERSION
$Id: CharMaps.pm,v 1.2 2003/03/05 22:17:15 ehood Exp $
=head1 AUTHOR
Earl Hood, earl@earlhood.com
MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only
under the terms of the GNU General Public License, which may be found in
the MHonArc distribution.
=cut