From 8f6dda5cd3ccf9fa844159c7c438633660606d87 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Thu, 16 May 2019 17:58:32 -0700 Subject: [PATCH] Use rbx_xml 0.9.0's config to read unknown properties --- server/src/commands/build.rs | 9 +++++++-- server/src/rbx_snapshot.rs | 5 ++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/server/src/commands/build.rs b/server/src/commands/build.rs index ffb054e0..716ed717 100644 --- a/server/src/commands/build.rs +++ b/server/src/commands/build.rs @@ -74,6 +74,11 @@ impl_from!(BuildError { SnapshotError => SnapshotError, }); +fn xml_encode_config() -> rbx_xml::EncodeOptions { + rbx_xml::EncodeOptions::new() + .property_behavior(rbx_xml::EncodePropertyBehavior::WriteUnknown) +} + pub fn build(options: &BuildOptions) -> Result<(), BuildError> { let output_kind = options.output_kind .or_else(|| detect_output_kind(options)) @@ -100,7 +105,7 @@ pub fn build(options: &BuildOptions) -> Result<(), BuildError> { // descendants. let root_id = tree.get_root_id(); - rbx_xml::to_writer_default(&mut file, &tree, &[root_id])?; + rbx_xml::to_writer(&mut file, &tree, &[root_id], xml_encode_config())?; }, OutputKind::Rbxlx => { // Place files don't contain an entry for the DataModel, but our @@ -108,7 +113,7 @@ pub fn build(options: &BuildOptions) -> Result<(), BuildError> { let root_id = tree.get_root_id(); let top_level_ids = tree.get_instance(root_id).unwrap().get_children_ids(); - rbx_xml::to_writer_default(&mut file, &tree, top_level_ids)?; + rbx_xml::to_writer(&mut file, &tree, top_level_ids, xml_encode_config())?; }, OutputKind::Rbxm => { let root_id = tree.get_root_id(); diff --git a/server/src/rbx_snapshot.rs b/server/src/rbx_snapshot.rs index 8e9ba51d..7be71d3b 100644 --- a/server/src/rbx_snapshot.rs +++ b/server/src/rbx_snapshot.rs @@ -653,7 +653,10 @@ fn snapshot_xml_model_file<'source>( .file_stem().expect("Could not extract file stem") .to_str().expect("Could not convert path to UTF-8"); - let temp_tree = rbx_xml::from_reader_default(file.contents.as_slice()) + let options = rbx_xml::DecodeOptions::new() + .property_behavior(rbx_xml::DecodePropertyBehavior::ReadUnknown); + + let temp_tree = rbx_xml::from_reader(file.contents.as_slice(), options) .map_err(|inner| SnapshotError::XmlModelDecodeError { inner, path: file.path.clone(),