From 546c3ca751d922bf48183c6602d6040074dc8590 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Fri, 5 Jun 2026 17:31:17 +0300 Subject: Use Renderer instead of renderer in main.rs --- src/main.rs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/main.rs b/src/main.rs index 92b84c4..1468073 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,13 @@ use std::{ env, ffi::OsStr, + fs::File, io::{self, Read, Write}, os::unix::ffi::OsStrExt, path::Path, }; -use repo2markdown::{normalizer::Normalizer, renderer::render}; +use repo2markdown::{normalizer::Normalizer, renderer::Renderer}; fn main() -> Result<(), Box> { let mut args = env::args().skip(1); @@ -47,7 +48,7 @@ const DEFAULT_PROJECT_NAME: &str = "Project Outline"; pub fn run( mut input: R, - mut output: W, + output: W, root: &Path, origin_base: &Path, project_name: Option<&str>, @@ -55,9 +56,12 @@ pub fn run( let mut buf = Vec::new(); input.read_to_end(&mut buf)?; - let mut owned = Vec::new(); let normalizer = Normalizer::new(root, origin_base)?; + let mut renderer = Renderer::new(output); + let project_name = project_name.unwrap_or_else(|| derive_project_name(root)); + renderer.render_header(project_name)?; + for segment in buf.split(|b| *b == 0) { if segment.is_empty() { continue; @@ -65,20 +69,9 @@ pub fn run( let path = Path::new(OsStr::from_bytes(segment)); let normalized_path = normalizer.normalize(path)?; - let bytes = std::fs::read(normalized_path.absolute)?; - - owned.push((normalized_path.relative, bytes)); + let file = File::open(normalized_path.absolute)?; + renderer.render_file(&normalized_path.relative, file)?; } - - // convert to expected renderer input - let refs: Vec<(&Path, &[u8])> = owned - .iter() - .map(|(p, b)| (p.as_path(), b.as_slice())) - .collect(); - - let project_name = project_name.unwrap_or_else(|| derive_project_name(root)); - let rendered = render(project_name, &refs)?; - output.write_all(rendered.as_bytes())?; Ok(()) } -- cgit v1.3.1