diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-17 16:26:19 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-17 16:27:24 +0900 |
| commit | cb2adb32c90b4150c96518ec5be152be70bcb792 (patch) | |
| tree | 053c3309975565133ccca156c876dcf4227ffe8e /crates/shirabe/src/io/console_io.rs | |
| parent | 62c827a7b858796a7f51de3eeff1d6c56c3afe7b (diff) | |
| download | php-shirabe-cb2adb32c90b4150c96518ec5be152be70bcb792.tar.gz php-shirabe-cb2adb32c90b4150c96518ec5be152be70bcb792.tar.zst php-shirabe-cb2adb32c90b4150c96518ec5be152be70bcb792.zip | |
fix(compile): fix IOInterface method signature mismatches
- Change write/write_error/write_raw/write_error_raw/overwrite/
overwrite_error/ask/ask_confirmation/ask_and_validate/
ask_and_hide_answer/select to &mut self in trait and NullIO
- Change ask-family question params from PhpMixed to String in
ConsoleIO, converting to PhpMixed::String internally
- Change ConsoleIO::select choices param from PhpMixed to Vec<String>
- Fix NullIO::load_configuration to use &mut Config and return Result
Diffstat (limited to 'crates/shirabe/src/io/console_io.rs')
| -rw-r--r-- | crates/shirabe/src/io/console_io.rs | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/crates/shirabe/src/io/console_io.rs b/crates/shirabe/src/io/console_io.rs index ff1ed0f..91a15d3 100644 --- a/crates/shirabe/src/io/console_io.rs +++ b/crates/shirabe/src/io/console_io.rs @@ -454,11 +454,11 @@ impl IOInterface for ConsoleIO { self.do_overwrite(messages, newline, size, true, verbosity); } - fn ask(&mut self, question: PhpMixed, default: PhpMixed) -> PhpMixed { + fn ask(&mut self, question: String, default: PhpMixed) -> PhpMixed { // PHP: $helper = $this->helperSet->get('question'); let helper = self.helper_set.get("question"); let question = Question::new( - Self::sanitize(question, true), + Self::sanitize(PhpMixed::String(question), true), if is_string(&default) { Self::sanitize(default, true) } else { @@ -469,11 +469,11 @@ impl IOInterface for ConsoleIO { helper.ask(&*self.input, self.get_error_output(), &question) } - fn ask_confirmation(&mut self, question: PhpMixed, default: bool) -> bool { + fn ask_confirmation(&mut self, question: String, default: bool) -> bool { let helper = self.helper_set.get("question"); let default_mixed = PhpMixed::Bool(default); let question = StrictConfirmationQuestion::new( - Self::sanitize(question, true), + Self::sanitize(PhpMixed::String(question), true), if is_string(&default_mixed) { Self::sanitize(default_mixed, true) } else { @@ -489,14 +489,14 @@ impl IOInterface for ConsoleIO { fn ask_and_validate( &mut self, - question: PhpMixed, + question: String, validator: Box<dyn Fn(PhpMixed) -> PhpMixed>, attempts: Option<i64>, default: PhpMixed, ) -> PhpMixed { let helper = self.helper_set.get("question"); let mut question = Question::new( - Self::sanitize(question, true), + Self::sanitize(PhpMixed::String(question), true), if is_string(&default) { Self::sanitize(default, true) } else { @@ -509,9 +509,12 @@ impl IOInterface for ConsoleIO { helper.ask(&*self.input, self.get_error_output(), &question) } - fn ask_and_hide_answer(&mut self, question: PhpMixed) -> Option<String> { + fn ask_and_hide_answer(&mut self, question: String) -> Option<String> { let helper = self.helper_set.get("question"); - let mut question = Question::new(Self::sanitize(question, true), PhpMixed::Null); + let mut question = Question::new( + Self::sanitize(PhpMixed::String(question), true), + PhpMixed::Null, + ); question.set_hidden(true); helper @@ -522,17 +525,23 @@ impl IOInterface for ConsoleIO { fn select( &mut self, - question: PhpMixed, - choices: PhpMixed, + question: String, + choices: Vec<String>, default: PhpMixed, // PHP: int|false attempts attempts: PhpMixed, error_message: String, multiselect: bool, ) -> PhpMixed { + let choices: PhpMixed = PhpMixed::List( + choices + .into_iter() + .map(|s| Box::new(PhpMixed::String(s))) + .collect(), + ); let helper = self.helper_set.get("question"); let mut question = ChoiceQuestion::new( - Self::sanitize(question, true), + Self::sanitize(PhpMixed::String(question), true), Self::sanitize(choices.clone(), true), if is_string(&default) { Self::sanitize(default, true) |
