diff --git a/yaserde/src/ser/mod.rs b/yaserde/src/ser/mod.rs index 45c2d0e..4b35213 100644 --- a/yaserde/src/ser/mod.rs +++ b/yaserde/src/ser/mod.rs @@ -24,9 +24,9 @@ pub fn to_string_with_config(model: &T, config: &Config) -> Resu pub fn serialize_with_writer( model: &T, writer: W, - _config: &Config, + config: &Config, ) -> Result { - let mut serializer = Serializer::new_from_writer(writer); + let mut serializer = Serializer::new_from_writer(writer, config); match YaSerialize::serialize(model, &mut serializer) { Ok(()) => Ok(serializer.into_inner()), Err(msg) => Err(msg), @@ -67,10 +67,17 @@ impl<'de, W: Write> Serializer { } } - pub fn new_from_writer(writer: W) -> Self { - let config = EmitterConfig::new().cdata_to_characters(true); + pub fn new_from_writer(writer: W, config: &Config) -> Self { + let mut emitter_config = EmitterConfig::new() + .cdata_to_characters(true) + .perform_indent(config.perform_indent) + .write_document_declaration(config.write_document_declaration); - Self::new(EventWriter::new_with_config(writer, config)) + if let Some(indent_string_value) = &config.indent_string { + emitter_config = emitter_config.indent_string(indent_string_value.clone()); + } + + Self::new(EventWriter::new_with_config(writer, emitter_config)) } pub fn new_for_inner(writer: W) -> Self {