File: spell.rb

package info (click to toggle)
rbot 0.9.15+post20100705+gitb3aa806-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 3,664 kB
  • ctags: 2,500
  • sloc: ruby: 29,566; xml: 338; sh: 33; makefile: 18
file content (51 lines) | stat: -rw-r--r-- 1,642 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#-- vim:sw=2:et
#++
#
# :title: Spell plugin

class SpellPlugin < Plugin
  Config.register Config::StringValue.new('spell.path',
     :default => 'aspell',
     :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.path. Use %s as a placeholder for the executable name'))

  def help(plugin, topic="")
    _("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)
      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?
        }
      }
    rescue
      m.reply(_("couldn't exec %{prog} :(") % {:prog => @bot.config['spell.path']})
      return
    end
    m.reply(_("something odd happened while checking %{word} with %{prog}") % {
      :word => m.params, :prog => @bot.config['spell.path']
    })
  end
end
plugin = SpellPlugin.new
plugin.register("spell")