diff options
author | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-27 15:59:13 +0000 |
---|---|---|
committer | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-27 15:59:13 +0000 |
commit | 21949774b91eaec6ecde4eaa8ad121e2c0a36b87 (patch) | |
tree | 41a7601e168018ac203bad7ca8d7f9f82515bc28 /rbot/plugins/url.rb | |
parent | 51cf09ec02d089bfdd80e5f728cfc92a234dc437 (diff) |
rearrange repo for packaging
Diffstat (limited to 'rbot/plugins/url.rb')
-rw-r--r-- | rbot/plugins/url.rb | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/rbot/plugins/url.rb b/rbot/plugins/url.rb deleted file mode 100644 index ed82d1c1..00000000 --- a/rbot/plugins/url.rb +++ /dev/null @@ -1,98 +0,0 @@ -Url = Struct.new("Url", :channel, :nick, :time, :url) - -class UrlPlugin < Plugin - def initialize - super - @registry.set_default(Array.new) - end - def help(plugin, topic="") - "urls [<max>=4] => list <max> last urls mentioned in current channel, urls <channel> [<max>=4] => list <max> last urls mentioned in <channel>, urls search <regexp> => search for matching urls, urls search <channel> <regexp>, search for matching urls in channel <channel>" - end - def listen(m) - return unless m.kind_of?(PrivMessage) - return if m.address? - # TODO support multiple urls in one line - if m.message =~ /(f|ht)tps?:\/\// - if m.message =~ /((f|ht)tps?:\/\/.*?)(?:\s+|$)/ - url = Url.new(m.target, m.sourcenick, Time.new, $1) - list = @registry[m.target] - debug "#{list.length} urls so far" - if list.length > 50 - list.pop - end - debug "storing url #{url.url}" - list.unshift url - debug "#{list.length} urls now" - @registry[m.target] = list - end - end - end - def privmsg(m) - case m.params - when nil - if m.public? - urls m, m.target - else - m.reply "in a private message, you need to specify a channel name for urls" - end - when (/^(\d+)$/) - max = $1.to_i - if m.public? - urls m, m.target, max - else - m.reply "in a private message, you need to specify a channel name for urls" - end - when (/^(#.*?)\s+(\d+)$/) - channel = $1 - max = $2.to_i - urls m, channel, max - when (/^(#.*?)$/) - channel = $1 - urls m, channel - when (/^search\s+(#.*?)\s+(.*)$/) - channel = $1 - string = $2 - search m, channel, string - when (/^search\s+(.*)$/) - string = $1 - if m.public? - search m, m.target, string - else - m.reply "in a private message, you need to specify a channel name for urls" - end - else - m.reply "incorrect usage: " + help(m.plugin) - end - end - - def urls(m, channel, max=4) - max = 10 if max > 10 - max = 1 if max < 1 - list = @registry[channel] - if list.empty? - m.reply "no urls seen yet for channel #{channel}" - else - list[0..(max-1)].each do |url| - m.reply "[#{url.time.strftime('%Y/%m/%d %H:%M:%S')}] <#{url.nick}> #{url.url}" - end - end - end - - def search(m, channel, string, max=4) - max = 10 if max > 10 - max = 1 if max < 1 - regex = Regexp.new(string) - list = @registry[channel].find_all {|url| - regex.match(url.url) || regex.match(url.nick) - } - if list.empty? - m.reply "no matches for channel #{channel}" - else - list[0..(max-1)].each do |url| - m.reply "[#{url.time.strftime('%Y/%m/%d %H:%M:%S')}] <#{url.nick}> #{url.url}" - end - end - end -end -plugin = UrlPlugin.new -plugin.register("urls") |