ispellラッパ(失敗)
30分プログラム、その108。ispellのラッパを書こうとして失敗した。
やりたかったのは、Emacsのスペルチェッカで"readLine"のような単語をちゃんと認識できるようすること。で、ispellのラッパを書いて、"readLine"->"read Line"のように変換するようにしてみた。
でも、Emacsが単語の位置がずれてるよ、って言って認識してくれなかった・・・。
使い方
$ mspell @(#) International Ispell Version 3.3.02 12 Jun 2005 word: hello ok word: helloWorld ok ok
Emacsで使うときは次のようにする。
(setq ispell-program-name "mspell")
でも、次のようなエラーがでる。
Ispell misalignment: word `blog' point 247; probably incompatible versions
ソースコード
#!/usr/bin/env ruby require 'open3' Open3.popen3("ispell #{ARGV.join(' ')}"){|stdin,stdout,_| Thread.fork{ loop{ word = STDIN.readpartial(1000) words = word.gsub(/([a-z])([A-Z])/, '\1 \2').gsub(/([A-Z])([A-Z][a-z])/,'\1 \2') stdin.print words } } begin loop{ STDOUT.print stdout.readpartial(100) STDOUT.flush } rescue EOFError end }