md_tui/highlight/
javascript.rs1use 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}