module DamageControl
module Visitor
# Visitor that writes RSS for ChangeSets.
class RssWriter
# Creates a new RssWriter that will populate the +rss+
# object when it is accepted by a ChangeSets object.
def initialize(rss, title, link, description, message_linker, change_linker)
raise "title" unless title
raise "link" unless link
raise "description" unless description
raise "message_linker" unless message_linker
raise "change_linker" unless change_linker
@rss, @title, @link, @description, @message_linker, @change_linker = rss, title, link, description, message_linker, change_linker
end
def visit_changesets(changesets)
@rss.channel.title = @title
@rss.channel.link = @link
@rss.channel.description = @description
@rss.channel.generator = "RSCM - Ruby Source Control Management"
end
def visit_changeset(changeset)
@item = @rss.items.new_item
@item.pubDate = changeset.time
@item.author = changeset.developer
@item.title = changeset.message
@item.link = @change_linker.changeset_url(changeset, true)
@item.description = "#{changeset.developer}
\n"
@item.description << @message_linker.highlight(changeset.message).gsub(/\n/, "
\n") << "