use super::parser::InfoAst;
use crate::js::chars::{drop_indents, trim_start};
#[derive(Clone, Debug, Default, PartialEq)]
pub(crate) struct InfoModel {
pub(crate) title: Option<String>,
pub(crate) acc_title: Option<String>,
pub(crate) acc_descr: Option<String>,
}
pub(crate) fn build_info(ast: InfoAst, title: Option<&str>) -> InfoModel {
let given = |s: Option<String>| s.filter(|s| !s.is_empty());
InfoModel {
title: given(ast.title).or_else(|| title.map(str::to_string)),
acc_title: given(ast.acc_title).map(|s| trim_start(&s).to_string()),
acc_descr: given(ast.acc_descr).map(|s| drop_indents(&s)),
}
}