aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-symfony-console
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-symfony-console')
-rw-r--r--crates/shirabe-symfony-console/src/command/command.rs3
-rw-r--r--crates/shirabe-symfony-console/src/formatter/output_formatter.rs16
-rw-r--r--crates/shirabe-symfony-console/src/helper/helper.rs4
-rw-r--r--crates/shirabe-symfony-console/src/input/argv_input.rs3
-rw-r--r--crates/shirabe-symfony-console/src/input/input.rs3
-rw-r--r--crates/shirabe-symfony-console/src/input/string_input.rs14
-rw-r--r--crates/shirabe-symfony-console/src/output/stream_output.rs3
-rw-r--r--crates/shirabe-symfony-console/src/question/choice_question.rs8
-rw-r--r--crates/shirabe-symfony-console/src/question/confirmation_question.rs5
-rw-r--r--crates/shirabe-symfony-console/src/terminal.rs29
10 files changed, 31 insertions, 57 deletions
diff --git a/crates/shirabe-symfony-console/src/command/command.rs b/crates/shirabe-symfony-console/src/command/command.rs
index b2af47e2..848cece3 100644
--- a/crates/shirabe-symfony-console/src/command/command.rs
+++ b/crates/shirabe-symfony-console/src/command/command.rs
@@ -108,8 +108,7 @@ impl CommandData {
///
/// Throws InvalidArgumentException when the name is invalid.
fn validate_name(&self, name: &str) -> anyhow::Result<Result<(), InvalidArgumentException>> {
- let mut matches: Vec<Option<String>> = Vec::new();
- if !preg_match(php_regex!(r"/^[^\:]++(\:[^\:]++)*$/"), name, &mut matches) {
+ if preg_match(php_regex!(r"/^[^\:]++(\:[^\:]++)*$/"), name).is_none() {
return Ok(Err(InvalidArgumentException::new(format!(
"Command name \"{}\" is invalid.",
name
diff --git a/crates/shirabe-symfony-console/src/formatter/output_formatter.rs b/crates/shirabe-symfony-console/src/formatter/output_formatter.rs
index c7c06cf5..1153bc9e 100644
--- a/crates/shirabe-symfony-console/src/formatter/output_formatter.rs
+++ b/crates/shirabe-symfony-console/src/formatter/output_formatter.rs
@@ -7,8 +7,8 @@ use crate::formatter::output_formatter_style_interface::OutputFormatterStyleInte
use crate::formatter::output_formatter_style_stack::OutputFormatterStyleStack;
use crate::formatter::wrappable_output_formatter_interface::WrappableOutputFormatterInterface;
use shirabe_php_shim::{
- CaptureKey, PregMatchesAllWithOffsets, php_regex, preg_match, preg_match_all,
- preg_match_all_offset_capture, preg_match_all_set_order, preg_replace,
+ CaptureKey, php_regex, preg_match, preg_match_all, preg_match_all_offset_capture,
+ preg_match_all_set_order, preg_replace,
};
use shirabe_symfony_string::b;
@@ -109,9 +109,8 @@ impl OutputFormatter {
return Ok(Some(style.borrow().clone_box()));
}
- let mut matches: Vec<Vec<Option<String>>> = vec![];
- if preg_match_all_set_order(php_regex!("/([^=]+)=([^;]+)(;|$)/"), string, &mut matches) == 0
- {
+ let matches = preg_match_all_set_order(php_regex!("/([^=]+)=([^;]+)(;|$)/"), string);
+ if matches.is_empty() {
return Ok(None);
}
@@ -191,8 +190,7 @@ impl OutputFormatter {
prefix = String::new();
}
- let mut matches: Vec<Option<String>> = vec![];
- preg_match(php_regex!("~(\\n)$~"), &text, &mut matches);
+ let matches = preg_match(php_regex!("~(\\n)$~"), &text).unwrap_or_default();
text = format!("{}{}", prefix, self.add_line_breaks(&text, width));
let trailing = matches.get(1).and_then(|m| m.clone()).unwrap_or_default();
text = format!("{}{}", shirabe_php_shim::rtrim(&text, Some("\n")), trailing);
@@ -294,11 +292,9 @@ impl WrappableOutputFormatterInterface for OutputFormatter {
let open_tag_regex = "[a-z](?:[^\\\\<>]* | \\\\.)*";
let close_tag_regex = "[a-z][^<>]*";
let mut current_line_length: i64 = 0;
- let mut matches = PregMatchesAllWithOffsets::new();
- preg_match_all_offset_capture(
+ let matches = preg_match_all_offset_capture(
format!("#<(({open_tag_regex}) | /({close_tag_regex})?)>#ix"),
message,
- &mut matches,
);
let full_matches = matches
.get(&CaptureKey::ByIndex(0))
diff --git a/crates/shirabe-symfony-console/src/helper/helper.rs b/crates/shirabe-symfony-console/src/helper/helper.rs
index 21f20d34..435648ca 100644
--- a/crates/shirabe-symfony-console/src/helper/helper.rs
+++ b/crates/shirabe-symfony-console/src/helper/helper.rs
@@ -40,7 +40,7 @@ impl Helper {
/// Returns the width of a string, using mb_strwidth if it is available.
/// The width is how many characters positions the string will use.
pub fn width(string: &str) -> i64 {
- if preg_match(php_regex!("//u"), string, &mut Vec::new()) {
+ if preg_match(php_regex!("//u"), string).is_some() {
return UnicodeString::new(string).width(false);
}
@@ -56,7 +56,7 @@ impl Helper {
/// Returns the length of a string, using mb_strlen if it is available.
/// The length is related to how many bytes the string will use.
pub fn length(string: &str) -> i64 {
- if preg_match(php_regex!("//u"), string, &mut Vec::new()) {
+ if preg_match(php_regex!("//u"), string).is_some() {
return UnicodeString::new(string).length();
}
diff --git a/crates/shirabe-symfony-console/src/input/argv_input.rs b/crates/shirabe-symfony-console/src/input/argv_input.rs
index b2b663a6..81582408 100644
--- a/crates/shirabe-symfony-console/src/input/argv_input.rs
+++ b/crates/shirabe-symfony-console/src/input/argv_input.rs
@@ -523,8 +523,7 @@ impl std::fmt::Display for ArgvInput {
.tokens
.iter()
.map(|token| {
- let mut r#match: Vec<Option<String>> = Vec::new();
- if preg_match(php_regex!("{^(-[^=]+=)(.+)}"), token, &mut r#match) {
+ if let Some(r#match) = preg_match(php_regex!("{^(-[^=]+=)(.+)}"), token) {
return format!(
"{}{}",
r#match[1].as_deref().unwrap_or(""),
diff --git a/crates/shirabe-symfony-console/src/input/input.rs b/crates/shirabe-symfony-console/src/input/input.rs
index 89eedb03..4712a713 100644
--- a/crates/shirabe-symfony-console/src/input/input.rs
+++ b/crates/shirabe-symfony-console/src/input/input.rs
@@ -207,8 +207,7 @@ impl Input {
/// Escapes a token through escapeshellarg if it contains unsafe chars.
pub fn escape_token(&self, token: &str) -> String {
- let mut matches: Vec<Option<String>> = vec![];
- if preg_match(php_regex!("{^[\\w-]+$}"), token, &mut matches) {
+ if preg_match(php_regex!("{^[\\w-]+$}"), token).is_some() {
token.to_string()
} else {
shirabe_php_shim::escapeshellarg(token)
diff --git a/crates/shirabe-symfony-console/src/input/string_input.rs b/crates/shirabe-symfony-console/src/input/string_input.rs
index 245b948d..b0c3b159 100644
--- a/crates/shirabe-symfony-console/src/input/string_input.rs
+++ b/crates/shirabe-symfony-console/src/input/string_input.rs
@@ -6,7 +6,7 @@ use crate::input::InputDefinition;
use crate::input::InputInterface;
use crate::input::StreamableInputInterface;
use indexmap::IndexMap;
-use shirabe_php_shim::{CaptureKey, PhpMixed, PregMatches, php_regex, preg_match2};
+use shirabe_php_shim::{CaptureKey, PhpMixed, php_regex, preg_match2};
/// StringInput represents an input provided as a string.
///
@@ -57,17 +57,15 @@ impl StringInput {
continue;
}
- let mut m = PregMatches::new();
- if preg_match2(php_regex!(r"/\s+/A"), input, &mut m, cursor as usize) {
+ if let Some(m) = preg_match2(php_regex!(r"/\s+/A"), input, cursor as usize) {
if token.is_some() {
tokens.push(token.take().unwrap());
}
cursor +=
shirabe_php_shim::strlen(m[&CaptureKey::ByIndex(0)].as_deref().unwrap_or(""));
- } else if preg_match2(
+ } else if let Some(m) = preg_match2(
format!(r#"/([^="'\s]+?)(=?)({}+)/A"#, Self::REGEX_QUOTED_STRING),
input,
- &mut m,
cursor as usize,
) {
let inner = shirabe_php_shim::substr(
@@ -86,10 +84,9 @@ impl StringInput {
));
cursor +=
shirabe_php_shim::strlen(m[&CaptureKey::ByIndex(0)].as_deref().unwrap_or(""));
- } else if preg_match2(
+ } else if let Some(m) = preg_match2(
format!(r"/{}/A", Self::REGEX_QUOTED_STRING),
input,
- &mut m,
cursor as usize,
) {
token = Some(format!(
@@ -103,10 +100,9 @@ impl StringInput {
));
cursor +=
shirabe_php_shim::strlen(m[&CaptureKey::ByIndex(0)].as_deref().unwrap_or(""));
- } else if preg_match2(
+ } else if let Some(m) = preg_match2(
format!(r"/{}/A", Self::REGEX_UNQUOTED_STRING),
input,
- &mut m,
cursor as usize,
) {
token = Some(format!(
diff --git a/crates/shirabe-symfony-console/src/output/stream_output.rs b/crates/shirabe-symfony-console/src/output/stream_output.rs
index 43cee3a8..14565012 100644
--- a/crates/shirabe-symfony-console/src/output/stream_output.rs
+++ b/crates/shirabe-symfony-console/src/output/stream_output.rs
@@ -120,14 +120,13 @@ impl StreamOutput {
}
// See https://github.com/chalk/supports-color/blob/d4f413efaf8da045c5ab440ed418ef02dbb28bf1/index.js#L157
- let mut matches: Vec<Option<String>> = Vec::new();
preg_match(
php_regex!(
"/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/"
),
&term,
- &mut matches,
)
+ .is_some()
}
}
diff --git a/crates/shirabe-symfony-console/src/question/choice_question.rs b/crates/shirabe-symfony-console/src/question/choice_question.rs
index b8ac16d8..84cba360 100644
--- a/crates/shirabe-symfony-console/src/question/choice_question.rs
+++ b/crates/shirabe-symfony-console/src/question/choice_question.rs
@@ -122,12 +122,12 @@ impl ChoiceQuestion {
let selected_choices: Vec<PhpMixed> = if multiselect {
// Check for a separated comma values
- let mut matches: Vec<Option<String>> = Vec::new();
- if !preg_match(
+ if preg_match(
php_regex!("/^[^,]+(?:,[^,]+)*$/"),
&shirabe_php_shim::strval(&selected),
- &mut matches,
- ) {
+ )
+ .is_none()
+ {
return Err(InvalidArgumentException::new(shirabe_php_shim::sprintf(
&error_message,
std::slice::from_ref(&selected),
diff --git a/crates/shirabe-symfony-console/src/question/confirmation_question.rs b/crates/shirabe-symfony-console/src/question/confirmation_question.rs
index 6ec9281f..5a18a045 100644
--- a/crates/shirabe-symfony-console/src/question/confirmation_question.rs
+++ b/crates/shirabe-symfony-console/src/question/confirmation_question.rs
@@ -38,10 +38,7 @@ impl ConfirmationQuestion {
return answer;
}
- let answer_is_true = {
- let mut matches: Vec<Option<String>> = Vec::new();
- preg_match(&regex, &shirabe_php_shim::strval(&answer), &mut matches)
- };
+ let answer_is_true = preg_match(&regex, &shirabe_php_shim::strval(&answer)).is_some();
// false === $default
if matches!(default, PhpMixed::Bool(false)) {
diff --git a/crates/shirabe-symfony-console/src/terminal.rs b/crates/shirabe-symfony-console/src/terminal.rs
index 8ff0431a..8db6fd93 100644
--- a/crates/shirabe-symfony-console/src/terminal.rs
+++ b/crates/shirabe-symfony-console/src/terminal.rs
@@ -79,12 +79,10 @@ impl Terminal {
fn init_dimensions() {
if cfg!(windows) {
let ansicon = shirabe_php_shim::getenv("ANSICON");
- let mut matches: Vec<Option<String>> = Vec::new();
if let Some(ansicon) = &ansicon
- && preg_match(
+ && let Some(matches) = preg_match(
php_regex!("/^(\\d+)x(\\d+)(?: \\((\\d+)x(\\d+)\\))?$/"),
&shirabe_php_shim::trim(&ansicon.to_string_lossy(), None),
- &mut matches,
)
{
// extract [w, H] from "wxh (WxH)"
@@ -137,12 +135,9 @@ impl Terminal {
if stty_string.is_empty() {
return;
}
- let mut matches: Vec<Option<String>> = Vec::new();
- if preg_match(
- php_regex!("/rows.(\\d+);.columns.(\\d+);/i"),
- &stty_string,
- &mut matches,
- ) {
+ if let Some(matches) =
+ preg_match(php_regex!("/rows.(\\d+);.columns.(\\d+);/i"), &stty_string)
+ {
// extract [w, h] from "rows h; columns w;"
WIDTH.with(|w| {
w.set(Some(shirabe_php_shim::intval(&PhpMixed::String(
@@ -154,11 +149,9 @@ impl Terminal {
matches[1].clone().unwrap_or_default(),
))))
});
- } else if preg_match(
- php_regex!("/;.(\\d+).rows;.(\\d+).columns/i"),
- &stty_string,
- &mut matches,
- ) {
+ } else if let Some(matches) =
+ preg_match(php_regex!("/;.(\\d+).rows;.(\\d+).columns/i"), &stty_string)
+ {
// extract [w, h] from "; h rows; w columns"
WIDTH.with(|w| {
w.set(Some(shirabe_php_shim::intval(&PhpMixed::String(
@@ -181,14 +174,10 @@ impl Terminal {
let info = Self::read_from_process("mode CON");
let info = info?;
- let mut matches: Vec<Option<String>> = Vec::new();
- if !preg_match(
+ let matches = preg_match(
php_regex!("/--------+\\r?\\n.+?(\\d+)\\r?\\n.+?(\\d+)\\r?\\n/"),
&info,
- &mut matches,
- ) {
- return None;
- }
+ )?;
Some(vec![
shirabe_php_shim::intval(&PhpMixed::String(matches[2].clone().unwrap_or_default())),