From aa177a0b9df0fee560b2e1315e821babaddd66b2 Mon Sep 17 00:00:00 2001 From: Leon Ding Date: Tue, 2 Jul 2024 20:59:19 +0800 Subject: [PATCH] add: book builder chapters output. --- src/book/builder.rs | 3 ++- src/cli/commands.rs | 2 +- src/utils/logger.rs | 8 +++--- tests/book/builder_test.rs | 52 +++++++++++++++++++++----------------- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/book/builder.rs b/src/book/builder.rs index bdcad8b..91828d9 100644 --- a/src/book/builder.rs +++ b/src/book/builder.rs @@ -20,8 +20,9 @@ pub struct Builder { impl Builder { // 渲染整本书 pub fn render(&mut self) -> io::Result<()> { - self.create_directory()?; + self.chapters_html(); self.sub_chapters_html(); + self.create_directory()?; self.copy_theme_assets()?; Ok(()) } diff --git a/src/cli/commands.rs b/src/cli/commands.rs index ece0782..8eaed90 100644 --- a/src/cli/commands.rs +++ b/src/cli/commands.rs @@ -120,7 +120,7 @@ pub fn handle_help_command(args: &[String]) { } pub fn handle_init_command(_args: &[String]) { - let mut log = Logger::console_log(); + let mut _log = Logger::console_log(); unimplemented!() } diff --git a/src/utils/logger.rs b/src/utils/logger.rs index 2a0eb02..380ec5d 100644 --- a/src/utils/logger.rs +++ b/src/utils/logger.rs @@ -17,7 +17,7 @@ impl Logger { fn log(&mut self, level: &str, color: fn(&str) -> ColoredString, format_message: &str) { let time = Local::now().format(DATETIME_FORMAT); - let formatted = format!(" {:<8} {} 💬 {}\n", color(level), time, format_message); + let formatted = format!(" {:<6} {} 💬 {}\n", color(level), time, format_message); self.out .write_all(formatted.as_bytes()) .expect("Failed to write to stdout"); @@ -26,7 +26,7 @@ impl Logger { pub fn info(&mut self, format_message: std::fmt::Arguments) { self.log( "[INFO]", - |level: &str| level.on_green(), + |level: &str| level.green(), &format!("{}", format!("{}", format_message).as_str().green()), ); } @@ -34,7 +34,7 @@ impl Logger { pub fn warn(&mut self, format_message: std::fmt::Arguments) { self.log( "[WARING]", - |level| level.on_purple(), + |level| level.purple(), &format!("{}", format!("{}", format_message).as_str().yellow()), ); } @@ -42,7 +42,7 @@ impl Logger { pub fn error(&mut self, format_message: std::fmt::Arguments) { self.log( "[ERROR]", - |level: &str| level.on_red(), + |level: &str| level.red(), &format!("{}", format!("{}", format_message).as_str().red()), ); } diff --git a/tests/book/builder_test.rs b/tests/book/builder_test.rs index 04f17d6..6eb2c36 100644 --- a/tests/book/builder_test.rs +++ b/tests/book/builder_test.rs @@ -2,35 +2,41 @@ use typikon::book; #[test] fn test_new_builder() { - match book::new_builder() { - Ok(builder) => { - for view in builder.engine.get_template_names() { - println!("{:?}",view); - } - assert!(true); - } - Err(_) => assert!(false), - } + let builder_result = book::new_builder(); + assert!(builder_result.is_ok(), "Failed to create builder"); + + let builder = builder_result.unwrap(); + let template_names: Vec<_> = builder.engine.get_template_names().collect(); + println!("{:?}", template_names); + + // 确认模板名称非空 + assert!(!template_names.is_empty(), "Template names should not be empty"); } #[test] fn test_new_builder_get_hypertext() { - match book::new_builder() { - Ok(mut builder) => { - println!("{:?}", &mut builder.sub_chapters_html()); - assert!(true); - } - Err(_) => assert!(false), - } + let builder_result = book::new_builder(); + assert!(builder_result.is_ok(), "Failed to create builder"); + + let mut builder = builder_result.unwrap(); + let sub_chapters_hypertext = builder.sub_chapters_html(); + + println!("{:?}", sub_chapters_hypertext); + + // 检查结果是否包含特定的章节 + assert!(!sub_chapters_hypertext.is_empty(), "Sub chapters hypertext should not be empty"); } #[test] fn test_new_builder_get_chapters() { - match book::new_builder() { - Ok(mut builder) => { - println!("{:?}", &mut builder.chapters_html()); - assert!(true); - } - Err(_) => assert!(false), - } + let builder_result = book::new_builder(); + assert!(builder_result.is_ok(), "Failed to create builder"); + + let mut builder = builder_result.unwrap(); + let chapters_hypertext = builder.chapters_html(); + + println!("{:?}", chapters_hypertext); + + // 检查结果是否包含特定的章节 + assert!(!chapters_hypertext.is_empty(), "Chapters hypertext should not be empty"); }