use serde::Serialize;

use super::render_context::RenderContext;
use crate::error::CustomError;
use crate::intermediate::IStrikeThrough;

use super::macros::render;
use super::RenderObject;

#[derive(Debug, Serialize)]
#[serde(tag = "type")]
#[serde(rename = "strike_through")]
pub(crate) struct RenderStrikeThrough {
    children: Vec<RenderObject>,
    post_blank: organic::types::PostBlank,
}

render!(
    RenderStrikeThrough,
    IStrikeThrough,
    original,
    render_context,
    {
        let children = {
            let mut ret = Vec::new();
            for obj in original.children.iter() {
                ret.push(RenderObject::new(render_context.clone(), obj)?);
            }
            ret
        };

        Ok(RenderStrikeThrough {
            children,
            post_blank: original.post_blank,
        })
    }
);