in generator/src/main/groovy/generator/SiteGenerator.groovy [282:325]
private void renderBlogFeed(Map<String, Document> blogList, String baseDir) {
def sorted = blogList.sort { e -> e.value.revisionInfo.date }
def base = "http://groovy.apache.org/$baseDir"
def feedDir = new File(outputDir, baseDir)
feedDir.mkdirs()
def feedFile = new File(feedDir, 'feed.atom')
def builder = new StreamingMarkupBuilder()
builder.encoding = 'UTF-8'
def blogs = builder.bind {
mkp.xmlDeclaration()
namespaces << ['':'http://www.w3.org/2005/Atom']
feed {
title('Groovy Blogs')
subtitle('News and stories from the Groovy Ecosystem')
link(href: base)
link(href: "$base/feed.atom", rel: 'self')
id(base)
sorted.each { k, v ->
def publishDate = v.revisionInfo.date
def updateDate = v.attributes.updated ?: v.revisionInfo.date
// Atom standard is a little vague on author tag.
// Multiple are allowed but many atom readers just display
// first or last, so we'll have one combined one.
def authorName = null
if (v.authors) {
authorName = v.authors*.fullName.join(', ')
}
entry {
if (authorName) {
author {
name(authorName)
}
}
title(v.structuredDoctitle.combined)
link(href: "$base/$k")
updated(updateDate)
published(publishDate)
summary(v.attributes.description ?: '')
}
}
}
}
feedFile.text = XmlUtil.serialize(blogs)
}