docx-rs/docx-core/src/reader/attributes/indent.rs

42 lines
1.3 KiB
Rust
Raw Normal View History

2020-02-12 08:44:53 +02:00
use std::str::FromStr;
use xml::attribute::OwnedAttribute;
use crate::types::*;
use super::super::errors::*;
pub type ReadIndentResult = Result<
(
Option<i32>,
Option<i32>,
Option<SpecialIndentType>,
Option<i32>,
),
ReaderError,
>;
pub fn read_indent(attrs: &[OwnedAttribute]) -> ReadIndentResult {
let mut start: Option<i32> = None;
let mut start_chars: Option<i32> = None;
let mut end: Option<i32> = None;
2020-02-12 08:44:53 +02:00
let mut special: Option<SpecialIndentType> = None;
for a in attrs {
let local_name = &a.name.local_name;
if local_name == "left" || local_name == "start" {
2020-06-12 13:13:44 +03:00
start = Some(f64::from_str(&a.value)? as i32);
} else if local_name == "leftChars" || local_name == "startChars" {
start_chars = Some(i32::from_str(&a.value)?);
2020-02-12 08:44:53 +02:00
} else if local_name == "end" || local_name == "right" {
2020-06-12 13:13:44 +03:00
end = Some(f64::from_str(&a.value)? as i32);
2020-02-12 08:44:53 +02:00
} else if local_name == "hanging" {
2020-06-12 13:13:44 +03:00
special = Some(SpecialIndentType::Hanging(f64::from_str(&a.value)? as i32))
2020-02-12 08:44:53 +02:00
} else if local_name == "firstLine" {
2020-06-12 13:13:44 +03:00
special = Some(SpecialIndentType::FirstLine(f64::from_str(&a.value)? as i32))
2020-02-12 08:44:53 +02:00
}
}
Ok((start, end, special, start_chars))
2020-02-12 08:44:53 +02:00
}