diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-11-21 21:58:17 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-11-21 21:58:17 +0000 |
commit | e7a0fa98cc6ca709be9b6f68ccd564a9ae502768 (patch) | |
tree | 813e05311fa318f6ead8587c05fcf7a1b61cff04 /data | |
parent | 0e9c3405b6371835a5117c04facc0076b8d05148 (diff) |
factoids plugin: an empty trigger_pattern list means any word is a keyword
Diffstat (limited to 'data')
-rw-r--r-- | data/rbot/plugins/factoids.rb | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/data/rbot/plugins/factoids.rb b/data/rbot/plugins/factoids.rb index 504141ed..f2dbeeaf 100644 --- a/data/rbot/plugins/factoids.rb +++ b/data/rbot/plugins/factoids.rb @@ -90,7 +90,7 @@ class FactoidsPlugin < Plugin "(.*?)\\s+(is|are)\\s+.*", ], :on_change => Proc.new { |bot, v| bot.plugins['factoids'].reset_triggers }, - :desc => "A list of regular expressions matching factoids where keywords can be identified. append ':n' if the keyword is defined by the n-th group instead of the first") + :desc => "A list of regular expressions matching factoids where keywords can be identified. append ':n' if the keyword is defined by the n-th group instead of the first. if the list is empty, any word will be considered a keyword") Config.register Config::BooleanValue.new('factoids.address', :default => true, :desc => "Should the bot reply with relevant factoids only when addressed with a direct question? If not, the bot will attempt to lookup foo if someone says 'foo?' in channel") @@ -167,6 +167,7 @@ class FactoidsPlugin < Plugin end def trigger_patterns_to_rx + return [] if @bot.config['factoids.trigger_pattern'].empty? @bot.config['factoids.trigger_pattern'].inject([]) { |list, str| s = str.dup if s =~ /:(\d+)$/ @@ -185,19 +186,24 @@ class FactoidsPlugin < Plugin else regs = rx end - regs.inject([]) { |list, a| - r = a.first - i = a.last - m = r.match(f.to_s) - if m - list << m[i].downcase - else - list - end - } + if regs.empty? + f.to_s.scan(/\w+/u) + else + regs.inject([]) { |list, a| + r = a.first + i = a.last + m = r.match(f.to_s) + if m + list << m[i].downcase + else + list + end + } + end end def reset_triggers + return unless @factoids start_time = Time.now rx = trigger_patterns_to_rx triggers = @factoids.inject(Set.new) { |set, f| |