u = URBAN + URI.escape(word)
u += '&page=' + p.to_s if p > 1
s = @bot.httputil.get(u)
+ return m.reply("Couldn't get the urban dictionary definition for #{word}") if s.nil?
- notfound = s.match %r{<div style="color: #669FCE"><i>.*?</i> isn't defined}
+ notfound = s.match %r{<i>.*?</i> isn't defined}
- numpages = s[%r{<div id='paginator'>.*?</div>}m].scan(/\d+/).collect {|x| x.to_i}.max || 1
+ numpages = if s[%r{<div id='paginator'>.*?</div>}m]
+ $&.scan(/\d+/).collect {|x| x.to_i}.max || 1
+ else 1 end
rv = Array.new
s.scan(%r{<td class='index'[^>]*>.*?(\d+)\..*?</td>.*?<td class='word'>(?:<a.*?>)?([^>]+)(?:</a>)?</td>.*?<div class='definition'>(.+?)</div>.*?<div class='example'>(.+?)</div>}m) do |num, wrd, desc, ex|
resp = @bot.httputil.head('http://www.urbandictionary.com/random.php',
:max_redir => -1,
:cache => false)
+ return m.reply("Couldn't get a random urban dictionary word") if resp.nil?
if resp.code == "302" && (loc = resp['location'])
words = URI.unescape(loc.match(/define.php\?term=(.*)$/)[1]) rescue nil
end