Skip to content

Commit fc62309

Browse files
authored
Merge pull request #214 from novcn/master
Enable writing manual identation
2 parents f93f386 + fcdb9da commit fc62309

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/writer.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,28 @@ impl<W: Write> Writer<W> {
145145
}
146146
Ok(wrote + self.write(before)? + self.write(value)? + self.write(after)?)
147147
}
148+
149+
/// Manually write a newline and indentation at the proper level.
150+
///
151+
/// This can be used when the heuristic to line break and indent after any [Event] apart
152+
/// from [Text] fails such as when a [Start] occurs directly after [Text].
153+
/// This method will do nothing if `Writer` was not constructed with `new_with_indent`.
154+
///
155+
/// [Event]: events/enum.Event.html
156+
/// [Text]: events/enum.Event.html#variant.Text
157+
/// [Start]: events/enum.Event.html#variant.Start
158+
pub fn write_indent(&mut self) -> Result<usize> {
159+
let mut wrote = 0;
160+
if let Some(ref i) = self.indent {
161+
wrote = self.writer.write(b"\n").map_err(Error::Io)?
162+
+ self
163+
.writer
164+
.write(&i.indents[..i.indents_len])
165+
.map_err(Error::Io)?;
166+
}
167+
Ok(wrote)
168+
}
169+
148170
}
149171

150172
#[derive(Clone)]

0 commit comments

Comments
 (0)