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