mod anchor;
mod container;
mod element;
mod heading;
mod link;
mod list;
mod module;
pub use self::anchor::*;
pub use self::container::*;
pub use self::element::*;
pub use self::heading::*;
pub use self::link::*;
pub use self::list::*;
pub use self::module::*;
use crate::parsing::{ParseOutcome, ParseWarning};
use std::borrow::Cow;
use std::collections::HashMap;
pub type AttributeMap<'t> = HashMap<Cow<'t, str>, Cow<'t, str>>;
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub struct SyntaxTree<'t> {
pub elements: Vec<Element<'t>>,
pub styles: Vec<Cow<'t, str>>,
}
impl<'t> SyntaxTree<'t> {
pub(crate) fn from_element_result(
elements: Vec<Element<'t>>,
warnings: Vec<ParseWarning>,
styles: Vec<Cow<'t, str>>,
) -> ParseOutcome<Self> {
let tree = SyntaxTree { elements, styles };
ParseOutcome::new(tree, warnings)
}
}