+#-- vim:sw=2:et
+#++
+#
+# :title: Spell plugin
+
class SpellPlugin < Plugin
+ Config.register Config::StringValue.new('spell.path',
+ :default => 'ispell',
+ :desc => _('Path to the program to use to check spelling'))
+ Config.register Config::StringValue.new('spell.command_line',
+ :default => '%s -a -S',
+ :desc => _('Command line used to call the spell.program. Use %s as a placeholder for the executable name'))
+
def help(plugin, topic="")
- "spell <word> => check spelling of <word>, suggest alternatives"
+ _("spell <word> => check spelling of <word>, suggest alternatives")
end
def privmsg(m)
unless(m.params && m.params =~ /^\S+$/)
- m.reply "incorrect usage: " + help(m.plugin)
+ m.reply _("incorrect usage: ") + help(m.plugin)
return
end
- p = IO.popen("ispell -a -S", "w+")
- if(p)
- p.puts m.params
- p.close_write
- p.each_line {|l|
- if(l =~ /^\*/)
- m.reply "#{m.params} may be spelled correctly"
- p.close
- return
- elsif(l =~ /^\s*&.*: (.*)$/)
- m.reply "#{m.params}: #$1"
- p.close
- return
- elsif(l =~ /^\s*\+ (.*)$/)
- m.reply "#{m.params} is presumably derived from " + $1.downcase
- p.close
- return
- elsif(l =~ /^\s*#/)
- m.reply "#{m.params}: no suggestions"
- p.close
- return
- end
+
+ begin
+ IO.popen(@bot.config['spell.command_line'] % @bot.config['spell.program'], "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?
+ }
}
- p.close
- else
- m.reply "couldn't exec ispell :("
+ rescue
+ m.reply(_("couldn't exec %{prog} :(") % {:prog => @bot.config['spell.program']})
return
end
+ m.reply(_("something odd happened while checking %{word} with %{prog}") % {
+ :word => m.params, :prog => @bot.config['spell.program']
+ })
end
end
plugin = SpellPlugin.new