This commit is contained in:
parent
76c682264f
commit
7dcff0b810
2 changed files with 28 additions and 7 deletions
|
@ -15,6 +15,7 @@ pub struct FileMetadata {
|
||||||
pub date: Option<Date>,
|
pub date: Option<Date>,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
pub publish: Option<bool>,
|
pub publish: Option<bool>,
|
||||||
|
pub tags: Option<Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Content, Debug)]
|
#[derive(Content, Debug)]
|
||||||
|
|
|
@ -73,6 +73,7 @@ struct Post {
|
||||||
url: String,
|
url: String,
|
||||||
desc: Option<String>,
|
desc: Option<String>,
|
||||||
content: Option<String>,
|
content: Option<String>,
|
||||||
|
tags: Option<Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Post {
|
impl Post {
|
||||||
|
@ -122,11 +123,15 @@ fn get_posts(location: &str) -> Vec<Post> {
|
||||||
let root = parse_document(&arena, &text, &options);
|
let root = parse_document(&arena, &text, &options);
|
||||||
let mut metadata = get_metadata(root);
|
let mut metadata = get_metadata(root);
|
||||||
|
|
||||||
|
// Always have a title
|
||||||
metadata.title = match metadata.title {
|
metadata.title = match metadata.title {
|
||||||
Some(title) => Some(title),
|
Some(title) => Some(title),
|
||||||
None => Some(file_without_ext.into()),
|
None => Some(file_without_ext.into()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// No tags if the vec is empty
|
||||||
|
metadata.tags = metadata.tags.filter(|tags| !tags.is_empty());
|
||||||
|
|
||||||
metadata
|
metadata
|
||||||
}
|
}
|
||||||
Err(_) => FileMetadata {
|
Err(_) => FileMetadata {
|
||||||
|
@ -154,6 +159,7 @@ fn get_posts(location: &str) -> Vec<Post> {
|
||||||
}),
|
}),
|
||||||
desc: file_metadata.description,
|
desc: file_metadata.description,
|
||||||
content: None,
|
content: None,
|
||||||
|
tags: file_metadata.tags,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
@ -195,18 +201,32 @@ fn get_post(post: &mut Option<File>, filename: String, name: String, url: String
|
||||||
|
|
||||||
*post = read_file(&format!("{blog_dir}/{filename}{ext}"));
|
*post = read_file(&format!("{blog_dir}/{filename}{ext}"));
|
||||||
|
|
||||||
let title = match post {
|
let (title, tags) = match post {
|
||||||
Some(data) => match &data.metadata.info.title {
|
Some(data) => (
|
||||||
Some(text) => text,
|
match &data.metadata.info.title {
|
||||||
None => &filename,
|
Some(text) => text,
|
||||||
},
|
None => &filename,
|
||||||
None => &filename,
|
},
|
||||||
|
match &data.metadata.info.tags {
|
||||||
|
Some(tags) => tags.clone(),
|
||||||
|
None => Vec::new(),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
None => (&filename, Vec::new()),
|
||||||
};
|
};
|
||||||
|
|
||||||
Infos {
|
Infos {
|
||||||
page_title: Some(format!("Post: {}", title)),
|
page_title: Some(format!("Post: {}", title)),
|
||||||
page_desc: Some(format!("Blog d'{name}")),
|
page_desc: Some(format!("Blog d'{name}")),
|
||||||
page_kw: Some(["blog", "blogging", "write", "writing"].join(", ")),
|
page_kw: Some(
|
||||||
|
vec!["blog", "blogging", "write", "writing"]
|
||||||
|
.iter()
|
||||||
|
.map(|&tag| tag.to_owned())
|
||||||
|
.chain(tags.into_iter())
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join(", "),
|
||||||
|
),
|
||||||
url,
|
url,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue