WP_CLI
SynopsisParser::classify_token
Classify argument attributes based on its syntax.
Method of the class: SynopsisParser{}
No Hooks.
Returns
Array.
Usage
$result = SynopsisParser::classify_token( $token );
- $token(string) (required)
- .
SynopsisParser::classify_token() SynopsisParser::classify token code WP-CLI 2.13.0-alpha
private static function classify_token( $token ) {
$param = [];
list( $param['optional'], $token ) = self::is_optional( $token );
list( $param['repeating'], $token ) = self::is_repeating( $token );
$p_name = '([a-z-_0-9]+)';
$p_value = '([a-zA-Z-_|,0-9]+)';
if ( '--<field>=<value>' === $token ) {
$param['type'] = 'generic';
} elseif ( preg_match( "/^<($p_value)>$/", $token, $matches ) ) {
$param['type'] = 'positional';
$param['name'] = $matches[1];
} elseif ( preg_match( "/^--(?:\\[no-\\])?$p_name/", $token, $matches ) ) {
$param['name'] = $matches[1];
$value = substr( $token, strlen( $matches[0] ) );
// substr can return false <= PHP 8.0.
if ( false === $value || '' === $value ) {
$param['type'] = 'flag';
} else {
$param['type'] = 'assoc';
list( $param['value']['optional'], $value ) = self::is_optional( $value );
if ( preg_match( "/^=<$p_value>$/", $value, $matches ) ) {
$param['value']['name'] = $matches[1];
} else {
$param = [
'type' => 'unknown',
];
}
}
} else {
$param['type'] = 'unknown';
}
return $param;
}