Gettext_Translations::parenthesize_plural_exression( string $expression ): string

In this article

Adds parentheses to the inner parts of ternary operators in plural expressions, because PHP evaluates ternary oerators from left to right

Parameters

$expressionstringrequired
the expression without parentheses

Return

string the expression with parentheses added

Source

public function parenthesize_plural_exression( $expression ) {
	$expression .= ';';
	$res         = '';
	$depth       = 0;
	for ( $i = 0; $i < strlen( $expression ); ++$i ) {
		$char = $expression[ $i ];
		switch ( $char ) {
			case '?':
				$res .= ' ? (';
				++$depth;
				break;
			case ':':
				$res .= ') : (';
				break;
			case ';':
				$res  .= str_repeat( ')', $depth ) . ';';
				$depth = 0;
				break;
			default:
				$res .= $char;
		}
	}
	return rtrim( $res, ';' );
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.