@plugin = plugin\r
@lang = lang.to_sym\r
@word = word.downcase\r
- @range = [AZ_RULES[lang][:first], AZ_RULES[lang][:last]]\r
+ @range = [AZ_RULES[lang][:first].dup, AZ_RULES[lang][:last].dup]\r
def @range.to_s\r
return "%s -- %s" % self\r
end\r
debug "getting random word from dictionary, matching #{random}"\r
p = @bot.httputil.get_cached(rules[:url] % URI.escape(random))\r
debug p\r
- debug "here 1"\r
lemmi = Array.new\r
- debug "here 2"\r
good = rules[:good]\r
- debug "here 3"\r
# We look for a lemma composed by a single word and of length at least two\r
p.scan(/<span class="hwd">(.*?)<\/span>([^\n]+?)<span class="psa">#{rules[:good]}<\/span>/i) { |prelemma, discard|\r
- debug "here 4"\r
lemma = prelemma.downcase\r
- debug "here 5"\r
debug "checking lemma #{lemma} (#{prelemma}) and discarding #{discard}"\r
next if wc.key?(lemma.to_sym)\r
if lemma =~ /^[a-z]+$/\r
debug "funky characters, not good"\r
end\r
}\r
- debug "here 6"\r
next if lemmi.empty?\r
- debug "here 7"\r
word = lemmi[rand(lemmi.length)]\r
- debug "here 8"\r
end\r
rescue => e\r
error "error #{e.inspect} while looking up a word"\r
kill_threads\r
if @registry.has_key?(:feeds)\r
@feeds = @registry[:feeds]\r
+ @feeds.keys.grep(/[A-Z]/) { |k|\r
+ @feeds[k.downcase] = @feeds[k]\r
+ @feeds.delete(k)\r
+ }\r
else\r
@feeds = Hash.new\r
end\r
rev = false\r
end\r
\r
- feed = @feeds.fetch(handle, nil)\r
+ feed = @feeds.fetch(handle.downcase, nil)\r
unless feed\r
m.reply "I don't know any feeds named #{handle}"\r
return\r
reply = String.new\r
@@mutex.synchronize {\r
@feeds.each { |handle, feed|\r
- next if wanted and !handle.match(wanted)\r
+ next if wanted and !handle.match(/#{wanted}/i)\r
reply << "#{feed.handle}: #{feed.url} (in format: #{feed.type ? feed.type : 'default'})"\r
(reply << " (watched)") if feed.watched_by?(m.replyto)\r
reply << "\n"\r
reply = String.new\r
@@mutex.synchronize {\r
watchlist.each { |handle, feed|\r
- next if wanted and !handle.match(wanted)\r
+ next if wanted and !handle.match(/#{wanted}/i)\r
next unless feed.watched_by?(m.replyto)\r
reply << "#{feed.handle}: #{feed.url} (in format: #{feed.type ? feed.type : 'default'})\n"\r
}\r
return\r
end\r
type = params[:type]\r
- if @feeds.fetch(handle, nil) && !force\r
- m.reply "There is already a feed named #{handle} (URL: #{@feeds[handle].url})"\r
+ if @feeds.fetch(handle.downcase, nil) && !force\r
+ m.reply "There is already a feed named #{handle} (URL: #{@feeds[handle.downcase].url})"\r
return\r
end\r
unless url\r
return\r
end\r
@@mutex.synchronize {\r
- @feeds[handle] = RssBlob.new(url,handle,type)\r
+ @feeds[handle.downcase] = RssBlob.new(url,handle,type)\r
}\r
reply = "Added RSS #{url} named #{handle}"\r
if type\r
return\r
end\r
@@mutex.synchronize {\r
- @feeds.delete(feed.handle)\r
+ @feeds.delete(feed.handle.downcase)\r
}\r
m.okay unless pass\r
return\r
\r
def replace_rss(m, params)\r
handle = params[:handle]\r
- if @feeds.key?(handle)\r
+ if @feeds.key?(handle.downcase)\r
del_rss(m, {:handle => handle}, true)\r
end\r
- if @feeds.key?(handle)\r
+ if @feeds.key?(handle.downcase)\r
m.reply "can't replace #{feed.handle}"\r
else\r
add_rss(m, params, true)\r
end\r
feed = nil\r
@@mutex.synchronize {\r
- feed = @feeds.fetch(handle, nil)\r
+ feed = @feeds.fetch(handle.downcase, nil)\r
}\r
if feed\r
@@mutex.synchronize {\r
end\r
\r
def unwatch_rss(m, params, pass=false)\r
- handle = params[:handle]\r
+ handle = params[:handle].downcase\r
unless @feeds.has_key?(handle)\r
m.reply("dunno that feed")\r
return\r