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)
- Fixed config flag in CLI
- Sitemap entries are now sorted by permalinks to avoid random ordering
## 0.3.2 (2018-03-05)

View file

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

View file

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