diff --git a/CHDataManagement/Generator/Post Lists/PostListPageGenerator.swift b/CHDataManagement/Generator/Post Lists/PostListPageGenerator.swift index eef8c8d..32e078e 100644 --- a/CHDataManagement/Generator/Post Lists/PostListPageGenerator.swift +++ b/CHDataManagement/Generator/Post Lists/PostListPageGenerator.swift @@ -32,11 +32,14 @@ final class PostListPageGenerator { "\(source.pageUrlPrefix(for: language))/\(pageNumber).html" } + /** + Create pages for the given posts, sorted by date (newest first) + */ func createPages(for posts: [Post]) { // Sort by newest first, filter drafts let posts = posts .filter { !$0.isDraft } - .sorted { $0.startDate > $1.startDate && $0.id < $1.id } + .sortedByStartDateAndId() let totalCount = posts.count guard totalCount > 0 else { diff --git a/CHDataManagement/Model/DateItem.swift b/CHDataManagement/Model/DateItem.swift index 859cdfd..691ab1e 100644 --- a/CHDataManagement/Model/DateItem.swift +++ b/CHDataManagement/Model/DateItem.swift @@ -13,6 +13,10 @@ protocol DateItem { extension Sequence where Element: DateItem { + /** + Sort the elements first by their start date (newer first), + and then by id, if the start date is equal. + */ func sortedByStartDateAndId() -> [Element] { sorted { (lhs, rhs) -> Bool in if lhs.startDate == rhs.startDate {