md_tui/highlight/
javascript.rs

1use tree_sitter_highlight::{HighlightConfiguration, HighlightEvent, Highlighter};
2
3use crate::highlight::HIGHLIGHT_NAMES;
4
5pub fn highlight_javascript(lines: &[u8]) -> Result<Vec<HighlightEvent>, String> {
6    let mut highlither = Highlighter::new();
7    let language = tree_sitter_javascript::LANGUAGE;
8
9    let mut javascript_config = HighlightConfiguration::new(
10        language.into(),
11        "javascript",
12        tree_sitter_javascript::HIGHLIGHT_QUERY,
13        "",
14        "",
15    )
16    .unwrap();
17
18    javascript_config.configure(&HIGHLIGHT_NAMES);
19
20    let highlights: Result<Vec<HighlightEvent>, String> =
21        if let Ok(lines) = highlither.highlight(&javascript_config, lines, None, |_| None) {
22            lines
23                .collect::<Result<Vec<_>, _>>()
24                .map_err(|e| e.to_string())
25        } else {
26            Err("Failed to highlight".to_string())
27        };
28
29    highlights
30}