summaryrefslogtreecommitdiff
path: root/data/rbot/plugins/search.rb
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2009-08-31 21:10:59 +0200
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2009-08-31 21:10:59 +0200
commit58fa16fbb206c87dc54d401307b6822f5952c15e (patch)
treef52d00e6735b9243f00aad95f363da136174161d /data/rbot/plugins/search.rb
parent30e9bb21325872963f5532527e78d787fe7b26d0 (diff)
search: show long definitions with 'google define:stuff'
Diffstat (limited to 'data/rbot/plugins/search.rb')
-rw-r--r--data/rbot/plugins/search.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb
index 827a1303..95b88a0c 100644
--- a/data/rbot/plugins/search.rb
+++ b/data/rbot/plugins/search.rb
@@ -59,6 +59,10 @@ class SearchPlugin < Plugin
def google(m, params)
what = params[:words].to_s
+ if what.match(/^define:/)
+ return google_define(m, what, params)
+ end
+
searchfor = CGI.escape what
# This method is also called by other methods to restrict searching to some sites
if params[:site]
@@ -125,6 +129,34 @@ class SearchPlugin < Plugin
end
+ def google_define(m, what, params)
+ begin
+ wml = @bot.httputil.get(GOOGLE_SEARCH + CGI.escape(what))
+ raise unless wml
+ rescue => e
+ m.reply "error googling for #{what}"
+ return
+ end
+
+ begin
+ related_index = wml.index(/Related phrases:/, 0)
+ raise unless related_index
+ defs_index = wml.index(/Definitions of <b>/, related_index)
+ raise unless defs_index
+ defs_end = wml.index(/<input/, defs_index)
+ raise unless defs_end
+ rescue => e
+ m.reply "no results found for #{what}"
+ return
+ end
+
+ related = wml[related_index...defs_index]
+ defs = wml[defs_index...defs_end]
+
+ m.reply defs.ircify_html(:a_href => Underline), :split_at => (Underline + ' ')
+
+ end
+
def lucky(m, params)
params.merge!(:lucky => true)
google(m, params)