———————package
MARC::Charset::ArabicBasic;
=head1 NAME
MARC::Charset::ArabicBasic - A MARC8/UTF8 mapping for Basic Arabic.
=head1 SYNOPSIS
use MARC::Charset::ArabicBasic;
my $cs = MARC::Charset::ArabicBasic->new();
=head1 DESCRIPTION
MARC::Charset::ArabicBasic provides a mapping between the MARC8 Basic Arabic
character set and Unicode(UTF8). It is typically used by MARC::Charset, so you
probably don't need to use this yourself.
=head1 METHODS
=cut
use
strict;
my
%marc2unicode
;
=head1
The constructor, which will return you a MARC::Charset::ArabicBasic object.
=cut
sub
new {
my
$class
=
shift
;
return
bless
{},
ref
(
$class
) ||
$class
;
}
=head1 name()
Returns the name of the character set.
=cut
sub
name {
return
(
'Arabic-Basic'
);
}
=head1 lookup()
The workhorse method that does the lookup. Pass it an a character and you'll
get back the UTF8 character.
=cut
sub
lookup {
my
(
$self
,
$char
) =
@_
;
return
(
$marc2unicode
{
$char
});
}
=head1 combining()
Pass it a character and you'll get back a true value (1) if the character is
a combining character, and false (undef) if it is not.
=cut
sub
combining {
return
(
undef
);
}
=head1 getCharSize()
Returns the number of bytes in each character of this character set.
=cut
sub
getCharSize {
return
(CHAR_SIZE);
}
%marc2unicode
= (
chr
(0x21)=>
chr
(0x0021),
#EXCLAMATION MARK
chr
(0x22)=>
chr
(0x0022),
#QUOTATION MARK
chr
(0x23)=>
chr
(0x0023),
#NUMBER SIGN
chr
(0x24)=>
chr
(0x0024),
#DOLLAR SIGN
chr
(0x25)=>
chr
(0x066A),
#PERCENT SIGN / ARABIC PERCENT SIGN
chr
(0x26)=>
chr
(0x0026),
#AMPERSAND
chr
(0x27)=>
chr
(0x0027),
#APOSTROPHE
chr
(0x28)=>
chr
(0x0028),
#OPENING PARENTHESIS / LEFT PARENTHESIS
chr
(0x29)=>
chr
(0x0029),
#CLOSING PARENTHESIS / RIGHT PARENTHESIS
chr
(0x2A)=>
chr
(0x066D),
#ASTERISK / ARABIC FIVE POINTED STAR
chr
(0x2B)=>
chr
(0x002B),
#PLUS SIGN
chr
(0x2C)=>
chr
(0x060C),
#ARABIC COMMA
chr
(0x2D)=>
chr
(0x002D),
#HYPHEN-MINUS
chr
(0x2E)=>
chr
(0x002E),
#PERIOD, DECIMAL POINT / FULL STOP
chr
(0x2F)=>
chr
(0x002F),
#SLASH / SOLIDUS
chr
(0x30)=>
chr
(0x0660),
#ARABIC-INDIC DIGIT ZERO
chr
(0x31)=>
chr
(0x0661),
#ARABIC-INDIC DIGIT ONE
chr
(0x32)=>
chr
(0x0662),
#ARABIC-INDIC DIGIT TWO
chr
(0x33)=>
chr
(0x0663),
#ARABIC-INDIC DIGIT THREE
chr
(0x34)=>
chr
(0x0664),
#ARABIC-INDIC DIGIT FOUR
chr
(0x35)=>
chr
(0x0665),
#ARABIC-INDIC DIGIT FIVE
chr
(0x36)=>
chr
(0x0666),
#ARABIC-INDIC DIGIT SIX
chr
(0x37)=>
chr
(0x0667),
#ARABIC-INDIC DIGIT SEVEN
chr
(0x38)=>
chr
(0x0668),
#ARABIC-INDIC DIGIT EIGHT
chr
(0x39)=>
chr
(0x0669),
#ARABIC-INDIC DIGIT NINE
chr
(0x3A)=>
chr
(0x003A),
#COLON
chr
(0x3B)=>
chr
(0x061B),
#ARABIC SEMICOLON
chr
(0x3C)=>
chr
(0x003C),
#LESS-THAN SIGN
chr
(0x3D)=>
chr
(0x003D),
#EQUALS SIGN
chr
(0x3E)=>
chr
(0x003E),
#GREATER-THAN SIGN
chr
(0x3F)=>
chr
(0x061F),
#ARABIC QUESTION MARK
chr
(0x41)=>
chr
(0x0621),
#HAMZAH / ARABIC LETTER HAMZA
chr
(0x42)=>
chr
(0x0622),
#ARABIC LETTER ALEF WITH MADDA ABOVE
chr
(0x43)=>
chr
(0x0623),
#ARABIC LETTER ALEF WITH HAMZA ABOVE
chr
(0x44)=>
chr
(0x0624),
#ARABIC LETTER WAW WITH HAMZA ABOVE
chr
(0x45)=>
chr
(0x0625),
#ARABIC LETTER ALEF WITH HAMZA BELOW
chr
(0x46)=>
chr
(0x0626),
#ARABIC LETTER YEH WITH HAMZA ABOVE
chr
(0x47)=>
chr
(0x0627),
#ARABIC LETTER ALEF
chr
(0x48)=>
chr
(0x0628),
#ARABIC LETTER BEH
chr
(0x49)=>
chr
(0x0629),
#ARABIC LETTER TEH MARBUTA
chr
(0x4A)=>
chr
(0x062A),
#ARABIC LETTER TEH
chr
(0x4B)=>
chr
(0x062B),
#ARABIC LETTER THEH
chr
(0x4C)=>
chr
(0x062C),
#ARABIC LETTER JEEM
chr
(0x4D)=>
chr
(0x062D),
#ARABIC LETTER HAH
chr
(0x4E)=>
chr
(0x062E),
#ARABIC LETTER KHAH
chr
(0x4F)=>
chr
(0x062F),
#ARABIC LETTER DAL
chr
(0x50)=>
chr
(0x0630),
#ARABIC LETTER THAL
chr
(0x51)=>
chr
(0x0631),
#ARABIC LETTER REH
chr
(0x52)=>
chr
(0x0632),
#ARABIC LETTER ZAIN
chr
(0x53)=>
chr
(0x0633),
#ARABIC LETTER SEEN
chr
(0x54)=>
chr
(0x0634),
#ARABIC LETTER SHEEN
chr
(0x55)=>
chr
(0x0635),
#ARABIC LETTER SAD
chr
(0x56)=>
chr
(0x0636),
#ARABIC LETTER DAD
chr
(0x57)=>
chr
(0x0637),
#ARABIC LETTER TAH
chr
(0x58)=>
chr
(0x0638),
#ARABIC LETTER ZAH
chr
(0x59)=>
chr
(0x0639),
#ARABIC LETTER AIN
chr
(0x5A)=>
chr
(0x063A),
#ARABIC LETTER GHAIN
chr
(0x5B)=>
chr
(0x005B),
#OPENING SQUARE BRACKET / LEFT SQUARE BRACKET
chr
(0x5D)=>
chr
(0x005D),
#CLOSING SQUARE BRACKET / RIGHT SQUARE BRACKET
chr
(0x60)=>
chr
(0x0640),
#ARABIC TATWEEL
chr
(0x61)=>
chr
(0x0641),
#ARABIC LETTER FEH
chr
(0x62)=>
chr
(0x0642),
#ARABIC LETTER QAF
chr
(0x63)=>
chr
(0x0643),
#ARABIC LETTER KAF
chr
(0x64)=>
chr
(0x0644),
#ARABIC LETTER LAM
chr
(0x65)=>
chr
(0x0645),
#ARABIC LETTER MEEM
chr
(0x66)=>
chr
(0x0646),
#ARABIC LETTER NOON
chr
(0x67)=>
chr
(0x0647),
#ARABIC LETTER HEH
chr
(0x68)=>
chr
(0x0648),
#ARABIC LETTER WAW
chr
(0x69)=>
chr
(0x0649),
#ARABIC LETTER ALEF MAKSURA
chr
(0x6A)=>
chr
(0x064A),
#ARABIC LETTER YEH
chr
(0x6B)=>
chr
(0x064B),
#ARABIC FATHATAN
chr
(0x6C)=>
chr
(0x064C),
#ARABIC DAMMATAN
chr
(0x6D)=>
chr
(0x064D),
#ARABIC KASRATAN
chr
(0x6E)=>
chr
(0x064E),
#ARABIC FATHA
chr
(0x6F)=>
chr
(0x064F),
#ARABIC DAMMA
chr
(0x70)=>
chr
(0x0650),
#ARABIC KASRA
chr
(0x71)=>
chr
(0x0651),
#ARABIC SHADDA
chr
(0x72)=>
chr
(0x0652),
#ARABIC SUKUN
chr
(0x73)=>
chr
(0x0671),
#ARABIC LETTER ALEF WASLA
chr
(0x74)=>
chr
(0x0670),
#ARABIC LETTER SUPERSCRIPT ALEF
chr
(0x78)=>
chr
(0x066C),
#ARABIC THOUSANDS SEPARATOR
chr
(0x79)=>
chr
(0x201D),
#RIGHT DOUBLE QUOTATION MARK
chr
(0x7A)=>
chr
(0x201C),
#LEFT DOUBLE QUOTATION MARK
);
=head1 TODO
=over 4
=item *
=back
=head1 AUTHORS
=over 4
=item Ed Summers <ehs@pobox.com>
=back
=cut
1;