static List relatedPosts()

in buildSrc/src/main/groovy/org/grails/gradle/BlogTask.groovy [252:287]


    static List<HtmlPost> relatedPosts(HtmlPost htmlPost, List<HtmlPost> posts) {
        List<HtmlPost> relatedPosts = []
        for (String tag : htmlPost.tags) {
            for (HtmlPost p : posts) {
                if (p.tags.contains(tag) && p.path != htmlPost.path) {
                    List<String> paths = relatedPosts*.path
                    if (paths.contains(p.path)) {
                        continue
                    }
                    relatedPosts.add(p)
                    if (relatedPosts.size() > MAX_RELATED_POSTS) {
                        break
                    }
                }
            }
            if (relatedPosts.size() > MAX_RELATED_POSTS) {
                break
            }
        }
        if (relatedPosts.size() < MAX_RELATED_POSTS) {
            for (HtmlPost p : posts) {
                List<String> paths = relatedPosts*.path
                paths.add(htmlPost.path)
                if (paths.contains(p.path)) {
                    continue
                }
                relatedPosts << p
                if (relatedPosts.size() > MAX_RELATED_POSTS) {
                    break
                }
            }
        }
        relatedPosts.subList(0, MAX_RELATED_POSTS).sort { a, b ->
            parseDate(a.metadata.date).after(parseDate(b.metadata.date)) ? -1 : 1
        }
    }