Merge "Allow constructing a Message from a MessageSpecifier"
This commit is contained in:
commit
012248fc5a
3 changed files with 26 additions and 4 deletions
|
|
@ -1421,7 +1421,7 @@ function wfGetLangObj( $langcode = false ) {
|
|||
*
|
||||
* This function replaces all old wfMsg* functions.
|
||||
*
|
||||
* @param string|string[] $key Message key, or array of keys
|
||||
* @param string|string[]|MessageSpecifier $key Message key, or array of keys, or a MessageSpecifier
|
||||
* @param mixed $params,... Normal message parameters
|
||||
* @return Message
|
||||
*
|
||||
|
|
|
|||
|
|
@ -226,8 +226,9 @@ class Message implements MessageSpecifier, Serializable {
|
|||
/**
|
||||
* @since 1.17
|
||||
*
|
||||
* @param string|string[] $key Message key or array of message keys to try and use the first
|
||||
* non-empty message for.
|
||||
* @param string|string[]|MessageSpecifier $key Message key, or array of
|
||||
* message keys to try and use the first non-empty message for, or a
|
||||
* MessageSpecifier to copy from.
|
||||
* @param array $params Message parameters.
|
||||
* @param Language $language Optional language of the message, defaults to $wgLang.
|
||||
*
|
||||
|
|
@ -236,6 +237,16 @@ class Message implements MessageSpecifier, Serializable {
|
|||
public function __construct( $key, $params = array(), Language $language = null ) {
|
||||
global $wgLang;
|
||||
|
||||
if ( $key instanceof MessageSpecifier ) {
|
||||
if ( $params ) {
|
||||
throw new InvalidArgumentException(
|
||||
'$params must be empty if $key is a MessageSpecifier'
|
||||
);
|
||||
}
|
||||
$params = $key->getParams();
|
||||
$key = $key->getKey();
|
||||
}
|
||||
|
||||
if ( !is_string( $key ) && !is_array( $key ) ) {
|
||||
throw new InvalidArgumentException( '$key must be a string or an array' );
|
||||
}
|
||||
|
|
@ -362,7 +373,7 @@ class Message implements MessageSpecifier, Serializable {
|
|||
*
|
||||
* @since 1.17
|
||||
*
|
||||
* @param string|string[] $key Message key or array of keys.
|
||||
* @param string|string[]|MessageSpecifier $key
|
||||
* @param mixed $param,... Parameters as strings.
|
||||
*
|
||||
* @return Message
|
||||
|
|
|
|||
|
|
@ -21,6 +21,17 @@ class MessageTest extends MediaWikiLangTestCase {
|
|||
$this->assertEquals( $key, $message->getKey() );
|
||||
$this->assertEquals( $params, $message->getParams() );
|
||||
$this->assertEquals( $expectedLang, $message->getLanguage() );
|
||||
|
||||
$messageSpecifier = $this->getMockForAbstractClass( 'MessageSpecifier' );
|
||||
$messageSpecifier->expects( $this->any() )
|
||||
->method( 'getKey' )->will( $this->returnValue( $key ) );
|
||||
$messageSpecifier->expects( $this->any() )
|
||||
->method( 'getParams' )->will( $this->returnValue( $params ) );
|
||||
$message = new Message( $messageSpecifier, array(), $language );
|
||||
|
||||
$this->assertEquals( $key, $message->getKey() );
|
||||
$this->assertEquals( $params, $message->getParams() );
|
||||
$this->assertEquals( $expectedLang, $message->getLanguage() );
|
||||
}
|
||||
|
||||
public static function provideConstructor() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue