summaryrefslogtreecommitdiff
path: root/data/rbot/plugins/factoids.rb
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2007-11-21 21:58:17 +0000
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2007-11-21 21:58:17 +0000
commite7a0fa98cc6ca709be9b6f68ccd564a9ae502768 (patch)
tree813e05311fa318f6ead8587c05fcf7a1b61cff04 /data/rbot/plugins/factoids.rb
parent0e9c3405b6371835a5117c04facc0076b8d05148 (diff)
factoids plugin: an empty trigger_pattern list means any word is a keyword
Diffstat (limited to 'data/rbot/plugins/factoids.rb')
-rw-r--r--data/rbot/plugins/factoids.rb28
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|