use crate::{AttributeValue, 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(
"revnumber".into(),
AttributeValue::String(revision_info.number),
);
}
if let Some(date) = revision_info.date {
if document_attributes.contains_key("revdate") {
ignored.date = true;
} else {
document_attributes.insert("revdate".into(), AttributeValue::String(date));
}
}
if let Some(remark) = revision_info.remark {
if document_attributes.contains_key("revremark") {
ignored.remark = true;
} else {
document_attributes.insert("revremark".into(), AttributeValue::String(remark));
}
}
ignored
}