Nabe 0.2.
[elisp/nabe.git] / kana-to-roman.el
1 ;;; kana-to-roman.el --- Kana to Roman converter
2
3 ;; Copyright (C) 1996 MORIOKA Tomohiko
4
5 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
6 ;; Version:
7 ;;      $Id: kana-to-roman.el,v 0.4 1996/10/04 14:52:16 morioka Exp $
8 ;; Keywords: Roman-to-Kana, input, Japanese, mule
9
10 ;; This file is not part of GNU Emacs.
11
12 ;; This program is free software; you can redistribute it and/or
13 ;; modify it under the terms of the GNU General Public License as
14 ;; published by the Free Software Foundation; either version 2, or (at
15 ;; your option) any later version.
16
17 ;; This program is distributed in the hope that it will be useful, but
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ;; General Public License for more details.
21
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25 ;; Boston, MA 02111-1307, USA.
26
27 ;;; Code:
28
29 (require 'roman-to-kana)
30
31 ;; (npp
32 ;;  (sort (mapcar (lambda (cell)
33 ;;                  (cons (cdr cell)(car cell))
34 ;;                  )
35 ;;                hepburn-roman-to-kana-translation-rule-alist)
36 ;;        (lambda (c1 c2)
37 ;;          (string< (car c2)(car c1))
38 ;;          )))
39
40 (defvar kana-to-roman-translate-table 'hepburn)
41
42 (defvar hepburn-kana-to-roman-translation-rule-alist
43   '(("\e$B%t$)\e(B"       . "vo")
44     ("\e$B%t$'\e(B"       . "ve")
45     ("\e$B%t$#\e(B"       . "vi")
46     ("\e$B%t$!\e(B"       . "va")
47     ("\e$B%t\e(B"         . "vu")
48     ("\e$B$s$N\e(B"       . "nno")
49     ("\e$B$s$M\e(B"       . "nne")
50     ("\e$B$s$L\e(B"       . "nnu")
51     ("\e$B$s$K\e(B"       . "nni")
52     ("\e$B$s$J\e(B"       . "nna")
53     ("\e$B$s\e(B"         . "n")
54     ;;("\e$B$s\e(B"       . "x")
55     ;;("\e$B$s\e(B"       . "n'")
56     ("\e$B$r\e(B"         . "wo")
57     ("\e$B$q\e(B"         . "we")
58     ("\e$B$p\e(B"         . "wi")
59     ("\e$B$o\e(B"         . "wa")
60     ("\e$B$m\e(B"         . "ro")
61     ("\e$B$l\e(B"         . "re")
62     ("\e$B$k\e(B"         . "ru")
63     ("\e$B$j$g\e(B"       . "ryo")
64     ("\e$B$j$e\e(B"       . "ryu")
65     ("\e$B$j$c\e(B"       . "rya")
66     ("\e$B$j$'\e(B"       . "rye")
67     ("\e$B$j$#\e(B"       . "ryi")
68     ("\e$B$j\e(B"         . "ri")
69     ("\e$B$i\e(B"         . "ra")
70     ("\e$B$h\e(B"         . "yo")
71     ("\e$B$f\e(B"         . "yu")
72     ("\e$B$d\e(B"         . "ya")
73     ("\e$B$b\e(B"         . "mo")
74     ("\e$B$a\e(B"         . "me")
75     ("\e$B$`\e(B"         . "mu")
76     ("\e$B$_$g\e(B"       . "myo")
77     ("\e$B$_$e\e(B"       . "myu")
78     ("\e$B$_$c\e(B"       . "mya")
79     ("\e$B$_$'\e(B"       . "mye")
80     ("\e$B$_$#\e(B"       . "myi")
81     ("\e$B$_\e(B"         . "mi")
82     ("\e$B$^\e(B"         . "ma")
83     ("\e$B$]\e(B"         . "po")
84     ("\e$B$\\e(B"         . "bo")
85     ("\e$B$[\e(B"         . "ho")
86     ("\e$B$Z\e(B"         . "pe")
87     ("\e$B$Y\e(B"         . "be")
88     ("\e$B$X\e(B"         . "he")
89     ("\e$B$W$)\e(B"       . "pfo")
90     ("\e$B$W$'\e(B"       . "pfe")
91     ("\e$B$W$#\e(B"       . "pfi")
92     ("\e$B$W$!\e(B"       . "pfa")
93     ("\e$B$W\e(B"         . "pu")
94     ("\e$B$V\e(B"         . "bu")
95     ("\e$B$U$)\e(B"       . "fo")
96     ("\e$B$U$'\e(B"       . "fe")
97     ("\e$B$U$#\e(B"       . "fi")
98     ("\e$B$U$!\e(B"       . "fa")
99     ("\e$B$U\e(B"         . "fu")
100     ("\e$B$T$g\e(B"       . "pyo")
101     ("\e$B$T$e\e(B"       . "pyu")
102     ("\e$B$T$c\e(B"       . "pya")
103     ("\e$B$T$'\e(B"       . "pye")
104     ("\e$B$T$#\e(B"       . "pyi")
105     ("\e$B$T\e(B"         . "pi")
106     ("\e$B$S$g\e(B"       . "byo")
107     ("\e$B$S$e\e(B"       . "byu")
108     ("\e$B$S$c\e(B"       . "bya")
109     ("\e$B$S$'\e(B"       . "bye")
110     ("\e$B$S$#\e(B"       . "byi")
111     ("\e$B$S\e(B"         . "bi")
112     ("\e$B$R$g\e(B"       . "hyo")
113     ("\e$B$R$e\e(B"       . "hyu")
114     ("\e$B$R$c\e(B"       . "hya")
115     ("\e$B$R$'\e(B"       . "hye")
116     ("\e$B$R$#\e(B"       . "hyi")
117     ("\e$B$R\e(B"         . "hi")
118     ("\e$B$Q\e(B"         . "pa")
119     ("\e$B$P\e(B"         . "ba")
120     ("\e$B$O\e(B"         . "ha")
121     ("\e$B$N\e(B"         . "no")
122     ("\e$B$M\e(B"         . "ne")
123     ("\e$B$L\e(B"         . "nu")
124     ("\e$B$K$g\e(B"       . "nyo")
125     ("\e$B$K$e\e(B"       . "nyu")
126     ("\e$B$K$c\e(B"       . "nya")
127     ("\e$B$K$'\e(B"       . "nye")
128     ("\e$B$K$#\e(B"       . "nyi")
129     ("\e$B$K\e(B"         . "ni")
130     ("\e$B$J\e(B"         . "na")
131     ("\e$B$I\e(B"         . "do")
132     ("\e$B$H$%\e(B"       . "tu")
133     ("\e$B$H\e(B"         . "to")
134     ("\e$B$G$#\e(B"       . "di")
135     ("\e$B$G\e(B"         . "de")
136     ("\e$B$F$#\e(B"       . "ti")
137     ("\e$B$F\e(B"         . "te")
138     ("\e$B$E$)\e(B"       . "dzo")
139     ("\e$B$E$'\e(B"       . "dze")
140     ("\e$B$E$#\e(B"       . "dzi")
141     ("\e$B$E$!\e(B"       . "dza")
142     ("\e$B$E\e(B"         . "dzu")
143     ("\e$B$D$)\e(B"       . "tso")
144     ("\e$B$D$'\e(B"       . "tse")
145     ("\e$B$D$#\e(B"       . "tsi")
146     ("\e$B$D$!\e(B"       . "tsa")
147     ("\e$B$D\e(B"         . "tsu")
148     ("\e$B$C%t$)\e(B"     . "vvo")
149     ("\e$B$C%t$'\e(B"     . "vve")
150     ("\e$B$C%t$#\e(B"     . "vvi")
151     ("\e$B$C%t$!\e(B"     . "vva")
152     ("\e$B$C%t\e(B"       . "vvu")
153     ("\e$B$C$r\e(B"       . "wwo")
154     ("\e$B$C$q\e(B"       . "wwe")
155     ("\e$B$C$p\e(B"       . "wwi")
156     ("\e$B$C$o\e(B"       . "wwa")
157     ("\e$B$C$m\e(B"       . "rro")
158     ("\e$B$C$l\e(B"       . "rre")
159     ("\e$B$C$k\e(B"       . "rru")
160     ("\e$B$C$j$g\e(B"     . "rryo")
161     ("\e$B$C$j$e\e(B"     . "rryu")
162     ("\e$B$C$j$c\e(B"     . "rrya")
163     ("\e$B$C$j$'\e(B"     . "rrye")
164     ("\e$B$C$j$#\e(B"     . "rryi")
165     ("\e$B$C$j\e(B"       . "rri")
166     ("\e$B$C$i\e(B"       . "rra")
167     ("\e$B$C$h\e(B"       . "yyo")
168     ("\e$B$C$f\e(B"       . "yyu")
169     ("\e$B$C$d\e(B"       . "yya")
170     ("\e$B$C$b\e(B"       . "mmo")
171     ("\e$B$C$a\e(B"       . "mme")
172     ("\e$B$C$`\e(B"       . "mmu")
173     ("\e$B$C$_$g\e(B"     . "mmyo")
174     ("\e$B$C$_$e\e(B"     . "mmyu")
175     ("\e$B$C$_$c\e(B"     . "mmya")
176     ("\e$B$C$_$'\e(B"     . "mmye")
177     ("\e$B$C$_$#\e(B"     . "mmyi")
178     ("\e$B$C$_\e(B"       . "mmi")
179     ("\e$B$C$^\e(B"       . "mma")
180     ("\e$B$C$]\e(B"       . "ppo")
181     ("\e$B$C$\\e(B"       . "bbo")
182     ("\e$B$C$[\e(B"       . "hho")
183     ("\e$B$C$Z\e(B"       . "ppe")
184     ("\e$B$C$Y\e(B"       . "bbe")
185     ("\e$B$C$X\e(B"       . "hhe")
186     ("\e$B$C$W$)\e(B"     . "ppfo")
187     ("\e$B$C$W$'\e(B"     . "ppfe")
188     ("\e$B$C$W$#\e(B"     . "ppfi")
189     ("\e$B$C$W$!\e(B"     . "ppfa")
190     ("\e$B$C$W\e(B"       . "ppu")
191     ("\e$B$C$V\e(B"       . "bbu")
192     ("\e$B$C$U$)\e(B"     . "ffo")
193     ("\e$B$C$U$'\e(B"     . "ffe")
194     ("\e$B$C$U$#\e(B"     . "ffi")
195     ("\e$B$C$U$!\e(B"     . "ffa")
196     ("\e$B$C$U\e(B"       . "ffu")
197     ("\e$B$C$T$g\e(B"     . "ppyo")
198     ("\e$B$C$T$e\e(B"     . "ppyu")
199     ("\e$B$C$T$c\e(B"     . "ppya")
200     ("\e$B$C$T$'\e(B"     . "ppye")
201     ("\e$B$C$T$#\e(B"     . "ppyi")
202     ("\e$B$C$T\e(B"       . "ppi")
203     ("\e$B$C$S$g\e(B"     . "bbyo")
204     ("\e$B$C$S$e\e(B"     . "bbyu")
205     ("\e$B$C$S$c\e(B"     . "bbya")
206     ("\e$B$C$S$'\e(B"     . "bbye")
207     ("\e$B$C$S$#\e(B"     . "bbyi")
208     ("\e$B$C$S\e(B"       . "bbi")
209     ("\e$B$C$R$g\e(B"     . "hhyo")
210     ("\e$B$C$R$e\e(B"     . "hhyu")
211     ("\e$B$C$R$c\e(B"     . "hhya")
212     ("\e$B$C$R$'\e(B"     . "hhye")
213     ("\e$B$C$R$#\e(B"     . "hhyi")
214     ("\e$B$C$R\e(B"       . "hhi")
215     ("\e$B$C$Q\e(B"       . "ppa")
216     ("\e$B$C$P\e(B"       . "bba")
217     ("\e$B$C$O\e(B"       . "hha")
218     ("\e$B$C$K$g\e(B"     . "nnyo")
219     ("\e$B$C$K$e\e(B"     . "nnyu")
220     ("\e$B$C$K$c\e(B"     . "nnya")
221     ("\e$B$C$K$'\e(B"     . "nnye")
222     ("\e$B$C$K$#\e(B"     . "nnyi")
223     ("\e$B$C$I\e(B"       . "ddo")
224     ("\e$B$C$H$%\e(B"     . "ttu")
225     ("\e$B$C$H\e(B"       . "tto")
226     ("\e$B$C$G$#\e(B"     . "ddi")
227     ("\e$B$C$G\e(B"       . "dde")
228     ("\e$B$C$F$#\e(B"     . "tti")
229     ("\e$B$C$F\e(B"       . "tte")
230     ("\e$B$C$E$)\e(B"     . "ddzo")
231     ("\e$B$C$E$'\e(B"     . "ddze")
232     ("\e$B$C$E$#\e(B"     . "ddzi")
233     ("\e$B$C$E$!\e(B"     . "ddza")
234     ("\e$B$C$E\e(B"       . "ddzu")
235     ("\e$B$C$D$)\e(B"     . "ttso")
236     ("\e$B$C$D$'\e(B"     . "ttse")
237     ("\e$B$C$D$#\e(B"     . "ttsi")
238     ("\e$B$C$D$!\e(B"     . "ttsa")
239     ("\e$B$C$D\e(B"       . "ttsu")
240     ("\e$B$C$B$g\e(B"     . "ddjo")
241     ("\e$B$C$B$e\e(B"     . "ddju")
242     ("\e$B$C$B$c\e(B"     . "ddja")
243     ("\e$B$C$B$'\e(B"     . "ddje")
244     ("\e$B$C$B\e(B"       . "ddji")
245     ("\e$B$C$A$g\e(B"     . "ccho")
246     ("\e$B$C$A$e\e(B"     . "cchu")
247     ("\e$B$C$A$c\e(B"     . "ccha")
248     ("\e$B$C$A$'\e(B"     . "cche")
249     ("\e$B$C$A\e(B"       . "cchi")
250     ("\e$B$C$@\e(B"       . "dda")
251     ("\e$B$C$?\e(B"       . "tta")
252     ("\e$B$C$>\e(B"       . "zzo")
253     ("\e$B$C$=\e(B"       . "sso")
254     ("\e$B$C$<\e(B"       . "zze")
255     ("\e$B$C$;\e(B"       . "sse")
256     ("\e$B$C$:\e(B"       . "zzu")
257     ("\e$B$C$9\e(B"       . "ssu")
258     ("\e$B$C$8$g\e(B"     . "jjo")
259     ("\e$B$C$8$e\e(B"     . "jju")
260     ("\e$B$C$8$c\e(B"     . "jja")
261     ("\e$B$C$8$'\e(B"     . "jje")
262     ("\e$B$C$8\e(B"       . "zzi")
263     ("\e$B$C$8\e(B"       . "jji")
264     ("\e$B$C$7$g\e(B"     . "ssho")
265     ("\e$B$C$7$e\e(B"     . "sshu")
266     ("\e$B$C$7$c\e(B"     . "ssha")
267     ("\e$B$C$7$'\e(B"     . "sshe")
268     ("\e$B$C$7\e(B"       . "sshi")
269     ("\e$B$C$6\e(B"       . "zza")
270     ("\e$B$C$5\e(B"       . "ssa")
271     ("\e$B$C$4\e(B"       . "ggo")
272     ("\e$B$C$3\e(B"       . "kko")
273     ("\e$B$C$2\e(B"       . "gge")
274     ("\e$B$C$1\e(B"       . "kke")
275     ("\e$B$C$0\e(B"       . "ggu")
276     ("\e$B$C$/\e(B"       . "kku")
277     ("\e$B$C$.$g\e(B"     . "ggyo")
278     ("\e$B$C$.$e\e(B"     . "ggyu")
279     ("\e$B$C$.$c\e(B"     . "ggya")
280     ("\e$B$C$.$'\e(B"     . "ggye")
281     ("\e$B$C$.$#\e(B"     . "ggyi")
282     ("\e$B$C$.\e(B"       . "ggi")
283     ("\e$B$C$-$g\e(B"     . "kkyo")
284     ("\e$B$C$-$e\e(B"     . "kkyu")
285     ("\e$B$C$-$c\e(B"     . "kkya")
286     ("\e$B$C$-$'\e(B"     . "kkye")
287     ("\e$B$C$-$#\e(B"     . "kkyi")
288     ("\e$B$C$-\e(B"       . "kki")
289     ("\e$B$C$,\e(B"       . "gga")
290     ("\e$B$C$+\e(B"       . "kka")
291     ("\e$B$C$&\e(B"       . "wwu")
292     ("\e$B$C$$$'\e(B"     . "yye")
293     ("\e$B$C$$\e(B"       . "yyi")
294     ("\e$B$C\e(B" . "q")
295     ("\e$B$B$g\e(B"       . "djo")
296     ("\e$B$B$e\e(B"       . "dju")
297     ("\e$B$B$c\e(B"       . "dja")
298     ("\e$B$B$'\e(B"       . "dje")
299     ("\e$B$B\e(B" . "dji")
300     ("\e$B$A$g\e(B"       . "cho")
301     ("\e$B$A$e\e(B"       . "chu")
302     ("\e$B$A$c\e(B"       . "cha")
303     ("\e$B$A$'\e(B"       . "che")
304     ("\e$B$A\e(B" . "chi")
305     ("\e$B$@\e(B" . "da")
306     ("\e$B$?\e(B" . "ta")
307     ("\e$B$>\e(B" . "zo")
308     ("\e$B$=\e(B" . "so")
309     ("\e$B$<\e(B" . "ze")
310     ("\e$B$;\e(B" . "se")
311     ("\e$B$:\e(B" . "zu")
312     ("\e$B$9\e(B" . "su")
313     ("\e$B$8$g\e(B"       . "jo")
314     ("\e$B$8$e\e(B"       . "ju")
315     ("\e$B$8$c\e(B"       . "ja")
316     ("\e$B$8$'\e(B"       . "je")
317     ("\e$B$8\e(B" . "zi")
318     ("\e$B$8\e(B" . "ji")
319     ("\e$B$7$g\e(B"       . "sho")
320     ("\e$B$7$e\e(B"       . "shu")
321     ("\e$B$7$c\e(B"       . "sha")
322     ("\e$B$7$'\e(B"       . "she")
323     ("\e$B$7\e(B" . "shi")
324     ("\e$B$6\e(B" . "za")
325     ("\e$B$5\e(B" . "sa")
326     ("\e$B$4\e(B" . "go")
327     ("\e$B$3\e(B" . "ko")
328     ("\e$B$2\e(B" . "ge")
329     ("\e$B$1\e(B" . "ke")
330     ("\e$B$0\e(B" . "gu")
331     ("\e$B$/\e(B" . "ku")
332     ("\e$B$.$g\e(B"       . "gyo")
333     ("\e$B$.$e\e(B"       . "gyu")
334     ("\e$B$.$c\e(B"       . "gya")
335     ("\e$B$.$'\e(B"       . "gye")
336     ("\e$B$.$#\e(B"       . "gyi")
337     ("\e$B$.\e(B" . "gi")
338     ("\e$B$-$g\e(B"       . "kyo")
339     ("\e$B$-$e\e(B"       . "kyu")
340     ("\e$B$-$c\e(B"       . "kya")
341     ("\e$B$-$'\e(B"       . "kye")
342     ("\e$B$-$#\e(B"       . "kyi")
343     ("\e$B$-\e(B" . "ki")
344     ("\e$B$,\e(B" . "ga")
345     ("\e$B$+\e(B" . "ka")
346     ("\e$B$*\e(B" . "o")
347     ("\e$B$(\e(B" . "e")
348     ("\e$B$&\e(B" . "u")
349     ("\e$B$$$'\e(B"       . "ye")
350     ("\e$B$$\e(B" . "i")
351     ("\e$B$"\e(B" . "a")
352     ))
353
354 (defun hiragana-to-roman-translate-string (str &optional table)
355   (or table
356       (setq table (symbol-value
357                    (intern (concat
358                            (symbol-name kana-to-roman-translate-table)
359                            "-kana-to-roman-translation-rule-alist"))
360                    )))
361   (let (ret dest)
362     (while (setq ret (roman-to-kana-string-1 str table))
363       (setq dest (concat dest (car ret)))
364       (setq str (cdr ret))
365       )
366     (concat dest str)
367     ))
368
369 (defun hiragana-to-roman-translate-region (start end)
370   (save-excursion
371     (let ((str (buffer-substring start end)))
372       (delete-region start end)
373       (goto-char start)
374       (insert (hiragana-to-roman-translate-string str))
375       )))
376
377
378 ;;; @ end
379 ;;;
380
381 (provide 'kana-to-roman)
382
383 (run-hooks 'kana-to-roman-load-hook)
384
385 ;;; kana-to-roman.el ends here