in buildSrc/src/main/groovy/org/grails/gradle/BlogTask.groovy [311:347]
static void renderPosts(Map<String, String> globalMetadata,
List<HtmlPost> listOfPosts,
File outputDir,
final String templateText) {
List<String> postCards = []
List<RssItem> rssItems = []
Map<String, List<String>> tagPosts = [:]
Map<String, Integer> tagsMap = [:]
for (HtmlPost htmlPost : listOfPosts) {
postCards << postCard(htmlPost)
String html = renderPostHtml(htmlPost, templateText, listOfPosts)
File pageOutput = new File(outputDir.absolutePath + "/" + htmlPost.path)
pageOutput.createNewFile()
pageOutput.text = html
Set<String> postTags = parseTags(html)
for (String postTag : postTags) {
tagsMap[postTag] = tagsMap.containsKey(postTag) ? (1 + tagsMap[postTag]) : 1
if (!tagPosts.containsKey(postTag)) {
tagPosts[postTag] = []
}
tagPosts[postTag] << htmlPost.path
}
String postLink = postLink(htmlPost)
rssItems.add(rssItemWithPage(htmlPost.metadata.title,
parseDate(htmlPost.metadata.date),
postLink,
htmlPost.path.replace(".html", ""),
htmlPost.html,
htmlPost.metadata.author))
}
Set<Tag> tags = tagsMap.collect { k, v -> new Tag(title: k, ocurrence: v) } as Set<Tag>
renderArchive(new File(outputDir.absolutePath + "/index.html"), postCards, globalMetadata, templateText, tags)
renderRss(globalMetadata, rssItems, new File(outputDir.absolutePath + "/../" + RSS_FILE))
renderTags(globalMetadata, outputDir, tagsMap.keySet(), listOfPosts, templateText)
}