asciidoc_parser/blocks/
simple.rsuse super::{ContentModel, IsBlock};
use crate::{inlines::Inline, span::MatchedItem, strings::CowStr, HasSpan, Span};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SimpleBlock<'src>(Inline<'src>);
impl<'src> SimpleBlock<'src> {
pub(crate) fn parse(source: Span<'src>) -> Option<MatchedItem<'src, Self>> {
let inline = Inline::parse_lines(source)?;
Some(MatchedItem {
item: Self(inline.item),
after: inline.after.discard_empty_lines(),
})
}
pub fn inline(&self) -> &Inline<'src> {
&self.0
}
}
impl<'src> IsBlock<'src> for SimpleBlock<'src> {
fn content_model(&self) -> ContentModel {
ContentModel::Simple
}
fn context(&self) -> CowStr<'src> {
"paragraph".into()
}
}
impl<'src> HasSpan<'src> for SimpleBlock<'src> {
fn span(&'src self) -> &'src Span<'src> {
self.0.span()
}
}