+;;; roman-to-kana.el --- Roman to Kana converter
+
+;; Copyright (C) 1996,1997 MORIOKA Tomohiko
+
+;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Version:
+;; $Id: roman-to-kana.el,v 0.7 1997/02/28 02:28:48 tmorioka Exp $
+;; Keywords: Roman-to-Kana, input, Japanese, mule
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'cl)
+
+(defvar roman-to-kana-translate-table 'hepburn)
+
+(defvar hepburn-roman-to-kana-translation-rule-alist
+ '(("a" . "\e$B$"\e(B")
+ ("i" . "\e$B$$\e(B")
+ ("u" . "\e$B$&\e(B")
+ ("e" . "\e$B$(\e(B")
+ ("o" . "\e$B$*\e(B")
+
+ ("ka" . "\e$B$+\e(B")("kka" . "\e$B$C$+\e(B")
+ ("ki" . "\e$B$-\e(B")("kki" . "\e$B$C$-\e(B")
+ ("ku" . "\e$B$/\e(B")("kku" . "\e$B$C$/\e(B")
+ ("ke" . "\e$B$1\e(B")("kke" . "\e$B$C$1\e(B")
+ ("ko" . "\e$B$3\e(B")("kko" . "\e$B$C$3\e(B")
+
+ ("ga" . "\e$B$,\e(B")("gga" . "\e$B$C$,\e(B")
+ ("gi" . "\e$B$.\e(B")("ggi" . "\e$B$C$.\e(B")
+ ("gu" . "\e$B$0\e(B")("ggu" . "\e$B$C$0\e(B")
+ ("ge" . "\e$B$2\e(B")("gge" . "\e$B$C$2\e(B")
+ ("go" . "\e$B$4\e(B")("ggo" . "\e$B$C$4\e(B")
+
+ ("kya" . "\e$B$-$c\e(B")("kkya" . "\e$B$C$-$c\e(B")
+ ("kyi" . "\e$B$-$#\e(B")("kkyi" . "\e$B$C$-$#\e(B")
+ ("kyu" . "\e$B$-$e\e(B")("kkyu" . "\e$B$C$-$e\e(B")
+ ("kye" . "\e$B$-$'\e(B")("kkye" . "\e$B$C$-$'\e(B")
+ ("kyo" . "\e$B$-$g\e(B")("kkyo" . "\e$B$C$-$g\e(B")
+
+ ("gya" . "\e$B$.$c\e(B")("ggya" . "\e$B$C$.$c\e(B")
+ ("gyi" . "\e$B$.$#\e(B")("ggyi" . "\e$B$C$.$#\e(B")
+ ("gyu" . "\e$B$.$e\e(B")("ggyu" . "\e$B$C$.$e\e(B")
+ ("gye" . "\e$B$.$'\e(B")("ggye" . "\e$B$C$.$'\e(B")
+ ("gyo" . "\e$B$.$g\e(B")("ggyo" . "\e$B$C$.$g\e(B")
+
+ ("sa" . "\e$B$5\e(B")("ssa" . "\e$B$C$5\e(B")
+ ("si" . "\e$B$7\e(B")("ssi" . "\e$B$C$7\e(B")
+ ("su" . "\e$B$9\e(B")("ssu" . "\e$B$C$9\e(B")
+ ("se" . "\e$B$;\e(B")("sse" . "\e$B$C$;\e(B")
+ ("so" . "\e$B$=\e(B")("sso" . "\e$B$C$=\e(B")
+
+ ("za" . "\e$B$6\e(B")("zza" . "\e$B$C$6\e(B")
+ ("zi" . "\e$B$8\e(B")("zzi" . "\e$B$C$8\e(B")
+ ("zu" . "\e$B$:\e(B")("zzu" . "\e$B$C$:\e(B")
+ ("ze" . "\e$B$<\e(B")("zze" . "\e$B$C$<\e(B")
+ ("zo" . "\e$B$>\e(B")("zzo" . "\e$B$C$>\e(B")
+
+ ("sha" . "\e$B$7$c\e(B")("ssha" . "\e$B$C$7$c\e(B")
+ ("shi" . "\e$B$7\e(B") ("sshi" . "\e$B$C$7\e(B")
+ ("shu" . "\e$B$7$e\e(B")("sshu" . "\e$B$C$7$e\e(B")
+ ("she" . "\e$B$7$'\e(B")("sshe" . "\e$B$C$7$'\e(B")
+ ("sho" . "\e$B$7$g\e(B")("ssho" . "\e$B$C$7$g\e(B")
+
+ ("ja" . "\e$B$8$c\e(B")("jja" . "\e$B$C$8$c\e(B")
+ ("ji" . "\e$B$8\e(B") ("jji" . "\e$B$C$8\e(B")
+ ("ju" . "\e$B$8$e\e(B")("jju" . "\e$B$C$8$e\e(B")
+ ("je" . "\e$B$8$'\e(B")("jje" . "\e$B$C$8$'\e(B")
+ ("jo" . "\e$B$8$g\e(B")("jjo" . "\e$B$C$8$g\e(B")
+
+ ("ta" . "\e$B$?\e(B") ("tta" . "\e$B$C$?\e(B")
+ ("ti" . "\e$B$F$#\e(B")("tti" . "\e$B$C$F$#\e(B")
+ ("tu" . "\e$B$H$%\e(B")("ttu" . "\e$B$C$H$%\e(B")
+ ("te" . "\e$B$F\e(B") ("tte" . "\e$B$C$F\e(B")
+ ("to" . "\e$B$H\e(B") ("tto" . "\e$B$C$H\e(B")
+
+ ("da" . "\e$B$@\e(B") ("dda" . "\e$B$C$@\e(B")
+ ("di" . "\e$B$G$#\e(B")("ddi" . "\e$B$C$G$#\e(B")
+ ("du" . "\e$B$E\e(B") ("ddu" . "\e$B$C$E\e(B")
+ ("de" . "\e$B$G\e(B") ("dde" . "\e$B$C$G\e(B")
+ ("do" . "\e$B$I\e(B") ("ddo" . "\e$B$C$I\e(B")
+
+ ("tsa" . "\e$B$D$!\e(B")("ttsa" . "\e$B$C$D$!\e(B")
+ ("tsi" . "\e$B$D$#\e(B")("ttsi" . "\e$B$C$D$#\e(B")
+ ("tsu" . "\e$B$D\e(B") ("ttsu" . "\e$B$C$D\e(B")
+ ("tse" . "\e$B$D$'\e(B")("ttse" . "\e$B$C$D$'\e(B")
+ ("tso" . "\e$B$D$)\e(B")("ttso" . "\e$B$C$D$)\e(B")
+
+ ("dza" . "\e$B$E$!\e(B")("ddza" . "\e$B$C$E$!\e(B")
+ ("dzi" . "\e$B$E$#\e(B")("ddzi" . "\e$B$C$E$#\e(B")
+ ("dzu" . "\e$B$E\e(B") ("ddzu" . "\e$B$C$E\e(B")
+ ("dze" . "\e$B$E$'\e(B")("ddze" . "\e$B$C$E$'\e(B")
+ ("dzo" . "\e$B$E$)\e(B")("ddzo" . "\e$B$C$E$)\e(B")
+
+ ("cha" . "\e$B$A$c\e(B")("ccha" . "\e$B$C$A$c\e(B")
+ ("chi" . "\e$B$A\e(B") ("cchi" . "\e$B$C$A\e(B")
+ ("chu" . "\e$B$A$e\e(B")("cchu" . "\e$B$C$A$e\e(B")
+ ("che" . "\e$B$A$'\e(B")("cche" . "\e$B$C$A$'\e(B")
+ ("cho" . "\e$B$A$g\e(B")("ccho" . "\e$B$C$A$g\e(B")
+
+ ("dja" . "\e$B$B$c\e(B")("ddja" . "\e$B$C$B$c\e(B")
+ ("dji" . "\e$B$B\e(B") ("ddji" . "\e$B$C$B\e(B")
+ ("dju" . "\e$B$B$e\e(B")("ddju" . "\e$B$C$B$e\e(B")
+ ("dje" . "\e$B$B$'\e(B")("ddje" . "\e$B$C$B$'\e(B")
+ ("djo" . "\e$B$B$g\e(B")("ddjo" . "\e$B$C$B$g\e(B")
+
+ ("na" . "\e$B$J\e(B")("nna" . "\e$B$s$J\e(B")
+ ("ni" . "\e$B$K\e(B")("nni" . "\e$B$s$K\e(B")
+ ("nu" . "\e$B$L\e(B")("nnu" . "\e$B$s$L\e(B")
+ ("ne" . "\e$B$M\e(B")("nne" . "\e$B$s$M\e(B")
+ ("no" . "\e$B$N\e(B")("nno" . "\e$B$s$N\e(B")
+
+ ("nya" . "\e$B$K$c\e(B")("nnya" . "\e$B$C$K$c\e(B")
+ ("nyi" . "\e$B$K$#\e(B")("nnyi" . "\e$B$C$K$#\e(B")
+ ("nyu" . "\e$B$K$e\e(B")("nnyu" . "\e$B$C$K$e\e(B")
+ ("nye" . "\e$B$K$'\e(B")("nnye" . "\e$B$C$K$'\e(B")
+ ("nyo" . "\e$B$K$g\e(B")("nnyo" . "\e$B$C$K$g\e(B")
+
+ ("ha" . "\e$B$O\e(B")("hha" . "\e$B$C$O\e(B")
+ ("hi" . "\e$B$R\e(B")("hhi" . "\e$B$C$R\e(B")
+ ("hu" . "\e$B$U\e(B")("hhu" . "\e$B$C$U\e(B")
+ ("he" . "\e$B$X\e(B")("hhe" . "\e$B$C$X\e(B")
+ ("ho" . "\e$B$[\e(B")("hho" . "\e$B$C$[\e(B")
+
+ ("pa" . "\e$B$Q\e(B")("ppa" . "\e$B$C$Q\e(B")
+ ("pi" . "\e$B$T\e(B")("ppi" . "\e$B$C$T\e(B")
+ ("pu" . "\e$B$W\e(B")("ppu" . "\e$B$C$W\e(B")
+ ("pe" . "\e$B$Z\e(B")("ppe" . "\e$B$C$Z\e(B")
+ ("po" . "\e$B$]\e(B")("ppo" . "\e$B$C$]\e(B")
+
+ ("ba" . "\e$B$P\e(B")("bba" . "\e$B$C$P\e(B")
+ ("bi" . "\e$B$S\e(B")("bbi" . "\e$B$C$S\e(B")
+ ("bu" . "\e$B$V\e(B")("bbu" . "\e$B$C$V\e(B")
+ ("be" . "\e$B$Y\e(B")("bbe" . "\e$B$C$Y\e(B")
+ ("bo" . "\e$B$\\e(B")("bbo" . "\e$B$C$\\e(B")
+
+ ("hya" . "\e$B$R$c\e(B")("hhya" . "\e$B$C$R$c\e(B")
+ ("hyi" . "\e$B$R$#\e(B")("hhyi" . "\e$B$C$R$#\e(B")
+ ("hyu" . "\e$B$R$e\e(B")("hhyu" . "\e$B$C$R$e\e(B")
+ ("hye" . "\e$B$R$'\e(B")("hhye" . "\e$B$C$R$'\e(B")
+ ("hyo" . "\e$B$R$g\e(B")("hhyo" . "\e$B$C$R$g\e(B")
+
+ ("pya" . "\e$B$T$c\e(B")("ppya" . "\e$B$C$T$c\e(B")
+ ("pyi" . "\e$B$T$#\e(B")("ppyi" . "\e$B$C$T$#\e(B")
+ ("pyu" . "\e$B$T$e\e(B")("ppyu" . "\e$B$C$T$e\e(B")
+ ("pye" . "\e$B$T$'\e(B")("ppye" . "\e$B$C$T$'\e(B")
+ ("pyo" . "\e$B$T$g\e(B")("ppyo" . "\e$B$C$T$g\e(B")
+
+ ("bya" . "\e$B$S$c\e(B")("bbya" . "\e$B$C$S$c\e(B")
+ ("byi" . "\e$B$S$#\e(B")("bbyi" . "\e$B$C$S$#\e(B")
+ ("byu" . "\e$B$S$e\e(B")("bbyu" . "\e$B$C$S$e\e(B")
+ ("bye" . "\e$B$S$'\e(B")("bbye" . "\e$B$C$S$'\e(B")
+ ("byo" . "\e$B$S$g\e(B")("bbyo" . "\e$B$C$S$g\e(B")
+
+ ("fa" . "\e$B$U$!\e(B")("ffa" . "\e$B$C$U$!\e(B")
+ ("fi" . "\e$B$U$#\e(B")("ffi" . "\e$B$C$U$#\e(B")
+ ("fu" . "\e$B$U\e(B") ("ffu" . "\e$B$C$U\e(B")
+ ("fe" . "\e$B$U$'\e(B")("ffe" . "\e$B$C$U$'\e(B")
+ ("fo" . "\e$B$U$)\e(B")("ffo" . "\e$B$C$U$)\e(B")
+
+ ("pfa" . "\e$B$W$!\e(B")("ppfa" . "\e$B$C$W$!\e(B")
+ ("pfi" . "\e$B$W$#\e(B")("ppfi" . "\e$B$C$W$#\e(B")
+ ("pfu" . "\e$B$W\e(B") ("ppfu" . "\e$B$C$W\e(B")
+ ("pfe" . "\e$B$W$'\e(B")("ppfe" . "\e$B$C$W$'\e(B")
+ ("pfo" . "\e$B$W$)\e(B")("ppfo" . "\e$B$C$W$)\e(B")
+
+ ("va" . "\e$B%t$!\e(B")("vva" . "\e$B$C%t$!\e(B")
+ ("vi" . "\e$B%t$#\e(B")("vvi" . "\e$B$C%t$#\e(B")
+ ("vu" . "\e$B%t\e(B") ("vvu" . "\e$B$C%t\e(B")
+ ("ve" . "\e$B%t$'\e(B")("vve" . "\e$B$C%t$'\e(B")
+ ("vo" . "\e$B%t$)\e(B")("vvo" . "\e$B$C%t$)\e(B")
+
+ ("ma" . "\e$B$^\e(B")("mma" . "\e$B$C$^\e(B")
+ ("mi" . "\e$B$_\e(B")("mmi" . "\e$B$C$_\e(B")
+ ("mu" . "\e$B$`\e(B")("mmu" . "\e$B$C$`\e(B")
+ ("me" . "\e$B$a\e(B")("mme" . "\e$B$C$a\e(B")
+ ("mo" . "\e$B$b\e(B")("mmo" . "\e$B$C$b\e(B")
+
+ ("mya" . "\e$B$_$c\e(B")("mmya" . "\e$B$C$_$c\e(B")
+ ("myi" . "\e$B$_$#\e(B")("mmyi" . "\e$B$C$_$#\e(B")
+ ("myu" . "\e$B$_$e\e(B")("mmyu" . "\e$B$C$_$e\e(B")
+ ("mye" . "\e$B$_$'\e(B")("mmye" . "\e$B$C$_$'\e(B")
+ ("myo" . "\e$B$_$g\e(B")("mmyo" . "\e$B$C$_$g\e(B")
+
+ ("ya" . "\e$B$d\e(B") ("yya" . "\e$B$C$d\e(B")
+ ("yi" . "\e$B$$\e(B") ("yyi" . "\e$B$C$$\e(B")
+ ("yu" . "\e$B$f\e(B") ("yyu" . "\e$B$C$f\e(B")
+ ("ye" . "\e$B$$$'\e(B")("yye" . "\e$B$C$$$'\e(B")
+ ("yo" . "\e$B$h\e(B") ("yyo" . "\e$B$C$h\e(B")
+
+ ("ra" . "\e$B$i\e(B")("rra" . "\e$B$C$i\e(B")
+ ("ri" . "\e$B$j\e(B")("rri" . "\e$B$C$j\e(B")
+ ("ru" . "\e$B$k\e(B")("rru" . "\e$B$C$k\e(B")
+ ("re" . "\e$B$l\e(B")("rre" . "\e$B$C$l\e(B")
+ ("ro" . "\e$B$m\e(B")("rro" . "\e$B$C$m\e(B")
+
+ ("rya" . "\e$B$j$c\e(B")("rrya" . "\e$B$C$j$c\e(B")
+ ("ryi" . "\e$B$j$#\e(B")("rryi" . "\e$B$C$j$#\e(B")
+ ("ryu" . "\e$B$j$e\e(B")("rryu" . "\e$B$C$j$e\e(B")
+ ("rye" . "\e$B$j$'\e(B")("rrye" . "\e$B$C$j$'\e(B")
+ ("ryo" . "\e$B$j$g\e(B")("rryo" . "\e$B$C$j$g\e(B")
+
+ ("wa" . "\e$B$o\e(B")("wwa" . "\e$B$C$o\e(B")
+ ("wi" . "\e$B$p\e(B")("wwi" . "\e$B$C$p\e(B")
+ ("wu" . "\e$B$&\e(B")("wwu" . "\e$B$C$&\e(B")
+ ("we" . "\e$B$q\e(B")("wwe" . "\e$B$C$q\e(B")
+ ("wo" . "\e$B$r\e(B")("wwo" . "\e$B$C$r\e(B")
+
+ ("n'" . "\e$B$s\e(B")
+ ("n" . "\e$B$s\e(B")
+ ("x" . "\e$B$s\e(B")
+ ("q" . "\e$B$C\e(B")
+
+ ("1" . "\e$B#1\e(B") ("2" . "\e$B#2\e(B") ("3" . "\e$B#3\e(B") ("4" . "\e$B#4\e(B") ("5" . "\e$B#5\e(B")
+ ("6" . "\e$B#6\e(B") ("7" . "\e$B#7\e(B") ("8" . "\e$B#8\e(B") ("9" . "\e$B#9\e(B") ("0" . "\e$B#0\e(B")
+
+ ("!" . "\e$B!*\e(B") ("@" . "\e$B!w\e(B") ("#" . "\e$B!t\e(B") ("$" . "\e$B!p\e(B") ("%" . "\e$B!s\e(B")
+ ("^" . "\e$B!0\e(B") ("&" . "\e$B!u\e(B") ("*" . "\e$B!v\e(B") ("(" . "\e$B!J\e(B") (")" . "\e$B!K\e(B")
+ ("-" . "\e$B!<\e(B") ("=" . "\e$B!a\e(B") ("`" . "\e$B!.\e(B") ("\\" . "\e$B!@\e(B")("|" . "\e$B!C\e(B")
+ ("_" . "\e$B!2\e(B") ("+" . "\e$B!\\e(B") ("~" . "\e$B!1\e(B") ("[" . "\e$B!V\e(B") ("]" . "\e$B!W\e(B")
+ ("{" . "\e$B!P\e(B") ("}" . "\e$B!Q\e(B") (":" . "\e$B!'\e(B") (";" . "\e$B!(\e(B") ("\"" . "\e$B!I\e(B")
+ ("'" . "\e$B!G\e(B") ("." . "\e$B!#\e(B") ("," . "\e$B!"\e(B") ("<" . "\e$B!c\e(B") (">" . "\e$B!d\e(B")
+ ("?" . "\e$B!)\e(B") ("/" . "\e$B!?\e(B")
+
+ ("z1" . "\e$B!{\e(B") ("z!" . "\e$B!|\e(B")
+ ("z2" . "\e$B"&\e(B") ("z@" . "\e$B"'\e(B")
+ ("z3" . "\e$B"$\e(B") ("z#" . "\e$B"%\e(B")
+ ("z4" . "\e$B""\e(B") ("z$" . "\e$B"#\e(B")
+ ("z5" . "\e$B!~\e(B") ("z%" . "\e$B"!\e(B")
+ ("z6" . "\e$B!y\e(B") ("z^" . "\e$B!z\e(B")
+ ("z7" . "\e$B!}\e(B") ("z&" . "\e$B!r\e(B")
+ ("z8" . "\e$B!q\e(B") ("z*" . "\e$B!_\e(B")
+ ("z9" . "\e$B!i\e(B") ("z(" . "\e$B!Z\e(B")
+ ("z0" . "\e$B!j\e(B") ("z)" . "\e$B![\e(B")
+ ("z-" . "\e$B!A\e(B") ("z_" . "\e$B!h\e(B")
+ ("z=" . "\e$B!b\e(B") ("z+" . "\e$B!^\e(B")
+ ("z\\" . "\e$B!o\e(B")("z|" . "\e$B!B\e(B")
+ ("z`" . "\e$B!-\e(B") ("z~" . "\e$B!/\e(B")
+
+ ("zq" . "\e$B!T\e(B") ("zQ" . "\e$B!R\e(B")
+ ("zw" . "\e$B!U\e(B") ("zW" . "\e$B!S\e(B")
+ ("zr" . "\e$B!9\e(B") ("zR" . "\e$B!8\e(B")
+ ("zt" . "\e$B!:\e(B") ("zT" . "\e$B!x\e(B")
+ ("zp" . "\e$B")\e(B") ("zP" . "\e$B",\e(B")
+ ("z[" . "\e$B!X\e(B") ("z{" . "\e$B!L\e(B")
+ ("z]" . "\e$B!Y\e(B") ("z}" . "\e$B!M\e(B")
+
+ ("zs" . "\e$B!3\e(B") ("zS" . "\e$B!4\e(B")
+ ("zd" . "\e$B!5\e(B") ("zD" . "\e$B!6\e(B")
+ ("zf" . "\e$B!7\e(B") ("zF" . "\e$B"*\e(B")
+ ("zg" . "\e$B!>\e(B") ("zG" . "\e$B!=\e(B")
+ ("zh" . "\e$B"+\e(B")
+ ("zj" . "\e$B"-\e(B")
+ ("zk" . "\e$B",\e(B")
+ ("zl" . "\e$B"*\e(B")
+ ("z;" . "\e$B!+\e(B") ("z:" . "\e$B!,\e(B")
+ ("z\'" . "\e$B!F\e(B")("z\"" . "\e$B!H\e(B")
+
+ ("zx" . ":-") ("zX" . ":-)")
+ ("zc" . "\e$B!;\e(B") ("zC" . "\e$B!n\e(B")
+ ("zv" . "\e$B"(\e(B") ("zV" . "\e$B!`\e(B")
+ ("zb" . "\e$B!k\e(B") ("zB" . "\e$B"+\e(B")
+ ("zn" . "\e$B!l\e(B") ("zN" . "\e$B"-\e(B")
+ ("zm" . "\e$B!m\e(B") ("zM" . "\e$B".\e(B")
+ ("z," . "\e$B!E\e(B") ("z<" . "\e$B!e\e(B")
+ ("z." . "\e$B!D\e(B") ("z>" . "\e$B!f\e(B")
+ ("z/" . "\e$B!&\e(B") ("z?" . "\e$B!g\e(B")
+
+ ("Z " . "\e$B!!\e(B") ("Z!" . "\e$B!*\e(B") ("Z\"" . "\e$B!m\e(B") ("Z#" . "\e$B!t\e(B")
+ ("Z$" . "\e$B!p\e(B") ("Z%" . "\e$B!s\e(B") ("Z&" . "\e$B!u\e(B") ("Z'" . "\e$B!l\e(B")
+ ("Z(" . "\e$B!J\e(B") ("Z)" . "\e$B!K\e(B") ("Z*" . "\e$B!v\e(B") ("Z+" . "\e$B!\\e(B")
+ ("Z," . "\e$B!$\e(B") ("Z-" . "\e$B!]\e(B") ("Z." . "\e$B!%\e(B") ("Z/" . "\e$B!?\e(B")
+ ("Z0" . "\e$B#0\e(B") ("Z1" . "\e$B#1\e(B") ("Z2" . "\e$B#2\e(B") ("Z3" . "\e$B#3\e(B")
+ ("Z4" . "\e$B#4\e(B") ("Z5" . "\e$B#5\e(B") ("Z6" . "\e$B#6\e(B") ("Z7" . "\e$B#7\e(B")
+ ("Z8" . "\e$B#8\e(B") ("Z9" . "\e$B#9\e(B") ("Z:" . "\e$B!'\e(B") ("Z;" . "\e$B!(\e(B")
+ ("Z<" . "\e$B!c\e(B") ("Z=" . "\e$B!a\e(B") ("Z>" . "\e$B!d\e(B") ("Z?" . "\e$B!)\e(B")
+ ("Z@" . "\e$B!w\e(B") ("ZA" . "\e$B#A\e(B") ("ZB" . "\e$B#B\e(B") ("ZC" . "\e$B#C\e(B")
+ ("ZD" . "\e$B#D\e(B") ("ZE" . "\e$B#E\e(B") ("ZF" . "\e$B#F\e(B") ("ZG" . "\e$B#G\e(B")
+ ("ZH" . "\e$B#H\e(B") ("ZI" . "\e$B#I\e(B") ("ZJ" . "\e$B#J\e(B") ("ZK" . "\e$B#K\e(B")
+ ("ZL" . "\e$B#L\e(B") ("ZM" . "\e$B#M\e(B") ("ZN" . "\e$B#N\e(B") ("ZO" . "\e$B#O\e(B")
+ ("ZP" . "\e$B#P\e(B") ("ZQ" . "\e$B#Q\e(B") ("ZR" . "\e$B#R\e(B") ("ZS" . "\e$B#S\e(B")
+ ("ZT" . "\e$B#T\e(B") ("ZU" . "\e$B#U\e(B") ("ZV" . "\e$B#V\e(B") ("ZW" . "\e$B#W\e(B")
+ ("ZX" . "\e$B#X\e(B") ("ZY" . "\e$B#Y\e(B") ("ZZ" . "\e$B#Z\e(B") ("Z[" . "\e$B!N\e(B")
+ ("Z\\" . "\e$B!@\e(B")("Z]" . "\e$B!O\e(B") ("Z^" . "\e$B!0\e(B") ("Z_" . "\e$B!2\e(B")
+ ("Z`" . "\e$B!F\e(B") ("Za" . "\e$B#a\e(B") ("Zb" . "\e$B#b\e(B") ("Zc" . "\e$B#c\e(B")
+ ("Zd" . "\e$B#d\e(B") ("Ze" . "\e$B#e\e(B") ("Zf" . "\e$B#f\e(B") ("Zg" . "\e$B#g\e(B")
+ ("Zh" . "\e$B#h\e(B") ("Zi" . "\e$B#i\e(B") ("Zj" . "\e$B#j\e(B") ("Zk" . "\e$B#k\e(B")
+ ("Zl" . "\e$B#l\e(B") ("Zm" . "\e$B#m\e(B") ("Zn" . "\e$B#n\e(B") ("Zo" . "\e$B#o\e(B")
+ ("Zp" . "\e$B#p\e(B") ("Zq" . "\e$B#q\e(B") ("Zr" . "\e$B#r\e(B") ("Zs" . "\e$B#s\e(B")
+ ("Zt" . "\e$B#t\e(B") ("Zu" . "\e$B#u\e(B") ("Zv" . "\e$B#v\e(B") ("Zw" . "\e$B#w\e(B")
+ ("Zx" . "\e$B#x\e(B") ("Zy" . "\e$B#y\e(B") ("Zz" . "\e$B#z\e(B") ("Z{" . "\e$B!P\e(B")
+ ("Z|" . "\e$B!C\e(B") ("Z}" . "\e$B!Q\e(B") ("Z~" . "\e$B!A\e(B")
+ ))
+
+(defun roman-to-kana-string-1 (str table)
+ (let* (case-fold-search
+ (ret
+ (find-if (function
+ (lambda (rule)
+ (string-match (concat "^" (regexp-quote (car rule)))
+ str)
+ ))
+ table)))
+ (if ret
+ (cons (cdr ret)(substring str (match-end 0)))
+ )
+ ))
+
+(defun roman-to-kana-translate-string (str &optional table)
+ (or table
+ (setq table (symbol-value
+ (intern (concat
+ (symbol-name roman-to-kana-translate-table)
+ "-roman-to-kana-translation-rule-alist"))
+ )))
+ (let (ret dest)
+ (while (setq ret (roman-to-kana-string-1 str table))
+ (setq dest (concat dest (car ret)))
+ (setq str (cdr ret))
+ )
+ (concat dest str)
+ ))
+
+(defun roman-to-kana-translate-region (start end)
+ (save-excursion
+ (let ((str (buffer-substring start end)))
+ (delete-region start end)
+ (goto-char start)
+ (insert (roman-to-kana-translate-string str))
+ )))
+
+
+;;; @ end
+;;;
+
+(provide 'roman-to-kana)
+
+(run-hooks 'roman-to-kana-load-hook)
+
+;;; roman-to-kana.el ends here