From 9548c2c16708bed0ddd44b94b5577d4267b2ba61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ortega=20Froysa?= Date: Thu, 2 Oct 2025 13:44:05 +0200 Subject: [PATCH] Fix buffer reading. --- src/worker.rs | 76 +++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/src/worker.rs b/src/worker.rs index 1aa97c7..07cb529 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -27,11 +27,8 @@ use std::fs; use std::io::Read; use std::boxed::Box; -// Read 1KiB of the file at a time. -static BLOCK_SIZE:usize = 1024; - pub fn work(in_path:Option<&str>, out_path:Option<&str>) -> Result<(), String> { - let mut in_reader:Box = match in_path { + let in_reader:Box = match in_path { Some(path) => { let in_file = fs::File::open(path); if let Err(e) = in_file { @@ -57,54 +54,49 @@ pub fn work(in_path:Option<&str>, out_path:Option<&str>) -> Result<(), String> }, }; - let mut read_buf:[u8; BLOCK_SIZE] = [0; BLOCK_SIZE]; - let mut last_ch:char = '\0'; + let mut last_ch = '\0'; let mut tab_num = 0; - while in_reader.read(&mut read_buf).unwrap() > 0 { - for i in read_buf { - let ch = i as char; - match ch { - '[' | '{' => { - tab_num += 1; - out_writer.write(format!("{ch}\n").as_bytes()).unwrap(); - for _ in 0..tab_num { - out_writer.write(b" ").unwrap(); - } - last_ch = ' '; - }, - ']' | '}' => { - tab_num -= 1; + for i in in_reader.bytes() { + let ch = i.unwrap() as char; + match ch { + '[' | '{' => { + tab_num += 1; + out_writer.write(format!("{ch}\n").as_bytes()).unwrap(); + for _ in 0..tab_num { + out_writer.write(b" ").unwrap(); + } + last_ch = ' '; + }, + ']' | '}' => { + tab_num -= 1; + out_writer.write(b"\n").unwrap(); + for _ in 0..tab_num { + out_writer.write(b" ").unwrap(); + } + out_writer.write(format!("{ch}").as_bytes()).unwrap(); + last_ch = ch; + }, + ',' => { + out_writer.write(format!("{ch}").as_bytes()).unwrap(); + if last_ch == '}' || last_ch == ']' { out_writer.write(b"\n").unwrap(); for _ in 0..tab_num { out_writer.write(b" ").unwrap(); } + last_ch = ' '; + } else { + last_ch = ch; + } + }, + _ => { + if ch != ' ' || last_ch != ' ' { out_writer.write(format!("{ch}").as_bytes()).unwrap(); last_ch = ch; - }, - ',' => { - out_writer.write(format!("{ch}").as_bytes()).unwrap(); - if last_ch == '}' || last_ch == ']' { - out_writer.write(b"\n").unwrap(); - for _ in 0..tab_num { - out_writer.write(b" ").unwrap(); - } - last_ch = ' '; - } else { - last_ch = ch; - } - }, - _ => { - if ch != ' ' || last_ch != ' ' { - out_writer.write(format!("{ch}").as_bytes()).unwrap(); - last_ch = ch; - } - }, - } + } + }, } } - out_writer.flush().unwrap(); - Ok(()) }