use serde::ser::SerializeStruct;
use serde::{Deserialize, Serialize, Serializer};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Deserialize, Default)]
pub struct DocumentMetadata {
pub page_count: Option<usize>,
pub word_count: Option<usize>,
pub character_count: Option<usize>,
pub character_count_no_spaces: Option<usize>,
pub paragraph_count: Option<usize>,
pub sheet_count: Option<usize>,
pub sheet_stats: Option<serde_json::Value>,
pub file_size: Option<usize>,
pub title: Option<String>,
pub author: Option<String>,
pub subject: Option<String>,
pub description: Option<String>,
pub creation_date: Option<String>,
pub modified_date: Option<String>,
pub last_modified_by: Option<String>,
pub revision: Option<i64>,
}
impl Serialize for DocumentMetadata {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut state = serializer.serialize_struct("DocumentMetadata", 17)?;
crate::serialize_optional!(state, self.page_count, "page_count");
crate::serialize_optional!(state, self.word_count, "word_count");
crate::serialize_optional!(state, self.character_count, "character_count");
crate::serialize_optional!(
state,
self.character_count_no_spaces,
"character_count_no_spaces"
);
crate::serialize_optional!(state, self.paragraph_count, "paragraph_count");
crate::serialize_optional!(state, self.sheet_count, "sheet_count");
crate::serialize_optional!(state, self.sheet_stats, "sheet_stats");
crate::serialize_optional!(state, self.file_size, "file_size");
crate::serialize_optional!(state, self.title, "title");
crate::serialize_optional!(state, self.author, "author");
crate::serialize_optional!(state, self.subject, "subject");
crate::serialize_optional!(state, self.description, "description");
crate::serialize_optional!(state, self.creation_date, "creation_date");
crate::serialize_optional!(state, self.modified_date, "modified_date");
crate::serialize_optional!(state, self.last_modified_by, "last_modified_by");
crate::serialize_optional!(state, self.revision, "revision");
state.end()
}
}
crate::impl_minimal_fallback!(DocumentMetadata, file_size);