Skip to content

Commit 13ed93d

Browse files
LostSnail42zonyitoo
LostSnail42
authored andcommitted
Refactor write_to_opt to reduce code duplication.
1 parent 02e06dc commit 13ed93d

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

Diff for: src/lib.rs

+8-17
Original file line numberDiff line numberDiff line change
@@ -806,37 +806,28 @@ impl Ini {
806806
pub fn write_to_opt<W: Write>(&self, writer: &mut W, opt: WriteOption) -> io::Result<()> {
807807
let mut firstline = true;
808808

809-
if let Some(props) = self.sections.get(&None) {
810-
for (k, v) in props.iter() {
811-
let k_str = escape_str(k, opt.escape_policy);
812-
let v_str = escape_str(v, opt.escape_policy);
813-
write!(writer, "{}{}{}{}", k_str, opt.kv_separator, v_str, opt.line_separator)?;
814-
815-
firstline = false;
816-
}
817-
}
818-
819809
for (section, props) in &self.sections {
820-
if let Some(ref section) = *section {
810+
if !props.data.is_empty() {
821811
if firstline {
822812
firstline = false;
823813
} else {
824814
// Write an empty line between sections
825815
writer.write_all(opt.line_separator.as_str().as_bytes())?;
826816
}
817+
}
827818

819+
if let Some(ref section) = *section {
828820
write!(
829821
writer,
830822
"[{}]{}",
831823
escape_str(&section[..], opt.escape_policy),
832824
opt.line_separator
833825
)?;
834-
835-
for (k, v) in props.iter() {
836-
let k_str = escape_str(k, opt.escape_policy);
837-
let v_str = escape_str(v, opt.escape_policy);
838-
write!(writer, "{}{}{}{}", k_str, opt.kv_separator, v_str, opt.line_separator)?;
839-
}
826+
}
827+
for (k, v) in props.iter() {
828+
let k_str = escape_str(k, opt.escape_policy);
829+
let v_str = escape_str(v, opt.escape_policy);
830+
write!(writer, "{}{}{}{}", k_str, opt.kv_separator, v_str, opt.line_separator)?;
840831
}
841832
}
842833
Ok(())

0 commit comments

Comments
 (0)