use std::borrow::Cow;
use serde::Serialize;
use crate::{PageMetadata, builder::SiteBuilder};
#[derive(Debug, Serialize)]
pub struct Link<'l> {
pub link: Cow<'l, str>,
pub title: Cow<'l, str>,
}
impl<'l> Link<'l> {
pub fn new(link: impl Into<Cow<'l, str>>, title: impl Into<Cow<'l, str>>) -> Self {
let link = link.into();
let title = title.into();
Self { link, title }
}
}
pub fn render_basic_link_list(
builder: &SiteBuilder,
template: &str,
links: Vec<Link>,
title: &str,
) -> eyre::Result<String> {
builder.build_page_raw(
PageMetadata {
template: Some(template.to_owned()),
title: Some(title.to_owned()),
..Default::default()
},
"",
LinkTemplateData { links, title },
)
}
#[derive(Debug, Serialize)]
struct LinkTemplateData<'l> {
links: Vec<Link<'l>>,
title: &'l str,
}