*/
public function useDatabase( $useDatabase ) {
$this->useDatabase = (bool)$useDatabase;
+ $this->message = null;
return $this;
}
return [ 'before', '[INVALID]' ];
}
} elseif ( $param instanceof Message ) {
+ // Match language, flags, etc. to the current message.
+ $msg = clone $param;
+ if ( $msg->language !== $this->language || $msg->useDatabase !== $this->useDatabase ) {
+ // Cache depends on these parameters
+ $msg->message = null;
+ }
+ $msg->interface = $this->interface;
+ $msg->language = $this->language;
+ $msg->useDatabase = $this->useDatabase;
+ $msg->title = $this->title;
+
+ // DWIM
+ if ( $format === 'block-parse' ) {
+ $format = 'parse';
+ }
+ $msg->format = $format;
+
// Message objects should not be before parameters because
// then they'll get double escaped. If the message needs to be
// escaped, it'll happen right here when we call toString().
- return [ 'after', $param->toString( $format ) ];
+ return [ 'after', $msg->toString( $format ) ];
} else {
return [ 'before', $param ];
}
);
}
+ /**
+ * @covers Message::extractParam
+ */
+ public function testMessageAsParam() {
+ $this->setMwGlobals( [
+ 'wgScript' => '/wiki/index.php',
+ 'wgArticlePath' => '/wiki/$1',
+ ] );
+
+ $msg = new Message( 'returnto', [
+ new Message( 'apihelp-link', [
+ 'foo', new Message( 'mainpage', [], Language::factory( 'en' ) )
+ ], Language::factory( 'de' ) )
+ ], Language::factory( 'es' ) );
+
+ $this->assertEquals(
+ 'Volver a [[Special:ApiHelp/foo|Página principal]].',
+ $msg->text(),
+ 'Process with ->text()'
+ );
+ $this->assertEquals(
+ '<p>Volver a <a href="/wiki/Special:ApiHelp/foo" title="Special:ApiHelp/foo">Página '
+ . "principal</a>.\n</p>",
+ $msg->parseAsBlock(),
+ 'Process with ->parseAsBlock()'
+ );
+ }
+
public static function provideParser() {
return [
[