summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs27
1 files changed, 8 insertions, 19 deletions
diff --git a/src/main.rs b/src/main.rs
index 6028801..d045db6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,34 +1,23 @@
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;
+use arborium::{detect_language, Highlighter};
fn main() {
- let syntax_set: SyntaxSet =
- from_uncompressed_data(include_bytes!("../assets/newlines.packdump")).unwrap();
- let theme_set = from_binary::<ThemeSet>(include_bytes!("../assets/themepack.themedump"));
- let mut theme = theme_set.themes["Coldark-Cold"].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 {
+ let language = filename.and_then(|filename| detect_language(&filename.to_string_lossy()));
+ let Some(language) = language else {
print!("{file}");
return;
};
- let highlighted_file =
- highlighted_html_for_string(&file, &syntax_set, syntax, &theme).unwrap_or(file);
+ let mut highlighter = Highlighter::with_config(arborium::Config {
+ html_format: arborium::HtmlFormat::ClassNames,
+ ..Default::default()
+ });
+ let highlighted_file = highlighter.highlight(language, &file).unwrap_or(file);
println!("{highlighted_file}");
}