1 2require 5; 3## This module is to be use()'d only by Pod::Simple::Transcode 4 5package Pod::Simple::TranscodeDumb; 6use strict; 7use vars qw($VERSION %Supported); 8$VERSION = '3.43'; 9# This module basically pretends it knows how to transcode, except 10# only for null-transcodings! We use this when Encode isn't 11# available. 12 13%Supported = ( 14 'ascii' => 1, 15 'ascii-ctrl' => 1, 16 'iso-8859-1' => 1, 17 'cp1252' => 1, 18 'null' => 1, 19 'latin1' => 1, 20 'latin-1' => 1, 21 %Supported, 22); 23 24sub is_dumb {1} 25sub is_smart {0} 26 27sub all_encodings { 28 return sort keys %Supported; 29} 30 31sub encoding_is_available { 32 return exists $Supported{lc $_[1]}; 33} 34 35sub encmodver { 36 return __PACKAGE__ . " v" .($VERSION || '?'); 37} 38 39sub make_transcoder { 40 my ($e) = $_[1]; 41 die "WHAT ENCODING!?!?" unless $e; 42 # No-op for all but CP1252. 43 return sub {;} if $e !~ /^cp-?1252$/i; 44 45 # Replace CP1252 nerbles with their ASCII equivalents. 46 return sub { 47 # Copied from Encode::ZapCP1252. 48 my %ascii_for = ( 49 # http://en.wikipedia.org/wiki/Windows-1252 50 "\x80" => 'e', # EURO SIGN 51 "\x82" => ',', # SINGLE LOW-9 QUOTATION MARK 52 "\x83" => 'f', # LATIN SMALL LETTER F WITH HOOK 53 "\x84" => ',,', # DOUBLE LOW-9 QUOTATION MARK 54 "\x85" => '...', # HORIZONTAL ELLIPSIS 55 "\x86" => '+', # DAGGER 56 "\x87" => '++', # DOUBLE DAGGER 57 "\x88" => '^', # MODIFIER LETTER CIRCUMFLEX ACCENT 58 "\x89" => '%', # PER MILLE SIGN 59 "\x8a" => 'S', # LATIN CAPITAL LETTER S WITH CARON 60 "\x8b" => '<', # SINGLE LEFT-POINTING ANGLE QUOTATION MARK 61 "\x8c" => 'OE', # LATIN CAPITAL LIGATURE OE 62 "\x8e" => 'Z', # LATIN CAPITAL LETTER Z WITH CARON 63 "\x91" => "'", # LEFT SINGLE QUOTATION MARK 64 "\x92" => "'", # RIGHT SINGLE QUOTATION MARK 65 "\x93" => '"', # LEFT DOUBLE QUOTATION MARK 66 "\x94" => '"', # RIGHT DOUBLE QUOTATION MARK 67 "\x95" => '*', # BULLET 68 "\x96" => '-', # EN DASH 69 "\x97" => '--', # EM DASH 70 "\x98" => '~', # SMALL TILDE 71 "\x99" => '(tm)', # TRADE MARK SIGN 72 "\x9a" => 's', # LATIN SMALL LETTER S WITH CARON 73 "\x9b" => '>', # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 74 "\x9c" => 'oe', # LATIN SMALL LIGATURE OE 75 "\x9e" => 'z', # LATIN SMALL LETTER Z WITH CARON 76 "\x9f" => 'Y', # LATIN CAPITAL LETTER Y WITH DIAERESIS 77 ); 78 79 s{([\x80-\x9f])}{$ascii_for{$1} || $1}emxsg for @_; 80 }; 81} 82 83 841; 85 86 87