use core::fmt::Write;
use crate::fmt::Fmt;
pub(crate) fn write_section(out: &mut String, label: &str, f: &Fmt<'_>) {
let _ = writeln!(out, "{}{label}{}", f.yellow, f.reset);
}
pub(crate) fn write_label(out: &mut String, indent: &str, label: &str, value: &str) {
let _ = writeln!(out, "{indent}{label}: {value}");
}
pub(crate) fn write_description(out: &mut String, text: &str, f: &Fmt<'_>, indent: &str) {
let rendered = if f.is_color() {
let available = f.width.saturating_sub(indent.len());
markdown_to_ansi::render(text, &f.md_opts(Some(available)))
} else {
text.to_string()
};
let trimmed = rendered.trim_end_matches('\n');
for line in trimmed.split('\n') {
if line.trim().is_empty() {
out.push('\n');
} else {
let _ = writeln!(out, "{indent}{line}");
}
}
}
#[allow(clippy::too_many_arguments)]
pub(crate) fn write_label_wrapped(
out: &mut String,
indent: &str,
label: &str,
value: &str,
f: &Fmt<'_>,
) {
let prefix_len = indent.len() + label.len() + 2; if prefix_len + value.len() <= f.width {
let _ = writeln!(out, "{indent}{label}: {}{value}{}", f.magenta, f.reset);
} else {
let _ = writeln!(out, "{indent}{label}:");
let inner_indent = format!("{indent} ");
write_description(out, value, f, &inner_indent);
}
}