docx_reader/documents/elements/
indent.rsuse serde::ser::{SerializeStruct, Serializer};
use serde::Serialize;
use crate::types::*;
#[derive(Debug, Clone, PartialEq)]
pub struct Indent {
pub start: Option<i32>,
pub end: Option<i32>,
pub special_indent: Option<SpecialIndentType>,
pub start_chars: Option<i32>,
pub hanging_chars: Option<i32>,
pub first_line_chars: Option<i32>,
}
impl Indent {
pub fn new(
start: Option<i32>,
special_indent: Option<SpecialIndentType>,
end: Option<i32>,
start_chars: Option<i32>,
) -> Indent {
Indent {
start,
start_chars,
end,
special_indent,
hanging_chars: None,
first_line_chars: None,
}
}
pub fn end(mut self, end: i32) -> Self {
self.end = Some(end);
self
}
pub fn hanging_chars(mut self, chars: i32) -> Self {
self.hanging_chars = Some(chars);
self
}
pub fn first_line_chars(mut self, chars: i32) -> Self {
self.first_line_chars = Some(chars);
self
}
}
impl Serialize for Indent {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut t = serializer.serialize_struct("Indent", 3)?;
t.serialize_field("start", &self.start)?;
t.serialize_field("startChars", &self.start_chars)?;
t.serialize_field("end", &self.end)?;
t.serialize_field("specialIndent", &self.special_indent)?;
t.serialize_field("hangingChars", &self.hanging_chars)?;
t.serialize_field("firstLineChars", &self.first_line_chars)?;
t.end()
}
}