diff options
| author | A Farzat <a@farzat.xyz> | 2026-06-10 14:47:46 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-06-10 14:47:46 +0300 |
| commit | 4a35607263f87d10fd196f9ee4260040bbdc54d9 (patch) | |
| tree | 3ac675794475ca8e3540eaa22b7a2929d713437d /src/renderer.rs | |
| parent | 293a4d89654c67ef140aa588c92fcc634215a800 (diff) | |
| download | repo2markdown-4a35607263f87d10fd196f9ee4260040bbdc54d9.tar.gz repo2markdown-4a35607263f87d10fd196f9ee4260040bbdc54d9.zip | |
Skip placeholder for large files by default
Diffstat (limited to 'src/renderer.rs')
| -rw-r--r-- | src/renderer.rs | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/renderer.rs b/src/renderer.rs index c747df5..6f13f59 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -18,6 +18,7 @@ pub struct Renderer<W: Write> { max_file_size: u64, logger: Logger, placeholder_for_binary_files: bool, + placeholder_for_large_files: bool, } impl<W: Write> Renderer<W> { @@ -27,6 +28,7 @@ impl<W: Write> Renderer<W> { max_file_size: DEFAULT_MAX_FILE_SIZE, logger: Logger::default(), placeholder_for_binary_files: false, + placeholder_for_large_files: false, } } @@ -45,6 +47,11 @@ impl<W: Write> Renderer<W> { self } + pub fn with_large_file_placeholder(mut self, placeholder_for_large_files: bool) -> Self { + self.placeholder_for_large_files = placeholder_for_large_files; + self + } + pub fn render_header(&mut self, project_title: &str) -> std::io::Result<()> { writeln!(self.output, "# {}", project_title) } @@ -85,6 +92,9 @@ impl<W: Write> Renderer<W> { } fn render_large_file(&mut self, filename: &Path) -> std::io::Result<()> { + if !self.placeholder_for_large_files { + return Ok(()); + } let name = display_path(filename); writeln!(self.output)?; writeln!(self.output, "## File: {}", name)?; @@ -330,7 +340,7 @@ mod tests { } #[test] - fn renderer_places_placeholder_for_large_files_by_default() { + fn large_files_are_not_included_in_output_at_all_by_default() { let mut output = Vec::new(); let mut renderer = Renderer::new(&mut output).with_max_file_size(5); // smaller than file @@ -345,6 +355,29 @@ mod tests { }; renderer.render_path(&normalized_path).unwrap(); + let expected = ""; + + assert_eq!(String::from_utf8(output).unwrap(), expected); + } + + #[test] + fn renderer_can_place_a_placeholder_for_large_files() { + let mut output = Vec::new(); + let mut renderer = Renderer::new(&mut output) + .with_large_file_placeholder(true) + .with_max_file_size(5); // smaller than file + + let temp_dir = tempdir().unwrap(); + let file_path = temp_dir.path().join("big.txt"); + + let content = "A".repeat(10); // 10 bytes -> bigger than the limit + std::fs::write(&file_path, &content).unwrap(); + let normalized_path = NormalizedPath { + relative: PathBuf::from("big.txt"), + absolute: file_path, + }; + + renderer.render_path(&normalized_path).unwrap(); let expected = "\n## File: big.txt\n[FILE TOO LARGE]\n"; assert_eq!(String::from_utf8(output).unwrap(), expected); |
