docx-rs 0.4.6

A .docx file writer with Rust/WebAssembly.
Documentation
use serde::{Deserialize, Serialize};

use crate::documents::BuildXML;
use crate::types::*;
use crate::xml_builder::*;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextBorder {
    pub border_type: BorderType,
    pub size: usize,
    pub color: String,
    pub space: usize,
}

impl TextBorder {
    pub fn new() -> Self {
        TextBorder::default()
    }

    pub fn color(mut self, color: impl Into<String>) -> Self {
        self.color = color.into();
        self
    }

    pub fn size(mut self, size: usize) -> Self {
        self.size = size;
        self
    }

    pub fn space(mut self, space: usize) -> Self {
        self.space = space;
        self
    }

    pub fn border_type(mut self, border_type: BorderType) -> Self {
        self.border_type = border_type;
        self
    }
}

impl Default for TextBorder {
    fn default() -> Self {
        TextBorder {
            border_type: BorderType::Single,
            size: 4,
            space: 0,
            color: "auto".to_owned(),
        }
    }
}

impl BuildXML for TextBorder {
    fn build(&self) -> Vec<u8> {
        let b = XMLBuilder::new();
        b.text_border(self.border_type, self.size, self.space, &self.color)
            .build()
    }
}