switch to features and handle default lang

This commit is contained in:
Daniel Bulant 2025-03-08 23:45:14 +01:00
parent 0a3b71340e
commit b12041b899
No known key found for this signature in database
3 changed files with 41 additions and 3 deletions

26
Cargo.lock generated
View file

@ -82,6 +82,21 @@ dependencies = [
"serde",
]
[[package]]
name = "bit-set"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
dependencies = [
"bit-vec",
]
[[package]]
name = "bit-vec"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
[[package]]
name = "bitflags"
version = "1.3.2"
@ -179,6 +194,16 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "fancy-regex"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
dependencies = [
"bit-set",
"regex",
]
[[package]]
name = "flate2"
version = "1.1.0"
@ -495,6 +520,7 @@ checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1"
dependencies = [
"bincode",
"bitflags",
"fancy-regex",
"flate2",
"fnv",
"once_cell",

View file

@ -3,6 +3,11 @@ name = "mdsvexrs"
version = "0.1.0"
edition = "2021"
[features]
fancy = ["syntect/default-fancy"]
onig = ["syntect/default-onig"]
default = ["onig"]
[dependencies]
markdown = { version = "1.0.0-alpha.21", features = ["serde"]}
itertools = "0.13"
@ -11,4 +16,4 @@ serde_yaml = "0.9.34"
serde = { version = "1.0.215", features = ["derive"] }
regex = "1.11.1"
clap = { version = "4.5.21", features = ["derive"] }
syntect = "5.0"
syntect = { version = "5.0", default-features = false }

View file

@ -591,11 +591,18 @@ impl Context {
let theme = &self.theme_set.themes["InspiredGitHub"];
let start = Instant::now();
let syntax = self.syntax_set.find_syntax_by_token(&code.lang);
let mut lang = &code.lang;
if lang.is_empty() {
if let Some(default) = &self.default_lang {
lang = default;
} else {
return format!("<pre><code>{}</code></pre>", html_encode(&code.code));
}
}
let syntax = self.syntax_set.find_syntax_by_token(lang);
let syntax = match syntax {
Some(t) => t,
None => {
println!("No syntax found for {}", code.lang);
return format!("<pre><code>{}</code></pre>", html_encode(&code.code));
}
};