[Anthy-dev 1020] Re: "n1"を"ん1"にする

Back to archive index

Jun Inoue jun0****@nerds*****
2004年 9月 7日 (火) 07:29:53 JST


On Tue, 31 Aug 2004 21:52:17 +0900
Etsushi Kato <ekato****@ees*****> wrote:

> On 2004/08/30, at 17:48, TOKUNAGA Hiroyuki wrote:
> 
> >> 話は変りまして徳永さん、田畑さんに質問なのですが、 uim-skk や
> >> uim-anthy で "n" に続いて記号 (や数値) を入力すると、"ん" になりますが
> >> 、これを "ん記号" ("n1" だったら、"ん1") になるようにするにはどうすれ
> >> ば良いでしょう。
> >
> >  これを修正するのはめんどくさい気がします。たぶん、rk.scmの方までいじら
> > なければならないんじゃないかと思います。
> 
> rk.scm は手強かったので、今のところ skk.scm のほうで処理する方針にしま
> した。前のメールで教えて頂いた rk-expect が、ちょうどこの用途に使えま
> した。

rk.scm に対するパッチを書いてみました。汚いですけど、動きます。(といってもテストはあまりできてないので注意)

 "n" + 記号を "ん" + 記号に変換させるパッチ

--- trunk/scm/rk.scm	2004-09-06 22:21:47.537930408 +0000
+++ work/scm/rk.scm	2004-09-06 22:11:34.213169944 +0000
@@ -184,6 +184,21 @@
        #t)
      #f)))
 
+
+; Merges two strings that have been converted, for example
+; ("ん" "ン" " ") ("1" "1" "1") --> ("ん1" "ン1" " 1").
+; SEQ1 and SEQ2 must be proper lists having the same length.
+; A disgusting hack for implementing ("n" "1") --> ("ん1").
+; Anyone with the time, skill and passion, please clean this up :-(
+(define rk-merge-seqs
+  (lambda (seq1 seq2)
+    (if (and (pair? seq1) (pair? seq2))
+	(cons (string-append (car seq1) (car seq2))
+	      (rk-merge-seqs (cdr seq1) (cdr seq2)))
+	; This should be () when we reach the end of the lists, or
+	; whatever passed as SEQ1 if SEQ2 is #f
+	seq1)))
+
 ;; front match
 (define rk-proc-tail
   (lambda (context seq)
@@ -195,8 +210,10 @@
       (if old-seq
 	  (begin
 	    (rk-flush context)
-	    (rk-push-key! context (car seq))
-	    (set! res (cadr old-seq)))
+	    (set! res
+		  (rk-merge-seqs
+		   (cadr old-seq)
+		   (rk-push-key! context (car seq)))))
 	  (if (rk-context-seq context)
 	      (begin
 		(rk-flush context)



Anthy-dev メーリングリストの案内
Back to archive index