home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Bezpecnost / lsti / lsti.exe / framework-2.5.exe / H2Z.pm < prev    next >
Text File  |  2005-01-27  |  5KB  |  175 lines

  1. #
  2. # $Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $
  3. #
  4.  
  5. package Encode::JP::H2Z;
  6.  
  7. use strict;
  8.  
  9. our $RCSID = q$Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $;
  10. our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
  11.  
  12. use Encode::CJKConstants qw(:all);
  13.  
  14. use vars qw(%_D2Z  $_PAT_D2Z
  15.         %_Z2D  $_PAT_Z2D
  16.         %_H2Z  $_PAT_H2Z
  17.         %_Z2H  $_PAT_Z2H);
  18.  
  19. %_H2Z = (
  20.      "\x8e\xa1"    =>    "\xa1\xa3",    #íú
  21.      "\x8e\xa2"    =>    "\xa1\xd6",    #í╓
  22.      "\x8e\xa3"    =>    "\xa1\xd7",    #í╫
  23.      "\x8e\xa4"    =>    "\xa1\xa2",    #íó
  24.      "\x8e\xa5"    =>    "\xa1\xa6",    #íª
  25.      "\x8e\xa6"    =>    "\xa5\xf2",    #Ñ≥
  26.      "\x8e\xa7"    =>    "\xa5\xa1",    #Ñí
  27.      "\x8e\xa8"    =>    "\xa5\xa3",    #Ñú
  28.      "\x8e\xa9"    =>    "\xa5\xa5",    #ÑÑ
  29.      "\x8e\xaa"    =>    "\xa5\xa7",    #Ѻ
  30.      "\x8e\xab"    =>    "\xa5\xa9",    #Ñ⌐
  31.      "\x8e\xac"    =>    "\xa5\xe3",    #Ñπ
  32.      "\x8e\xad"    =>    "\xa5\xe5",    #Ñσ
  33.      "\x8e\xae"    =>    "\xa5\xe7",    #Ñτ
  34.      "\x8e\xaf"    =>    "\xa5\xc3",    #Ñ├
  35.      "\x8e\xb0"    =>    "\xa1\xbc",    #í╝
  36.      "\x8e\xb1"    =>    "\xa5\xa2",    #Ñó
  37.      "\x8e\xb2"    =>    "\xa5\xa4",    #Ññ
  38.      "\x8e\xb3"    =>    "\xa5\xa6",    #Ѫ
  39.      "\x8e\xb4"    =>    "\xa5\xa8",    #Ñ¿
  40.      "\x8e\xb5"    =>    "\xa5\xaa",    #Ѭ
  41.      "\x8e\xb6"    =>    "\xa5\xab",    #ѽ
  42.      "\x8e\xb7"    =>    "\xa5\xad",    #Ñ¡
  43.      "\x8e\xb8"    =>    "\xa5\xaf",    #Ñ»
  44.      "\x8e\xb9"    =>    "\xa5\xb1",    #Ñ▒
  45.      "\x8e\xba"    =>    "\xa5\xb3",    #Ñ│
  46.      "\x8e\xbb"    =>    "\xa5\xb5",    #Ñ╡
  47.      "\x8e\xbc"    =>    "\xa5\xb7",    #Ñ╖
  48.      "\x8e\xbd"    =>    "\xa5\xb9",    #Ñ╣
  49.      "\x8e\xbe"    =>    "\xa5\xbb",    #Ñ╗
  50.      "\x8e\xbf"    =>    "\xa5\xbd",    #Ñ╜
  51.      "\x8e\xc0"    =>    "\xa5\xbf",    #Ñ┐
  52.      "\x8e\xc1"    =>    "\xa5\xc1",    #Ñ┴
  53.      "\x8e\xc2"    =>    "\xa5\xc4",    #Ñ─
  54.      "\x8e\xc3"    =>    "\xa5\xc6",    #Ñ╞
  55.      "\x8e\xc4"    =>    "\xa5\xc8",    #Ñ╚
  56.      "\x8e\xc5"    =>    "\xa5\xca",    #Ñ╩
  57.      "\x8e\xc6"    =>    "\xa5\xcb",    #Ñ╦
  58.      "\x8e\xc7"    =>    "\xa5\xcc",    #Ñ╠
  59.      "\x8e\xc8"    =>    "\xa5\xcd",    #Ñ═
  60.      "\x8e\xc9"    =>    "\xa5\xce",    #Ñ╬
  61.      "\x8e\xca"    =>    "\xa5\xcf",    #Ñ╧
  62.      "\x8e\xcb"    =>    "\xa5\xd2",    #Ñ╥
  63.      "\x8e\xcc"    =>    "\xa5\xd5",    #Ñ╒
  64.      "\x8e\xcd"    =>    "\xa5\xd8",    #Ñ╪
  65.      "\x8e\xce"    =>    "\xa5\xdb",    #Ñ█
  66.      "\x8e\xcf"    =>    "\xa5\xde",    #Ñ▐
  67.      "\x8e\xd0"    =>    "\xa5\xdf",    #Ñ▀
  68.      "\x8e\xd1"    =>    "\xa5\xe0",    #Ñα
  69.      "\x8e\xd2"    =>    "\xa5\xe1",    #Ñß
  70.      "\x8e\xd3"    =>    "\xa5\xe2",    #ÑΓ
  71.      "\x8e\xd4"    =>    "\xa5\xe4",    #ÑΣ
  72.      "\x8e\xd5"    =>    "\xa5\xe6",    #ѵ
  73.      "\x8e\xd6"    =>    "\xa5\xe8",    #ÑΦ
  74.      "\x8e\xd7"    =>    "\xa5\xe9",    #ÑΘ
  75.      "\x8e\xd8"    =>    "\xa5\xea",    #ÑΩ
  76.      "\x8e\xd9"    =>    "\xa5\xeb",    #Ñδ
  77.      "\x8e\xda"    =>    "\xa5\xec",    #Ñ∞
  78.      "\x8e\xdb"    =>    "\xa5\xed",    #Ñφ
  79.      "\x8e\xdc"    =>    "\xa5\xef",    #Ñ∩
  80.      "\x8e\xdd"    =>    "\xa5\xf3",    #Ñ≤
  81.      "\x8e\xde"    =>    "\xa1\xab",    #í½
  82.      "\x8e\xdf"    =>    "\xa1\xac",    #í¼
  83. );
  84.  
  85. %_D2Z = (
  86.      "\x8e\xb6\x8e\xde"    =>    "\xa5\xac",    #Ѽ
  87.      "\x8e\xb7\x8e\xde"    =>    "\xa5\xae",    #Ñ«
  88.      "\x8e\xb8\x8e\xde"    =>    "\xa5\xb0",    #Ñ░
  89.      "\x8e\xb9\x8e\xde"    =>    "\xa5\xb2",    #Ñ▓
  90.      "\x8e\xba\x8e\xde"    =>    "\xa5\xb4",    #Ñ┤
  91.      "\x8e\xbb\x8e\xde"    =>    "\xa5\xb6",    #Ñ╢
  92.      "\x8e\xbc\x8e\xde"    =>    "\xa5\xb8",    #Ñ╕
  93.      "\x8e\xbd\x8e\xde"    =>    "\xa5\xba",    #Ñ║
  94.      "\x8e\xbe\x8e\xde"    =>    "\xa5\xbc",    #Ñ╝
  95.      "\x8e\xbf\x8e\xde"    =>    "\xa5\xbe",    #Ñ╛
  96.      "\x8e\xc0\x8e\xde"    =>    "\xa5\xc0",    #Ñ└
  97.      "\x8e\xc1\x8e\xde"    =>    "\xa5\xc2",    #Ñ┬
  98.      "\x8e\xc2\x8e\xde"    =>    "\xa5\xc5",    #Ñ┼
  99.      "\x8e\xc3\x8e\xde"    =>    "\xa5\xc7",    #Ñ╟
  100.      "\x8e\xc4\x8e\xde"    =>    "\xa5\xc9",    #Ñ╔
  101.      "\x8e\xca\x8e\xde"    =>    "\xa5\xd0",    #Ñ╨
  102.      "\x8e\xcb\x8e\xde"    =>    "\xa5\xd3",    #Ñ╙
  103.      "\x8e\xcc\x8e\xde"    =>    "\xa5\xd6",    #Ñ╓
  104.      "\x8e\xcd\x8e\xde"    =>    "\xa5\xd9",    #Ñ┘
  105.      "\x8e\xce\x8e\xde"    =>    "\xa5\xdc",    #Ñ▄
  106.      "\x8e\xca\x8e\xdf"    =>    "\xa5\xd1",    #Ñ╤
  107.      "\x8e\xcb\x8e\xdf"    =>    "\xa5\xd4",    #Ñ╘
  108.      "\x8e\xcc\x8e\xdf"    =>    "\xa5\xd7",    #Ñ╫
  109.      "\x8e\xcd\x8e\xdf"    =>    "\xa5\xda",    #Ñ┌
  110.      "\x8e\xce\x8e\xdf"    =>    "\xa5\xdd",    #Ñ▌
  111.      "\x8e\xb3\x8e\xde"     =>      "\xa5\xf4",     #Ñ⌠
  112. );
  113.  
  114. # init only once;
  115.  
  116. #$_PAT_D2Z = join("|", keys %_D2Z);
  117. #$_PAT_H2Z = join("|", keys %_H2Z);
  118.  
  119. %_Z2H = reverse %_H2Z;
  120. %_Z2D = reverse %_D2Z;
  121.  
  122. #$_PAT_Z2H    = join("|", keys %_Z2H);
  123. #$_PAT_Z2D    = join("|", keys %_Z2D);
  124.  
  125. sub h2z {
  126.     no warnings qw(uninitialized);
  127.     my $r_str = shift;
  128.     my ($keep_dakuten) = @_;
  129.     my $n = 0;
  130.     unless ($keep_dakuten){
  131.     $n = (
  132.           $$r_str =~ s(
  133.                ($RE{EUC_KANA}
  134.                 (?:\x8e[\xde\xdf])?)
  135.                ){
  136.           my $str = $1;
  137.           $_D2Z{$str} || $_H2Z{$str} || 
  138.               # in case dakuten and handakuten are side-by-side!
  139.               $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)};
  140.           }eogx
  141.           );
  142.     }else{
  143.     $n = (
  144.           $$r_str =~ s(
  145.                ($RE{EUC_KANA})
  146.                ){
  147.           $_H2Z{$1};
  148.           }eogx
  149.           );
  150.     }
  151.     $n;
  152. }
  153.  
  154. sub z2h {
  155.     my $r_str = shift;
  156.     my $n = (
  157.          $$r_str =~ s(
  158.               ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA})
  159.               ){
  160.          $_Z2D{$1} || $_Z2H{$1} || $1;
  161.          }eogx
  162.          );
  163.     $n;
  164. }
  165.  
  166. 1;
  167. __END__
  168.  
  169.  
  170. =head1 NAME
  171.  
  172. Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*
  173.  
  174. =cut
  175.