Initial Commit
This commit is contained in:
86
database/perl/lib/Pod/Simple/TranscodeDumb.pm
Normal file
86
database/perl/lib/Pod/Simple/TranscodeDumb.pm
Normal file
@@ -0,0 +1,86 @@
|
||||
|
||||
require 5;
|
||||
## This module is to be use()'d only by Pod::Simple::Transcode
|
||||
|
||||
package Pod::Simple::TranscodeDumb;
|
||||
use strict;
|
||||
use vars qw($VERSION %Supported);
|
||||
$VERSION = '3.42';
|
||||
# This module basically pretends it knows how to transcode, except
|
||||
# only for null-transcodings! We use this when Encode isn't
|
||||
# available.
|
||||
|
||||
%Supported = (
|
||||
'ascii' => 1,
|
||||
'ascii-ctrl' => 1,
|
||||
'iso-8859-1' => 1,
|
||||
'cp1252' => 1,
|
||||
'null' => 1,
|
||||
'latin1' => 1,
|
||||
'latin-1' => 1,
|
||||
%Supported,
|
||||
);
|
||||
|
||||
sub is_dumb {1}
|
||||
sub is_smart {0}
|
||||
|
||||
sub all_encodings {
|
||||
return sort keys %Supported;
|
||||
}
|
||||
|
||||
sub encoding_is_available {
|
||||
return exists $Supported{lc $_[1]};
|
||||
}
|
||||
|
||||
sub encmodver {
|
||||
return __PACKAGE__ . " v" .($VERSION || '?');
|
||||
}
|
||||
|
||||
sub make_transcoder {
|
||||
my ($e) = $_[1];
|
||||
die "WHAT ENCODING!?!?" unless $e;
|
||||
# No-op for all but CP1252.
|
||||
return sub {;} if $e !~ /^cp-?1252$/i;
|
||||
|
||||
# Replace CP1252 nerbles with their ASCII equivalents.
|
||||
return sub {
|
||||
# Copied from Encode::ZapCP1252.
|
||||
my %ascii_for = (
|
||||
# http://en.wikipedia.org/wiki/Windows-1252
|
||||
"\x80" => 'e', # EURO SIGN
|
||||
"\x82" => ',', # SINGLE LOW-9 QUOTATION MARK
|
||||
"\x83" => 'f', # LATIN SMALL LETTER F WITH HOOK
|
||||
"\x84" => ',,', # DOUBLE LOW-9 QUOTATION MARK
|
||||
"\x85" => '...', # HORIZONTAL ELLIPSIS
|
||||
"\x86" => '+', # DAGGER
|
||||
"\x87" => '++', # DOUBLE DAGGER
|
||||
"\x88" => '^', # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
"\x89" => '%', # PER MILLE SIGN
|
||||
"\x8a" => 'S', # LATIN CAPITAL LETTER S WITH CARON
|
||||
"\x8b" => '<', # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
"\x8c" => 'OE', # LATIN CAPITAL LIGATURE OE
|
||||
"\x8e" => 'Z', # LATIN CAPITAL LETTER Z WITH CARON
|
||||
"\x91" => "'", # LEFT SINGLE QUOTATION MARK
|
||||
"\x92" => "'", # RIGHT SINGLE QUOTATION MARK
|
||||
"\x93" => '"', # LEFT DOUBLE QUOTATION MARK
|
||||
"\x94" => '"', # RIGHT DOUBLE QUOTATION MARK
|
||||
"\x95" => '*', # BULLET
|
||||
"\x96" => '-', # EN DASH
|
||||
"\x97" => '--', # EM DASH
|
||||
"\x98" => '~', # SMALL TILDE
|
||||
"\x99" => '(tm)', # TRADE MARK SIGN
|
||||
"\x9a" => 's', # LATIN SMALL LETTER S WITH CARON
|
||||
"\x9b" => '>', # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
"\x9c" => 'oe', # LATIN SMALL LIGATURE OE
|
||||
"\x9e" => 'z', # LATIN SMALL LETTER Z WITH CARON
|
||||
"\x9f" => 'Y', # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
);
|
||||
|
||||
s{([\x80-\x9f])}{$ascii_for{$1} || $1}emxsg for @_;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user