use std::io::Read; use std::path::PathBuf; use syntect::dumps::{from_binary, from_uncompressed_data}; use syntect::highlighting::ThemeSet; use syntect::html::highlighted_html_for_string; use syntect::parsing::SyntaxSet; fn main() { let syntax_set: SyntaxSet = from_uncompressed_data(include_bytes!("../assets/newlines.packdump")).unwrap(); let theme_set = from_binary::(include_bytes!("../assets/themepack.themedump")); let mut theme = theme_set.themes["Catppuccin Latte"].clone(); theme.settings.background = None; let filename = std::env::args().nth(1).map(PathBuf::from); let extension = filename .as_ref() .and_then(|p| p.extension()) .and_then(|s| s.to_str()); let syntax = extension.and_then(|extension| syntax_set.find_syntax_by_extension(extension)); let mut file = String::new(); let _ = std::io::stdin().read_to_string(&mut file); let Some(syntax) = syntax else { print!("{file}"); return; }; let highlighted_file = highlighted_html_for_string(&file, &syntax_set, syntax, &theme).unwrap_or(file); println!("{highlighted_file}"); }