summaryrefslogtreecommitdiff
path: root/src/renderer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer.rs')
-rw-r--r--src/renderer.rs35
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);