summaryrefslogtreecommitdiff
path: root/data/rbot/plugins/search.rb
diff options
context:
space:
mode:
authorJay Thomas <degradinglight@gmail.com>2013-04-25 00:19:25 -0400
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2013-04-25 06:56:14 +0200
commitfc7b959f975fe84f843d0e9518ee00c5dff8d346 (patch)
treed9b67f2b5ef88c66b2ca121e4d3157bce511d6ed /data/rbot/plugins/search.rb
parent318c87a0659c1aa6da5f6b0b82c15de65f86f513 (diff)
search: updated Wolfram Alpha method to comply with api
Diffstat (limited to 'data/rbot/plugins/search.rb')
-rw-r--r--data/rbot/plugins/search.rb28
1 files changed, 20 insertions, 8 deletions
diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb
index 3cd45fe5..e6803e58 100644
--- a/data/rbot/plugins/search.rb
+++ b/data/rbot/plugins/search.rb
@@ -431,15 +431,27 @@ class SearchPlugin < Plugin
m.reply "no data available"
return
end
- answer = []
- xml.elements.each("//pod/subpod/plaintext") { |element|
- answer << element.text
+ answer_type, answer = [], []
+ xml.elements.each("//pod") { |element|
+ answer_type << element.attributes['title']
+ answer << element.elements['subpod/plaintext'].text
}
- # strip spaces and line breaks
- answer[1].gsub!(/\n/, Bold + ' :: ' + Bold )
- answer[1].gsub!(/\t/, ' ')
- answer[1].gsub!(/\s+/, ' ')
- m.reply answer[1].to_s
+ # find the first answer that isn't nil,
+ # starting on the second pod in the array
+ n = 1
+ answer[1..-1].each { |a|
+ break unless a.nil?
+ n += 1
+ }
+ if answer[n].nil?
+ m.reply "no results"
+ return
+ end
+ # strip spaces, pipes, and line breaks
+ sep = Bold + ' :: ' + Bold
+ chars = [ [/\n/, sep], [/\t/, " "], [/\s+/, " "], ["|", "-"] ]
+ chars.each { |c| answer[n].gsub!(c[0], c[1]) }
+ m.reply answer_type[n] + sep + answer[n]
end
def wikipedia(m, params)