private void renderBlogFeed()

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)
    }