Mac OS X にはスペルチェッカがついている。
require 'osx/cocoa'
OSX::NSApplication.sharedApplication
checker = OSX::NSSpellChecker.sharedSpellChecker
p checker
puts checker.guessesForWord('helllo').to_a.collect{|s| s.to_s }.join(' ')
実行結果:
% ruby a.rb
#<OSX::NSSpellChecker:0x2c6014 class='NSSpellChecker' id=0x633670>
hello hell hell-lo
OSX::NSApplication.sharedApplication の行を外すと checker が nil になるという挙動がわりと BK なのでここに記録しておく。
なお Objective-C で書いても nil になるので、RubyCocoa は悪くないです。
#import <AppKit/AppKit.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
#if 0
[NSApplication sharedApplication];
#endif
NSSpellChecker* checker = [NSSpellChecker sharedSpellChecker];
NSLog(@"%@", checker);
NSLog(@"%@", [checker guessesForWord: @"helllo"]);
[pool release];
}
実行結果:
% gcc a.m -framework AppKit && ./a.out
2007-01-08 19:31:27.155 a.out[2147] (null)
2007-01-08 19:31:27.157 a.out[2147] (null)
