- p = IO.popen("%{prog} -a -S" % {:prog => @bot.config['spell.program']}, "w+")
- if(p)
- p.puts m.params
- p.close_write
- p.each_line {|l|
- if(l =~ /^\*/)
- m.reply(_("%{word} may be spelled correctly") % {:word => m.params})
- p.close
- return
- elsif(l =~ /^\s*&.*: (.*)$/)
- m.reply "#{m.params}: #$1"
- p.close
- return
- elsif(l =~ /^\s*\+ (.*)$/)
- m.reply((_("%{word} is presumably derived from ") % {:word => m.params}) + $1.downcase)
- p.close
- return
- elsif(l =~ /^\s*#/)
- m.reply(_("%{word}: no suggestions") % {:word => m.params})
- p.close
- return
- end
+
+ begin
+ IO.popen(@bot.config['spell.command_line'] % @bot.config['spell.path'], "w+") { |p|
+ p.puts m.params
+ p.close_write
+ p.each_line { |l|
+ case l
+ when /^\*/
+ m.reply(_("%{word} may be spelled correctly") % {:word => m.params})
+ when /^\s*&.*: (.*)$/
+ m.reply "#{m.params}: #$1"
+ when /^\s*\+ (.*)$/
+ m.reply((_("%{word} is presumably derived from ") % {:word => m.params}) + $1.downcase)
+ when /^\s*#/
+ m.reply(_("%{word}: no suggestions") % {:word => m.params})
+ end
+ return if m.replied?
+ }