syntastica 0.6.1

Modern and easy syntax highlighting using tree-sitter
Documentation
use std::{collections::BTreeMap, env};

use syntastica::{language_set::SupportedLanguage, renderer::TerminalRenderer, Processor};
use syntastica_parsers_git::{Lang, LanguageSetImpl};

fn main() {
    let filter = env::args().nth(1).unwrap_or_default();

    let language_set = LanguageSetImpl::new();
    let mut processor = Processor::new(&language_set);

    let examples: BTreeMap<String, String> =
        toml::from_str(include_str!("./example_programs.toml")).unwrap();

    for (lang, code) in &examples {
        if !lang.contains(&filter) {
            continue;
        }

        println!("\n\x1b[1m{lang}:\x1b[0m\n{}", "-".repeat(50));
        if let Err(err) = example(&mut processor, code, lang) {
            println!("ERROR: {err}");
        }
        println!("{}", "-".repeat(50))
    }
}

fn example(
    processor: &mut Processor<LanguageSetImpl>,
    code: &str,
    lang_name: &str,
) -> syntastica::Result<()> {
    println!(
        "{}",
        syntastica::render(
            &processor.process(code.trim(), Lang::for_name(lang_name, &())?)?,
            &mut TerminalRenderer::new(None),
            syntastica_themes::one::dark(),
        )
    );
    Ok(())
}