Gen Otsuji
gen_otsuj****@yahoo*****
2005年 3月 7日 (月) 20:54:22 JST
こんばんは。尾辻です。 突然ですが、migemo-elというelispがあります。 Emacsenにてローマ字打ちをすると日本語がインクリメンタル検索で引っかか るようになるものです。その時、正規表現を返すのがmigemoですが、 その代わりにprimeの出力を使うようにしたpmigemoをrubyで作ってみました。 下にあるのがそれです。簡単な仕様です。他にもcmigemoとかもあるようです が、既にprimeを使うものがあるなら以下は忘れて下さい。 何故作ったのかと言いますと、migemoのuser辞書を作ったらちょっと遅く、 逆にprimeの変換は速いし、そして辞書もあるしと思ったからです。 perlの方が慣れているのですがrubyに初挑戦です。 こんなことよりドキュメント作れと言われそうですが:)。 (setq migemo-command "/usr/loca/bin/pmigemo") (load-library "migemo") などと~/.emacs.el等に設定すると使えると思います。 ちょっとインクリメンタルではなくて、あるキー配列にならないと 検索にかからなかったりするのが特徴と言えば特徴です:)。 あと初心者なのでバグがある気もします。見つけたら教えてください。 ------ 尾辻 ----------pmigemo----------- #!/usr/bin/env ruby require 'jcode' $KCODE='e' prime = open("|/usr/local/bin/prime","r+") while line = STDIN.gets line.chomp! break if line == "" prime.printf("lookup_compact_all\t%s\n",line) a=[] while ret = prime.gets ret.chomp! next if ret == "ok" break if ret == "" a.push sprintf("%s",ret.split(/\t/)[1]).each_char.join("\a") end STDOUT.printf("%s\n",a.join('\\|')) end ----------------------------