#[cfg(test)]
mod syntect {
use r3bl_rs_utils_core::{assert_eq2, color};
use crate::*;
#[test]
fn load_theme() -> std::io::Result<()> {
let theme = try_load_r3bl_theme()?;
dbg!(&theme);
Ok(())
}
#[test]
fn simple_md_highlight() {
use syntect::{easy::*, highlighting::*, parsing::*, util::*};
let md_content = include_str!("test_assets/valid-content.md");
let syntax_set = SyntaxSet::load_defaults_newlines();
let theme = try_load_r3bl_theme().unwrap();
let md_syntax = syntax_set.find_syntax_by_extension("md").unwrap();
let mut highlight_lines = HighlightLines::new(md_syntax, &theme);
let mut line_idx = 0;
let mut vec_styled_texts = vec![];
for line in
LinesWithEndings::from(md_content)
{
let vec_styled_str: Vec<(Style, &str)> =
highlight_lines.highlight_line(line, &syntax_set).unwrap();
let styled_texts = StyledTexts::from(vec_styled_str);
line_idx += 1;
for (col_idx, styled_text) in styled_texts.iter().enumerate() {
println!("[L#:{line_idx} => C#:{col_idx}] {styled_text:#?}");
}
vec_styled_texts.push(styled_texts);
}
assert_eq2!(vec_styled_texts.len(), 42);
{
let line = &vec_styled_texts[0];
assert_eq2!(line.len(), 4);
assert_eq2!(line.to_plain_text_us(), "# My Heading\n".into());
let col1 = &line[0];
assert_eq2!(col1.get_style().bold, true);
let col3 = &line[2];
assert_eq2!(col3.get_style().color_fg.unwrap(), color!(46, 206, 43));
}
{
let line = &vec_styled_texts[41];
assert_eq2!(line.len(), 1);
assert_eq2!(line.to_plain_text_us(), "--- END ---\n".into());
let col1 = &line[0];
assert_eq2!(col1.get_style().color_fg.unwrap(), color!(193, 179, 208));
}
}
}