cleanup
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 2 Jan 2026 04:10:06 +0000 (20:10 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 2 Jan 2026 04:10:06 +0000 (20:10 -0800)
rust/pspp/src/spv/read/legacy_xml.rs

index 5f742f8c8d3f4b704aae3a77ebc71bbd116e5cab..aabd804a7fad5b739458896ac12e3f0732d430f0 100644 (file)
@@ -40,7 +40,7 @@ use crate::{
         self, Axis2, Axis3, Category, CategoryLocator, Dimension, Group, Leaf, Length, PivotTable,
         look::{
             self, Area, AreaStyle, CellStyle, Color, HeadingRegion, HorzAlign, Look, RowParity,
-            Stroke, VertAlign,
+            VertAlign,
         },
         value::Value,
     },
@@ -1193,80 +1193,36 @@ struct StringFormat {
 struct Format {
     #[serde(rename = "@baseFormat")]
     base_format: Option<BaseFormat>,
-    #[serde(rename = "@errorCharacter")]
-    error_character: Option<char>,
-    #[serde(rename = "@separatorChars")]
-    separator_chars: Option<String>,
     #[serde(rename = "@mdyOrder")]
     mdy_order: Option<MdyOrder>,
-    #[serde(rename = "@showYear")]
-    show_year: Option<bool>,
     #[serde(rename = "@showQuarter")]
     show_quarter: Option<bool>,
     #[serde(rename = "@quarterPrefix")]
-    quarter_prefix: Option<String>,
-    #[serde(rename = "@quarterSuffix")]
-    quarter_suffix: Option<String>,
-    #[serde(rename = "@yearAbbreviation")]
     year_abbreviation: Option<bool>,
-    #[serde(rename = "@showMonth")]
-    show_month: Option<bool>,
     #[serde(rename = "@monthFormat")]
     month_format: Option<MonthFormat>,
-    #[serde(rename = "@dayPadding")]
-    day_padding: Option<bool>,
-    #[serde(rename = "@dayOfMonthPadding")]
-    day_of_month_padding: Option<bool>,
     #[serde(rename = "@showWeek")]
     show_week: Option<bool>,
-    #[serde(rename = "@weekPadding")]
-    week_padding: Option<bool>,
-    #[serde(rename = "@weekSuffix")]
-    week_suffix: Option<String>,
-    #[serde(rename = "@showDayOfWeek")]
-    show_day_of_week: Option<bool>,
-    #[serde(rename = "@dayOfWeekAbbreviation")]
-    day_of_week_abbreviation: Option<bool>,
-    #[serde(rename = "hourPadding")]
-    hour_padding: Option<bool>,
-    #[serde(rename = "minutePadding")]
-    minute_padding: Option<bool>,
-    #[serde(rename = "secondPadding")]
-    second_padding: Option<bool>,
     #[serde(rename = "@showDay")]
     show_day: Option<bool>,
     #[serde(rename = "@showHour")]
     show_hour: Option<bool>,
-    #[serde(rename = "@showMinute")]
-    show_minute: Option<bool>,
     #[serde(rename = "@showSecond")]
     show_second: Option<bool>,
     #[serde(rename = "@showMillis")]
     show_millis: Option<bool>,
-    #[serde(rename = "@dayType")]
-    day_type: Option<DayType>,
-    #[serde(rename = "@hourFormat")]
-    hour_format: Option<HourFormat>,
-    #[serde(rename = "@minimumIntegerDigits")]
-    minimum_integer_digits: Option<usize>,
     #[serde(rename = "@maximumFractionDigits")]
     maximum_fraction_digits: Option<i64>,
-    #[serde(rename = "@minimumFractionDigits")]
-    minimum_fraction_digits: Option<usize>,
     #[serde(rename = "@useGrouping")]
     use_grouping: Option<bool>,
     #[serde(rename = "@scientific")]
     scientific: Option<Scientific>,
-    #[serde(rename = "@small")]
-    small: Option<f64>,
     #[serde(default, rename = "@prefix")]
     prefix: String,
     #[serde(default, rename = "@suffix")]
     suffix: String,
     #[serde(rename = "@tryStringsAsNumbers")]
     try_strings_as_numbers: Option<bool>,
-    #[serde(rename = "@negativesOutside")]
-    negatives_outside: Option<bool>,
     #[serde(default, rename = "relabel")]
     relabels: Vec<Relabel>,
     #[serde(default, rename = "affix")]
@@ -1286,18 +1242,12 @@ impl Format {
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct NumberFormat {
-    #[serde(rename = "@minimumIntegerDigits")]
-    minimum_integer_digits: Option<i64>,
     #[serde(rename = "@maximumFractionDigits")]
     maximum_fraction_digits: Option<i64>,
-    #[serde(rename = "@minimumFractionDigits")]
-    minimum_fraction_digits: Option<i64>,
     #[serde(rename = "@useGrouping")]
     use_grouping: Option<bool>,
     #[serde(rename = "@scientific")]
     scientific: Option<Scientific>,
-    #[serde(rename = "@small")]
-    small: Option<f64>,
     #[serde(default, rename = "@prefix")]
     prefix: String,
     #[serde(default, rename = "@suffix")]
@@ -1369,58 +1319,24 @@ impl<'a> SignificantNumberFormat<'a> {
 struct DateTimeFormat {
     #[serde(rename = "@baseFormat")]
     base_format: BaseFormat,
-    #[serde(rename = "@separatorChars")]
-    separator_chars: Option<String>,
     #[serde(rename = "@mdyOrder")]
     mdy_order: Option<MdyOrder>,
-    #[serde(rename = "@showYear")]
-    show_year: Option<bool>,
     #[serde(rename = "@showQuarter")]
     show_quarter: Option<bool>,
-    #[serde(rename = "@quarterPrefix")]
-    quarter_prefix: Option<String>,
-    #[serde(rename = "@quarterSuffix")]
-    quarter_suffix: Option<String>,
     #[serde(rename = "@yearAbbreviation")]
     year_abbreviation: Option<bool>,
-    #[serde(rename = "@showMonth")]
-    show_month: Option<bool>,
     #[serde(rename = "@monthFormat")]
     month_format: Option<MonthFormat>,
-    #[serde(rename = "@dayPadding")]
-    day_padding: Option<bool>,
-    #[serde(rename = "@dayOfMonthPadding")]
-    day_of_month_padding: Option<bool>,
     #[serde(rename = "@showWeek")]
     show_week: Option<bool>,
-    #[serde(rename = "@weekPadding")]
-    week_padding: Option<bool>,
-    #[serde(rename = "@weekSuffix")]
-    week_suffix: Option<String>,
-    #[serde(rename = "@showDayOfWeek")]
-    show_day_of_week: Option<bool>,
-    #[serde(rename = "@dayOfWeekAbbreviation")]
-    day_of_week_abbreviation: Option<bool>,
-    #[serde(rename = "hourPadding")]
-    hour_padding: Option<bool>,
-    #[serde(rename = "minutePadding")]
-    minute_padding: Option<bool>,
-    #[serde(rename = "secondPadding")]
-    second_padding: Option<bool>,
     #[serde(rename = "@showDay")]
     show_day: Option<bool>,
     #[serde(rename = "@showHour")]
     show_hour: Option<bool>,
-    #[serde(rename = "@showMinute")]
-    show_minute: Option<bool>,
     #[serde(rename = "@showSecond")]
     show_second: Option<bool>,
     #[serde(rename = "@showMillis")]
     show_millis: Option<bool>,
-    #[serde(rename = "@dayType")]
-    day_type: Option<DayType>,
-    #[serde(rename = "@hourFormat")]
-    hour_format: Option<HourFormat>,
     #[serde(default, rename = "affix")]
     affixes: Vec<Affix>,
 }
@@ -1542,26 +1458,14 @@ fn date_time_format(
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct ElapsedTimeFormat {
-    #[serde(rename = "@dayPadding")]
-    day_padding: Option<bool>,
-    #[serde(rename = "hourPadding")]
-    hour_padding: Option<bool>,
-    #[serde(rename = "minutePadding")]
-    minute_padding: Option<bool>,
-    #[serde(rename = "secondPadding")]
-    second_padding: Option<bool>,
     #[serde(rename = "@showDay")]
     show_day: Option<bool>,
     #[serde(rename = "@showHour")]
     show_hour: Option<bool>,
-    #[serde(rename = "@showMinute")]
-    show_minute: Option<bool>,
     #[serde(rename = "@showSecond")]
     show_second: Option<bool>,
     #[serde(rename = "@showMillis")]
     show_millis: Option<bool>,
-    #[serde(rename = "@showYear")]
-    show_year: Option<bool>,
     #[serde(default, rename = "affix")]
     affixes: Vec<Affix>,
 }
@@ -1605,24 +1509,6 @@ enum MonthFormat {
     PaddedNumber,
 }
 
-#[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize)]
-#[serde(rename_all = "camelCase")]
-enum DayType {
-    Month,
-    Year,
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize)]
-#[serde(rename_all = "camelCase")]
-enum HourFormat {
-    #[serde(rename = "AMPM")]
-    AmPm,
-    #[serde(rename = "AS_24")]
-    As24,
-    #[serde(rename = "AS_12")]
-    As12,
-}
-
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize)]
 #[serde(rename_all = "camelCase")]
 enum Scientific {
@@ -1639,26 +1525,6 @@ struct Affix {
     /// the second, and so on.
     #[serde(rename = "@definesReference")]
     defines_reference: u64,
-
-    /// Position for the footnote label.
-    #[serde(rename = "@position")]
-    position: Position,
-
-    /// Whether the affix is a suffix (true) or a prefix (false).
-    #[serde(rename = "@suffix")]
-    suffix: bool,
-
-    /// The text of the suffix or prefix. Typically a letter, e.g. `a` for
-    /// footnote 1, `b` for footnote 2, ...
-    #[serde(rename = "@value")]
-    value: String,
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize)]
-#[serde(rename_all = "camelCase")]
-enum Position {
-    Subscript,
-    Superscript,
 }
 
 #[derive(Deserialize, Debug)]
@@ -1689,42 +1555,6 @@ struct Style {
     #[serde(rename = "@color")]
     color: Option<Color>,
 
-    /// Not used.
-    #[serde(rename = "@color2")]
-    color2: Option<Color>,
-
-    /// Normally 0. The value -90 causes inner column or outer row labels to be
-    /// rotated vertically.
-    #[serde(rename = "@labelAngle")]
-    label_angle: Option<f64>,
-
-    #[serde(rename = "@border-bottom")]
-    border_bottom: Option<Stroke>,
-
-    #[serde(rename = "@border-top")]
-    border_top: Option<Stroke>,
-
-    #[serde(rename = "@border-left")]
-    border_left: Option<Stroke>,
-
-    #[serde(rename = "@border-right")]
-    border_right: Option<Stroke>,
-
-    #[serde(rename = "@border-bottom-color")]
-    border_bottom_color: Option<Color>,
-
-    #[serde(rename = "@border-top-color")]
-    border_top_color: Option<Color>,
-
-    #[serde(rename = "@border-left-color")]
-    border_left_color: Option<Color>,
-
-    #[serde(rename = "@border-right-color")]
-    border_right_color: Option<Color>,
-
-    #[serde(rename = "@font-family")]
-    font_family: Option<String>,
-
     #[serde(rename = "@font-size")]
     font_size: Option<String>,
 
@@ -1737,30 +1567,12 @@ struct Style {
     #[serde(rename = "@font-underline")]
     font_underline: Option<FontUnderline>,
 
-    #[serde(rename = "@margin-bottom")]
-    margin_bottom: Option<Length>,
-
-    #[serde(rename = "@margin-top")]
-    margin_top: Option<Length>,
-
-    #[serde(rename = "@margin-left")]
-    margin_left: Option<Length>,
-
-    #[serde(rename = "@margin-right")]
-    margin_right: Option<Length>,
-
     #[serde(rename = "@textAlignment")]
     text_alignment: Option<TextAlignment>,
 
-    #[serde(rename = "@labelLocationHorizontal")]
-    label_location_horizontal: Option<LabelLocation>,
-
     #[serde(rename = "@labelLocationVertical")]
     label_location_vertical: Option<LabelLocation>,
 
-    #[serde(rename = "@size")]
-    size: Option<String>,
-
     #[serde(rename = "@width")]
     width: Option<String>,
 
@@ -2175,38 +1987,12 @@ impl Set {
     }
 }
 
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct SetStyle {
-    #[serde(rename = "@target")]
-    target: String,
-
-    #[serde(rename = "@style")]
-    style: Ref<Style>,
-}
-
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct SetMetaData {
-    #[serde(rename = "@target")]
-    target: Ref<Graph>,
-
-    #[serde(rename = "@key")]
-    key: String,
-
-    #[serde(rename = "@value")]
-    value: String,
-}
-
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct SetFormat {
     #[serde(rename = "@target")]
     target: String,
 
-    #[serde(rename = "@reset")]
-    reset: Option<bool>,
-
     #[serde(rename = "$value")]
     child: Option<SetFormatChild>,
 }
@@ -2246,25 +2032,9 @@ impl SetFormatChild {
     }
 }
 
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct SetFrameStyle {
-    #[serde(rename = "@style")]
-    style: Ref<Style>,
-
-    #[serde(rename = "@target")]
-    target: Ref<MajorTicks>,
-}
-
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct Interval {
-    #[serde(rename = "@id")]
-    id: Option<String>,
-
-    #[serde(rename = "@style")]
-    style: Ref<Style>,
-
     labeling: Labeling,
     footnotes: Option<Footnotes>,
 }
@@ -2288,12 +2058,6 @@ struct Labeling {
     #[serde(rename = "@id")]
     id: Option<String>,
 
-    #[serde(rename = "@style")]
-    style: Option<Ref<Style>>,
-
-    #[serde(rename = "@variable")]
-    variable: String,
-
     #[serde(rename = "$value", default)]
     children: Vec<LabelingChild>,
 }
@@ -2323,8 +2087,9 @@ impl Labeling {
 #[serde(rename_all = "camelCase")]
 enum LabelingChild {
     Formatting(Formatting),
-    Format(Format),
     Footnotes(Footnotes),
+    #[serde(other)]
+    Other,
 }
 
 impl LabelingChild {
@@ -2364,9 +2129,6 @@ struct Footnote {
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct Footnotes {
-    #[serde(rename = "@superscript")]
-    superscript: Option<bool>,
-
     #[serde(rename = "@variable")]
     variable: String,
 
@@ -2399,23 +2161,15 @@ struct FootnoteMapping {
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct FacetLevel {
-    #[serde(rename = "@id")]
-    id: Option<String>,
-
     #[serde(rename = "@level")]
     level: usize,
 
-    #[serde(rename = "@gap")]
-    gap: Option<Length>,
     axis: Axis,
 }
 
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct Axis {
-    #[serde(rename = "@style")]
-    style: Ref<Style>,
-
     label: Option<Label>,
     major_ticks: MajorTicks,
 }
@@ -2429,17 +2183,8 @@ struct MajorTicks {
     #[serde(rename = "@labelAngle")]
     label_angle: f64,
 
-    #[serde(rename = "@length")]
-    length: Length,
-
     #[serde(rename = "@style")]
     style: Ref<Style>,
-
-    #[serde(rename = "@labelFrequency")]
-    label_frequency: Option<i64>,
-
-    #[serde(rename = "@stagger")]
-    stagger: Option<bool>,
 }
 
 #[derive(Deserialize, Debug)]
@@ -2462,7 +2207,7 @@ impl Label {
     fn text(&self) -> &[Text] {
         match &self.child {
             LabelChild::Text(texts) => texts.as_slice(),
-            LabelChild::DescriptionGroup(_) => &[],
+            LabelChild::Other => &[],
         }
     }
 }
@@ -2480,7 +2225,8 @@ enum Purpose {
 #[serde(rename_all = "camelCase")]
 enum LabelChild {
     Text(Vec<Text>),
-    DescriptionGroup(DescriptionGroup),
+    #[serde(other)]
+    Other,
 }
 
 #[derive(Deserialize, Debug)]
@@ -2492,61 +2238,14 @@ struct Text {
     #[serde(rename = "@definesReference")]
     defines_reference: Option<NonZeroUsize>,
 
-    #[serde(rename = "@position")]
-    position: Option<Position>,
-
-    #[serde(rename = "@style")]
-    style: Option<Ref<Style>>,
-
     #[serde(default, rename = "$text")]
     text: String,
 }
 
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct DescriptionGroup {
-    #[serde(rename = "@target")]
-    target: Ref<Faceting>,
-
-    #[serde(rename = "@separator")]
-    separator: Option<String>,
-
-    #[serde(rename = "$value")]
-    children: Vec<DescriptionGroupChild>,
-}
-
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-enum DescriptionGroupChild {
-    Description(Description),
-    Text(Text),
-}
-
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct Description {
-    #[serde(rename = "@name")]
-    name: Name,
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq, Deserialize)]
-#[serde(rename_all = "camelCase")]
-enum Name {
-    Variable,
-    Value,
-}
-
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct LabelFrame {
-    #[serde(rename = "@id")]
-    id: Option<String>,
-
-    #[serde(rename = "@style")]
-    style: Option<Ref<Style>>,
-
     label: Option<Label>,
-    paragraph: Option<Paragraph>,
 }
 
 impl LabelFrame {
@@ -2580,26 +2279,10 @@ impl LabelFrame {
     }
 }
 
-#[derive(Deserialize, Debug)]
-#[serde(rename_all = "camelCase")]
-struct Paragraph;
-
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 struct Container {
-    #[serde(rename = "@style")]
-    style: Ref<Style>,
-
-    #[serde(default, rename = "extension")]
-    extensions: Option<ContainerExtension>,
     #[serde(rename = "labelFrame")]
     #[serde(default)]
     label_frames: Vec<LabelFrame>,
 }
-
-#[derive(Deserialize, Debug)]
-#[serde(rename = "extension", rename_all = "camelCase")]
-struct ContainerExtension {
-    #[serde(rename = "@combinedFootnotes")]
-    combined_footnotes: Option<bool>,
-}