summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-06-07 18:09:56 +0300
committerA Farzat <a@farzat.xyz>2026-06-07 18:22:28 +0300
commit674b1715510f74b36b4c7df4f138284cb24536e7 (patch)
tree07fefb7b226f4d7ca36ebb8e1bd78658a2e3372f /src
parentec82651be67d4d33f995d97e923732302ca2ba5b (diff)
downloadrepo2markdown-674b1715510f74b36b4c7df4f138284cb24536e7.tar.gz
repo2markdown-674b1715510f74b36b4c7df4f138284cb24536e7.zip
Skip language fences for text or unknown filetypes
Diffstat (limited to 'src')
-rw-r--r--src/renderer.rs24
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