WP_CLI

SynopsisParser::render()public staticWP-CLI 1.0

Render the Synopsis into a format string.

Метод класса: SynopsisParser{}

Хуков нет.

Возвращает

Строку. Rendered synopsis.

Использование

$result = SynopsisParser::render( $synopsis );
$synopsis(массив) (обязательный) (передается по ссылке — &)
A structured synopsis. This might get reordered to match the parsed output.

Код SynopsisParser::render() WP-CLI 2.8.0-alpha

public static function render( &$synopsis ) {
	if ( ! is_array( $synopsis ) ) {
		return '';
	}
	$bits               = [
		'positional' => '',
		'assoc'      => '',
		'generic'    => '',
		'flag'       => '',
	];
	$reordered_synopsis = [
		'positional' => [],
		'assoc'      => [],
		'generic'    => [],
		'flag'       => [],
	];
	foreach ( $bits as $key => &$value ) {
		foreach ( $synopsis as $arg ) {
			if ( empty( $arg['type'] )
				|| $key !== $arg['type'] ) {
				continue;
			}

			if ( empty( $arg['name'] ) && 'generic' !== $arg['type'] ) {
				continue;
			}

			if ( 'positional' === $key ) {
				$rendered_arg = "<{$arg['name']}>";

				$reordered_synopsis['positional'] [] = $arg;
			} elseif ( 'assoc' === $key ) {
				$arg_value = isset( $arg['value']['name'] ) ? $arg['value']['name'] : $arg['name'];
				$arg_value = "=<{$arg_value}>";

				if ( ! empty( $arg['value']['optional'] ) ) {
					$arg_value = "[{$arg_value}]";
				}

				$rendered_arg = "--{$arg['name']}{$arg_value}";

				$reordered_synopsis['assoc'] [] = $arg;
			} elseif ( 'generic' === $key ) {
				$rendered_arg = '--<field>=<value>';

				$reordered_synopsis['generic'] [] = $arg;
			} elseif ( 'flag' === $key ) {
				$rendered_arg = "--{$arg['name']}";

				$reordered_synopsis['flag'] [] = $arg;
			}
			if ( ! empty( $arg['repeating'] ) ) {
				$rendered_arg = "{$rendered_arg}...";
			}
			if ( ! empty( $arg['optional'] ) ) {
				$rendered_arg = "[{$rendered_arg}]";
			}
			$value .= "{$rendered_arg} ";
		}
	}
	$rendered = '';
	foreach ( $bits as $v ) {
		if ( ! empty( $v ) ) {
			$rendered .= $v;
		}
	}

	$synopsis = array_merge(
		$reordered_synopsis['positional'],
		$reordered_synopsis['assoc'],
		$reordered_synopsis['generic'],
		$reordered_synopsis['flag']
	);

	return rtrim( $rendered, ' ' );
}