use super::BodyReportOptions;
pub(crate) struct TextDescription {
pub(crate) value: Option<String>,
pub(crate) truncated: bool,
pub(crate) char_count: usize,
pub(crate) char_limit: Option<usize>,
}
pub(crate) fn describe_text(value: &str, options: BodyReportOptions) -> TextDescription {
let char_count = value.chars().count();
let char_limit = options.max_body_chars;
if !options.include_body {
return TextDescription {
value: None,
truncated: false,
char_count,
char_limit,
};
}
match char_limit {
Some(limit) if char_count > limit => TextDescription {
value: Some(value.chars().take(limit).collect()),
truncated: true,
char_count,
char_limit,
},
_ => TextDescription {
value: Some(value.to_string()),
truncated: false,
char_count,
char_limit,
},
}
}