Skip to content

Commit a1234e4

Browse files
committed
Remove indent_with_len() in favor of changing the signature
1 parent 80d3e77 commit a1234e4

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

src/se/mod.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -528,21 +528,18 @@ impl<'w, 'r, W: Write> Serializer<'w, 'r, W> {
528528
}
529529

530530
/// Configure indent for a serializer
531-
pub fn indent(&mut self, indent_char: char, indent_size: usize) -> &mut Self {
532-
self.indent_with_len(indent_char, indent_size, 0)
533-
}
534-
535-
/// Set initial indent level for a serializer
536-
pub fn indent_with_len(
531+
///
532+
/// Note: `initial_indent_amt` is the initial total length of the indent, not the indent level
533+
pub fn indent(
537534
&mut self,
538535
indent_char: char,
539536
indent_size: usize,
540-
indents_len: usize,
537+
initial_indent_amt: usize,
541538
) -> &mut Self {
542539
self.ser.indent = Indent::Owned(Indentation::new(
543540
indent_char as u8,
544541
indent_size,
545-
indents_len,
542+
initial_indent_amt,
546543
));
547544
self
548545
}

src/writer.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,10 @@ impl<'a, W: Write> ElementWriter<'a, W> {
361361
let mut serializer = Serializer::new(ToFmtWrite(self.writer.inner()));
362362

363363
if let Some(indent) = indent {
364-
serializer.indent_with_len(
364+
serializer.indent(
365365
indent.indent_char as char,
366366
indent.indent_size,
367-
indent.indents_len,
367+
indent.current_indent_len,
368368
);
369369
}
370370

@@ -391,11 +391,16 @@ where
391391

392392
#[derive(Clone)]
393393
pub(crate) struct Indentation {
394+
/// todo: does this even belong here? It has no impact on indentation logic.
394395
should_line_break: bool,
396+
/// The character code to be used for indentations (e.g. ` ` or `\t`)
395397
indent_char: u8,
398+
/// How many instances of the indent character ought to be used for each level of indentation
396399
indent_size: usize,
400+
/// Used as a cache for the bytes used for indentation
397401
indents: Vec<u8>,
398-
indents_len: usize,
402+
/// The current amount of indentation - must be less than indents.len()
403+
current_indent_len: usize,
399404
}
400405

401406
impl Indentation {
@@ -405,26 +410,28 @@ impl Indentation {
405410
indent_char,
406411
indent_size,
407412
indents: vec![indent_char; 128],
408-
indents_len,
413+
current_indent_len: indents_len,
409414
}
410415
}
411416

412417
/// Increase indentation by one level
413418
pub fn grow(&mut self) {
414-
self.indents_len += self.indent_size;
415-
if self.indents_len > self.indents.len() {
416-
self.indents.resize(self.indents_len, self.indent_char);
419+
self.current_indent_len += self.indent_size;
420+
if self.current_indent_len > self.indents.len() {
421+
self.indents
422+
.resize(self.current_indent_len, self.indent_char);
417423
}
418424
}
419425

420426
/// Decrease indentation by one level. Do nothing, if level already zero
421427
pub fn shrink(&mut self) {
422-
self.indents_len = self.indents_len.saturating_sub(self.indent_size);
428+
self.current_indent_len = self.current_indent_len.saturating_sub(self.indent_size);
423429
}
424430

425431
/// Returns indent string for current level
426432
pub fn current(&self) -> &[u8] {
427-
&self.indents[..self.indents_len]
433+
// todo: might be buggy if initialized > 128 without a call to grow() first
434+
&self.indents[..self.current_indent_len]
428435
}
429436
}
430437

0 commit comments

Comments
 (0)