Sort sitemap elements by permalink

Closes #257
This commit is contained in:
Vincent Prouillet 2018-03-17 14:34:01 +01:00
parent 2eacb8247b
commit 3a2dab5974
3 changed files with 23 additions and 19 deletions

View file

@ -3,6 +3,7 @@
## 0.3.3 (unreleased) ## 0.3.3 (unreleased)
- Fixed config flag in CLI - Fixed config flag in CLI
- Sitemap entries are now sorted by permalinks to avoid random ordering
## 0.3.2 (2018-03-05) ## 0.3.2 (2018-03-05)

View file

@ -632,27 +632,26 @@ impl Site {
let mut context = Context::new(); let mut context = Context::new();
context.add( let mut pages = self.pages
"pages", .values()
&self.pages .filter(|p| !p.is_draft())
.values() .map(|p| {
.filter(|p| !p.is_draft()) let date = match p.meta.date {
.map(|p| { Some(ref d) => Some(d.to_string()),
let date = match p.meta.date { None => None,
Some(ref d) => Some(d.to_string()), };
None => None, SitemapEntry::new(p.permalink.clone(), date)
}; })
SitemapEntry::new(p.permalink.clone(), date) .collect::<Vec<_>>();
}) pages.sort_by(|a, b| a.permalink.cmp(&b.permalink));
.collect::<Vec<_>>() context.add("pages", &pages);
);
context.add( let mut sections = self.sections
"sections",
&self.sections
.values() .values()
.map(|s| SitemapEntry::new(s.permalink.clone(), None)) .map(|s| SitemapEntry::new(s.permalink.clone(), None))
.collect::<Vec<_>>() .collect::<Vec<_>>();
); sections.sort_by(|a, b| a.permalink.cmp(&b.permalink));
context.add("sections", &sections);
let mut categories = vec![]; let mut categories = vec![];
if let Some(ref c) = self.categories { if let Some(ref c) = self.categories {
@ -664,6 +663,7 @@ impl Site {
); );
} }
} }
categories.sort_by(|a, b| a.permalink.cmp(&b.permalink));
context.add("categories", &categories); context.add("categories", &categories);
let mut tags = vec![]; let mut tags = vec![];
@ -676,6 +676,7 @@ impl Site {
); );
} }
} }
tags.sort_by(|a, b| a.permalink.cmp(&b.permalink));
context.add("tags", &tags); context.add("tags", &tags);
context.add("config", &self.config); context.add("config", &self.config);

View file

@ -21,3 +21,5 @@ all the variables above are arrays of `SitemapEntry` with the following type:
permalink: String; permalink: String;
date: String?; date: String?;
``` ```
All `SitemapEntry` are sorted in each variable by their permalink.