From 94649d3423da0cf02b58c784941cb614a0cfe487 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Sun, 7 Jun 2026 18:46:25 +0300 Subject: Detect uppercase file extensions --- src/renderer.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/renderer.rs') diff --git a/src/renderer.rs b/src/renderer.rs index eb39c76..14d30d6 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -143,7 +143,12 @@ fn human_readable_size(bytes: u64) -> String { } fn detect_language(filename: &Path) -> &'static str { - match filename.extension().and_then(|e| e.to_str()) { + let ext = filename + .extension() + .and_then(|e| e.to_str()) + .map(|e| e.to_ascii_lowercase()); + let ext_str = ext.as_deref(); + match ext_str { Some("rs") => "rust", Some("py") => "python", Some("json") => "json", @@ -264,6 +269,18 @@ mod tests { assert_eq!(String::from_utf8(output).unwrap(), expected); } + #[test] + fn uppercase_extension_is_still_detected() { + let mut output = Vec::new(); + let mut renderer = Renderer::new(&mut output); + + let input = Cursor::new("fn main() {}"); + renderer.render_file(Path::new("MAIN.RS"), input).unwrap(); + let expected = "\n## File: MAIN.RS\n```rust\nfn main() {}\n```\n"; + + assert_eq!(String::from_utf8(output).unwrap(), expected); + } + #[test] fn renderer_places_placeholder_for_large_files_by_default() { let mut output = Vec::new(); -- cgit v1.3.1