Skip to main content

docx_rs/documents/elements/
paragraph_ext.rs

1//! Fork-only extension builders for [`Paragraph`].
2//!
3//! Isolated so upstream rebases never conflict here. Pure delegation over the
4//! crate's public API. See `FORK_CHANGES.md`.
5
6use super::*;
7
8impl Paragraph {
9    /// Sets the paragraph borders (`<w:pPr><w:pBdr/>`).
10    ///
11    /// Convenience delegator so callers never mutate the public `property`
12    /// field directly.
13    pub fn set_borders(mut self, borders: ParagraphBorders) -> Self {
14        self.property = self.property.set_borders(borders);
15        self
16    }
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22    use crate::documents::build_xml::BuildXML;
23    use crate::{BorderType, ParagraphBorderPosition};
24
25    #[test]
26    fn paragraph_set_borders_emits_pbdr() {
27        let border = ParagraphBorder::new(ParagraphBorderPosition::Bottom)
28            .val(BorderType::Single)
29            .size(6)
30            .space(1)
31            .color("CCCCCC");
32        let borders = ParagraphBorders::with_empty().set(border);
33        let p = Paragraph::new().set_borders(borders);
34        let xml = String::from_utf8(p.build()).unwrap();
35        assert!(xml.contains("<w:pBdr>"), "got: {xml}");
36        assert!(xml.contains(r#"w:color="CCCCCC""#), "got: {xml}");
37    }
38}