From 1e44f5723e4c0e0903d00a61f254901e612fe5e1 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 12 Jun 2026 01:01:35 +0900 Subject: feat(symfony-console): port Symfony Console and make the workspace compile Co-Authored-By: Claude Opus 4.8 --- .../src/question/strict_confirmation_question.rs | 32 ++++++++++++---------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'crates/shirabe/src/question/strict_confirmation_question.rs') diff --git a/crates/shirabe/src/question/strict_confirmation_question.rs b/crates/shirabe/src/question/strict_confirmation_question.rs index 5ce32f2..725005a 100644 --- a/crates/shirabe/src/question/strict_confirmation_question.rs +++ b/crates/shirabe/src/question/strict_confirmation_question.rs @@ -1,6 +1,5 @@ //! ref: composer/src/Composer/Question/StrictConfirmationQuestion.php -use anyhow::Result; use shirabe_external_packages::composer::pcre::Preg; use shirabe_external_packages::symfony::console::exception::InvalidArgumentException; use shirabe_external_packages::symfony::console::question::Question; @@ -19,7 +18,7 @@ impl StrictConfirmationQuestion { true_answer_regex: String, false_answer_regex: String, ) -> Self { - let inner = Question::new(&question, Some(PhpMixed::Bool(default))); + let inner = Question::new(question, Some(PhpMixed::Bool(default))); let mut this = Self { inner, true_answer_regex, @@ -36,19 +35,19 @@ impl StrictConfirmationQuestion { &self.inner } - fn get_default_normalizer(&self) -> Box PhpMixed> { + fn get_default_normalizer(&self) -> Box PhpMixed> { let default = self.inner.get_default(); let true_regex = self.true_answer_regex.clone(); let false_regex = self.false_answer_regex.clone(); - Box::new(move |answer: &PhpMixed| { - if is_bool(answer) { - return answer.clone(); + Box::new(move |answer: PhpMixed| { + if is_bool(&answer) { + return answer; } - if empty(answer) && default.as_ref().is_some_and(|d| !empty(d)) { - return default.clone().unwrap_or(PhpMixed::Null); + if empty(&answer) && !empty(&default) { + return default.clone(); } - if let PhpMixed::String(s) = answer { + if let PhpMixed::String(s) = &answer { if Preg::is_match(&true_regex, s).unwrap_or(false) { return PhpMixed::Bool(true); } @@ -60,15 +59,18 @@ impl StrictConfirmationQuestion { }) } - fn get_default_validator(&self) -> Box) -> Result> { + fn get_default_validator( + &self, + ) -> Box) -> Result> { Box::new(|answer: Option| { let answer = answer.unwrap_or(PhpMixed::Null); if !is_bool(&answer) { - return Err(InvalidArgumentException { - message: "Please answer yes, y, no, or n.".to_string(), - code: 0, - } - .into()); + return Err(InvalidArgumentException( + shirabe_php_shim::InvalidArgumentException { + message: "Please answer yes, y, no, or n.".to_string(), + code: 0, + }, + )); } Ok(answer) }) -- cgit v1.3.1