use crate::DocumentAttributes;
use std::borrow::Cow;
#[derive(Debug)]
pub(crate) struct RevisionInfo<'a> {
pub number: Cow<'a, str>,
pub date: Option<Cow<'a, str>>,
pub remark: Option<Cow<'a, str>>,
}
#[derive(Debug, Default)]
pub(crate) struct IgnoredRevisionFields {
pub number: bool,
pub date: bool,
pub remark: bool,
}
pub(crate) fn process_revision_info<'a>(
revision_info: RevisionInfo<'a>,
document_attributes: &mut DocumentAttributes<'a>,
) -> IgnoredRevisionFields {
let mut ignored = IgnoredRevisionFields::default();
if document_attributes.contains_key("revnumber") {
ignored.number = true;
} else {
document_attributes.insert_text("revnumber".into(), revision_info.number);
}
if let Some(date) = revision_info.date {
if document_attributes.contains_key("revdate") {
ignored.date = true;
} else {
document_attributes.insert_text("revdate".into(), date);
}
}
if let Some(remark) = revision_info.remark {
if document_attributes.contains_key("revremark") {
ignored.remark = true;
} else {
document_attributes.insert_text("revremark".into(), remark);
}
}
ignored
}