oak_html/highlighter/
mod.rs1use crate::language::HtmlLanguage;
2use oak_core::{Language, errors::ParseResult};
3use oak_highlight::{
4 highlighter::{HighlightResult, Highlighter, OakHighlighter},
5 themes::Theme,
6};
7
8pub struct HtmlHighlighter {
10 use_parser: bool,
11}
12
13impl HtmlHighlighter {
14 pub fn new(use_parser: bool) -> Self {
15 Self { use_parser }
16 }
17}
18
19impl Highlighter for HtmlHighlighter {
20 fn highlight<'a>(&self, source: &'a str, _language: &str, theme: Theme) -> ParseResult<HighlightResult<'a>> {
21 let highlighter = OakHighlighter::new();
22
23 if self.use_parser {
24 let config = HtmlLanguage::new();
25 let parser = crate::parser::HtmlParser::new(config);
26 let lexer = crate::lexer::HtmlLexer::new(&config);
27 highlighter.highlight_with_language::<HtmlLanguage, crate::parser::HtmlParser, crate::lexer::HtmlLexer<'_>>(source, theme, &parser, &lexer)
28 }
29 else {
30 highlighter.highlight(source, HtmlLanguage::NAME, theme)
31 }
32 }
33}