use harper_core::Lrc;
use harper_core::parsers::{Markdown, MarkdownOptions, Parser};
#[derive(Clone)]
pub struct GitCommitParser {
inner: Lrc<dyn Parser>,
}
impl GitCommitParser {
pub fn new(parser: Lrc<dyn Parser>) -> Self {
Self { inner: parser }
}
pub fn new_markdown(markdown_options: MarkdownOptions) -> Self {
Self::new(Lrc::new(Markdown::new(markdown_options)))
}
}
impl Parser for GitCommitParser {
fn parse(&self, source: &[char]) -> Vec<harper_core::Token> {
let end = source
.iter()
.position(|c| *c == '#')
.unwrap_or(source.len());
self.inner.parse(&source[0..end])
}
}