From 0d77a0d0c5eca5666a5bb5c62a8dd69f0ce9d3fe Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 15 May 2025 07:43:35 -0700 Subject: [PATCH] work --- rust/pspp/src/output/spv.rs | 52 +++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/rust/pspp/src/output/spv.rs b/rust/pspp/src/output/spv.rs index df39a7126c..f8b0ff22e3 100644 --- a/rust/pspp/src/output/spv.rs +++ b/rust/pspp/src/output/spv.rs @@ -427,23 +427,6 @@ impl Heading { } } -enum Child { - Container(Container), - Heading(Box), -} - -impl Child { - fn emit(&self, writer: &mut XmlWriter) -> IoResult<()> - where - W: Write, - { - match self { - Child::Container(container) => container.emit(writer), - Child::Heading(heading) => heading.emit(writer), - } - } -} - fn maybe_with_attribute<'a, 'b, W, I>( element: ElementWriter<'a, W>, attr: Option, @@ -471,12 +454,19 @@ impl Container { where W: Write, { - let mut element = writer - .create_element("container") - .with_attribute(("visibility", if self.show { "visible" } else { "hidden" })); - if self.page_break_before { - element = element.with_attribute(("page-break-before", "always")); - } + let mut element = if !self.content.is_heading() { + let mut element = writer + .create_element("container") + .with_attribute(("visibility", if self.show { "visible" } else { "hidden" })); + if self.page_break_before { + element = element.with_attribute(("page-break-before", "always")); + } + element + } else { + let mut element = writer + .create_element("heading") + .with_attribute(("visibility", if self.show { "visible" } else { "hidden" })); + }; element.write_inner_content(|writer| { self.label.emit(writer)?; self.content @@ -502,6 +492,7 @@ impl Label { } enum Content { + Heading(Vec>), Table(Table), } @@ -527,6 +518,21 @@ impl Content { ); element } + + fn is_heading(&self) -> bool { + match self { + Content::Heading(_) => true, + _ => false, + } + } + + fn element_name(&self) -> &'static str { + if self.is_heading() { + "heading" + } else { + "container" + } + } } struct Table { -- 2.30.2