Merge "Allow constructing a Message from a MessageSpecifier"

This commit is contained in:
jenkins-bot 2015-07-20 23:05:26 +00:00 committed by Gerrit Code Review
commit 012248fc5a
3 changed files with 26 additions and 4 deletions

View file

@ -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
*

View file

@ -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

View file

@ -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() {