end
end
+ # Atom categories are squashed to their label only
{
:link => %w{link.href link},
:guid => %w{guid.content guid},
:content => %w{content.content content},
:description => %w{description.content description},
:title => %w{title.content title},
- :category => %w{category.content category},
+ :category => %w{category.content category.label category},
:dc_subject => %w{dc_subject},
:author => %w{author.name.content author.name author},
:dc_creator => %w{dc_creator}
}.each { |name, chain| def_bang name, chain }
def categories!
+ return nil unless self.respond_to? :categories
cats = categories.map do |c|
- blank2nil { c.content rescue c rescue nil }
+ blank2nil { c.content rescue c.label rescue c rescue nil }
end.compact
cats.empty? ? nil : cats
end
end
case params[:what].intern
when :handle
- new = params[:new].downcase
- if @feeds.key?(new) and @feeds[new]
+ # preserve rename case, but beware of key
+ realnew = params[:new]
+ new = realnew.downcase
+ if feed.handle.downcase == new
+ if feed.handle == realnew
+ m.reply _("You want me to rename %{handle} to itself?") % {
+ :handle => feed.handle
+ }
+ return false
+ else
+ feed.mutex.synchronize do
+ feed.handle = realnew
+ end
+ end
+ elsif @feeds.key?(new) and @feeds[new]
m.reply "There already is a feed with handle #{new}"
return
else
feed.mutex.synchronize do
@feeds[new] = feed
@feeds.delete(handle)
- feed.handle = new
+ feed.handle = realnew
end
handle = new
end
debug "fetching #{feed}"
first_run = !feed.last_success
- if (@bot.config['rss.announce_timeout'] > 0 &&
+ if (!first_run && @bot.config['rss.announce_timeout'] > 0 &&
(Time.now - feed.last_success > @bot.config['rss.announce_timeout']))
debug "#{feed} wasn't polled for too long, supressing output"
first_run = true