use super::{ArrayCtx, ObjectCtx};
use crate::serialization::output::Out;
fn push_text_omission_line(out: &mut Out<'_>, omitted: usize) {
match out.style() {
crate::serialization::types::Style::Strict => {}
crate::serialization::types::Style::Default => {
out.push_omission();
out.push_newline();
}
crate::serialization::types::Style::Detailed => {
out.push_omission();
out.push_str(" ");
out.push_str(&format!("{omitted} more lines "));
out.push_omission();
out.push_newline();
}
}
}
pub(super) fn render_array(ctx: &ArrayCtx<'_>, out: &mut Out<'_>) {
let mut last_was_omission = false;
if ctx.omitted_at_start && ctx.omitted > 0 {
push_text_omission_line(out, ctx.omitted);
last_was_omission = true;
}
for (_, (_, item)) in ctx.children.iter() {
out.push_str(item);
out.push_newline();
last_was_omission = false;
}
if !ctx.omitted_at_start && ctx.omitted > 0 && !last_was_omission {
push_text_omission_line(out, ctx.omitted);
}
}
pub(super) fn render_object(ctx: &ObjectCtx<'_>, out: &mut Out<'_>) {
super::pseudo::render_object(ctx, out);
}