use crate::mj_body::MJBody;
use crate::mj_head::MJHead;
#[cfg(feature = "json")]
mod json;
#[cfg(feature = "parse")]
pub mod parse;
#[cfg(feature = "print")]
mod print;
#[cfg(feature = "render")]
mod render;
pub const NAME: &str = "mjml";
#[cfg_attr(feature = "json", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "json", serde(untagged))]
enum MJMLChild {
MJHead(MJHead),
MJBody(MJBody),
}
#[derive(Debug, Default)]
struct MJMLChildren {
head: Option<MJHead>,
body: Option<MJBody>,
}
impl MJMLChildren {
fn is_empty(&self) -> bool {
self.head.is_none() && self.body.is_none()
}
}
#[derive(Debug, Default)]
pub struct MJML {
children: MJMLChildren,
}
impl MJML {
pub fn body(&self) -> Option<&MJBody> {
self.children.body.as_ref()
}
pub fn head(&self) -> Option<&MJHead> {
self.children.head.as_ref()
}
}