diff options
| author | A Farzat <a@farzat.xyz> | 2026-06-07 18:09:56 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-06-07 18:22:28 +0300 |
| commit | 674b1715510f74b36b4c7df4f138284cb24536e7 (patch) | |
| tree | 07fefb7b226f4d7ca36ebb8e1bd78658a2e3372f /src | |
| parent | ec82651be67d4d33f995d97e923732302ca2ba5b (diff) | |
| download | repo2markdown-674b1715510f74b36b4c7df4f138284cb24536e7.tar.gz repo2markdown-674b1715510f74b36b4c7df4f138284cb24536e7.zip | |
Skip language fences for text or unknown filetypes
Diffstat (limited to 'src')
| -rw-r--r-- | src/renderer.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/renderer.rs b/src/renderer.rs index 410cbae..6193680 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -64,10 +64,11 @@ impl<W: Write> Renderer<W> { fn write_file(&mut self, filename: &Path, contents: &str) -> std::io::Result<()> { let name = display_path(filename); let fence = outer_backticks(contents); + let language = detect_language(filename); self.log_file_render(filename); writeln!(self.output)?; writeln!(self.output, "## File: {}", name)?; - writeln!(self.output, "{}rust", fence)?; + writeln!(self.output, "{}{}", fence, language)?; writeln!(self.output, "{}", contents)?; writeln!(self.output, "{}", fence) } @@ -141,6 +142,13 @@ fn human_readable_size(bytes: u64) -> String { } } +fn detect_language(filename: &Path) -> &'static str { + match filename.extension().and_then(|e| e.to_str()) { + Some("rs") => "rust", + _ => "", + } +} + #[cfg(test)] mod tests { use std::{ @@ -167,7 +175,7 @@ mod tests { } #[test] - fn renderer_renders_single_file() { + fn renderer_renders_single_rust_file_with_language_fence() { let mut output = Vec::new(); let mut renderer = Renderer::new(&mut output); @@ -219,6 +227,18 @@ mod tests { } #[test] + fn unknown_filetype_has_no_language_fence() { + let mut output = Vec::new(); + let mut renderer = Renderer::new(&mut output); + + let input = Cursor::new("hello world"); + renderer.render_file(Path::new("readme"), input).unwrap(); + let expected = "\n## File: readme\n```\nhello world\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(); let mut renderer = Renderer::new(&mut output).with_max_file_size(5); // smaller than file |
