use crate::domain::model::entity_ref::EntityRef;
pub fn write_links<'a>(
out: &mut String,
links: impl Iterator<Item = (&'a EntityRef, &'a str)>,
has_links: bool,
) {
if !has_links {
return;
}
out.push_str("links:\n");
for (target, relationship) in links {
out.push_str(&format!(" - id: {target}\n"));
out.push_str(&format!(" relationship: {relationship}\n"));
}
}
pub fn write_relates<'a>(out: &mut String, relates: impl Iterator<Item = &'a EntityRef>) {
let mut peekable = relates.peekable();
if peekable.peek().is_none() {
return;
}
out.push_str("relates:\n");
for target in peekable {
out.push_str(&format!(" - {target}\n"));
}
}
pub fn write_tags<'a>(out: &mut String, tags: impl Iterator<Item = &'a str>, has_tags: bool) {
if !has_tags {
return;
}
out.push_str("tags:\n");
for tag in tags {
if tag.contains(':') {
out.push_str(&format!(" - \"{tag}\"\n"));
} else {
out.push_str(&format!(" - {tag}\n"));
}
}
}
pub fn write_aliases<'a>(out: &mut String, aliases: impl Iterator<Item = &'a str>) {
let mut peekable = aliases.peekable();
if peekable.peek().is_none() {
return;
}
out.push_str("aliases:\n");
for alias in peekable {
out.push_str(&format!(" - \"{alias}\"\n"));
}
}