jenkins-bot has submitted this change and it was merged.
Change subject: Fix #property parser function's default language
......................................................................
Fix #property parser function's default language
This is a more proper fix compared to the hotfix in I76a9615.
I suggest to merge both.
Change-Id: I0685ad9c64d821e29e6a334469d9ba547864cd40
Fixes: T116503
---
M
client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactoryTest.php
M lib/includes/LanguageFallbackChainFactory.php
M lib/includes/formatters/MwTimeIsoFormatter.php
4 files changed, 59 insertions(+), 26 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
diff --git
a/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
b/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
index 75a63be..55a47f1 100644
---
a/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
+++
b/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
@@ -7,6 +7,7 @@
use Parser;
use StubUserLang;
use ValueFormatters\FormatterOptions;
+use ValueFormatters\ValueFormatter;
use Wikibase\Client\DataAccess\PropertyIdResolver;
use Wikibase\Client\DataAccess\SnaksFinder;
use Wikibase\Client\DataAccess\StatementTransclusionInteractor;
@@ -205,7 +206,10 @@
*
* @return SnakFormatter
*/
- private function newSnakFormatterForLanguage( Language $language,
UsageAccumulator $usageAccumulator ) {
+ private function newSnakFormatterForLanguage(
+ Language $language,
+ UsageAccumulator $usageAccumulator
+ ) {
$languageFallbackChain =
$this->languageFallbackChainFactory->newFromLanguage(
$language,
LanguageFallbackChainFactory::FALLBACK_SELF |
LanguageFallbackChainFactory::FALLBACK_VARIANTS
@@ -213,6 +217,7 @@
$options = new FormatterOptions( array(
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN =>
$languageFallbackChain,
+ ValueFormatter::OPT_LANG => $language->getCode(),
// ...more options... (?)
) );
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactoryTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactoryTest.php
index 76802a3..66eb88e 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactoryTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactoryTest.php
@@ -7,7 +7,10 @@
use ParserOptions;
use Title;
use User;
+use ValueFormatters\FormatterOptions;
+use ValueFormatters\ValueFormatter;
use
Wikibase\Client\DataAccess\PropertyParserFunction\StatementGroupRendererFactory;
+use Wikibase\Client\DataAccess\SnaksFinder;
use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\EntityIdValue;
@@ -32,7 +35,7 @@
class StatementGroupRendererFactoryTest extends \PHPUnit_Framework_TestCase {
public function testNewRendererForInterfaceMessage() {
- $parser = $this->getParser( 'zh', true, false, false,
Parser::OT_HTML );
+ $parser = $this->getParser( 'zh', true );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -44,7 +47,7 @@
}
public function testNewRenderer_contentConversionDisabled() {
- $parser = $this->getParser( 'zh', false, true, false,
Parser::OT_HTML );
+ $parser = $this->getParser( 'zh', false, true );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -56,7 +59,7 @@
}
public function testNewRenderer_titleConversionDisabled() {
- $parser = $this->getParser( 'zh', false, false, true,
Parser::OT_HTML );
+ $parser = $this->getParser( 'zh', false, false, true );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -91,7 +94,7 @@
}
public function testNewRenderer_forNonVariantLanguage() {
- $parser = $this->getParser( 'en', true, false, false,
Parser::OT_HTML );
+ $parser = $this->getParser( 'en', true );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -103,7 +106,7 @@
}
public function testNewRender_forVariantLanguage() {
- $parser = $this->getParser( 'zh', false, false, false,
Parser::OT_HTML );
+ $parser = $this->getParser( 'zh' );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -115,7 +118,7 @@
}
public function testNewRenderer_usageTracking() {
- $parser = $this->getParser( 'en', true, false, false,
Parser::OT_HTML );
+ $parser = $this->getParser( 'en', true );
$rendererFactory = $this->getStatementGroupRendererFactory();
$renderer = $rendererFactory->newRendererFromParser( $parser );
@@ -126,6 +129,32 @@
$usages = $usageAccumulator->getUsages();
$this->assertArrayHasKey( 'Q7#L.en', $usages );
$this->assertArrayHasKey( 'Q7#T', $usages );
+ }
+
+ public function testNewRendererFromParser_languageOption() {
+ $idResolver = $this->getMockBuilder(
'Wikibase\Client\DataAccess\PropertyIdResolver' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $formatterFactory = $this->getMockBuilder(
'Wikibase\Lib\OutputFormatSnakFormatterFactory' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $self = $this;
+ $formatterFactory->expects( $this->once() )
+ ->method( 'getSnakFormatter' )
+ ->will( $this->returnCallback( function( $format,
FormatterOptions $options ) use ( $self ) {
+ $self->assertSame( 'de', $options->getOption(
ValueFormatter::OPT_LANG ) );
+ return $self->getMock(
'Wikibase\Lib\SnakFormatter' );
+ } ) );
+
+ $factory = new StatementGroupRendererFactory(
+ $idResolver,
+ new SnaksFinder(),
+ new LanguageFallbackChainFactory(),
+ $formatterFactory,
+ $this->getMock(
'Wikibase\DataModel\Services\Lookup\EntityLookup' )
+ );
+ $factory->newRendererFromParser( $this->getParser( 'de' ) );
}
private function getStatementGroupRendererFactory() {
@@ -216,8 +245,12 @@
return $entityLookup;
}
- private function getParser( $languageCode, $interfaceMessage,
$disableContentConversion,
- $disableTitleConversion, $outputType
+ private function getParser(
+ $languageCode = 'en',
+ $interfaceMessage = false,
+ $disableContentConversion = false,
+ $disableTitleConversion = false,
+ $outputType = Parser::OT_HTML
) {
$parserConfig = array( 'class' => 'Parser' );
diff --git a/lib/includes/LanguageFallbackChainFactory.php
b/lib/includes/LanguageFallbackChainFactory.php
index 6564961..6d2588a 100644
--- a/lib/includes/LanguageFallbackChainFactory.php
+++ b/lib/includes/LanguageFallbackChainFactory.php
@@ -81,16 +81,14 @@
* @return LanguageFallbackChain
*/
public function newFromLanguage( Language $language, $mode =
self::FALLBACK_ALL ) {
- if ( isset( $this->languageCache[$language->getCode()][$mode] )
) {
- return
$this->languageCache[$language->getCode()][$mode];
+ $languageCode = $language->getCode();
+
+ if ( !isset( $this->languageCache[$languageCode][$mode] ) ) {
+ $chain = $this->buildFromLanguage( $language, $mode );
+ $this->languageCache[$languageCode][$mode] = new
LanguageFallbackChain( $chain );
}
- $chain = $this->buildFromLanguage( $language, $mode );
- $languageFallbackChain = new LanguageFallbackChain( $chain );
-
- $this->languageCache[$language->getCode()][$mode] =
$languageFallbackChain;
-
- return $languageFallbackChain;
+ return $this->languageCache[$languageCode][$mode];
}
/**
@@ -104,16 +102,12 @@
public function newFromLanguageCode( $languageCode, $mode =
self::FALLBACK_ALL ) {
$languageCode = LanguageWithConversion::validateLanguageCode(
$languageCode );
- if ( isset( $this->languageCache[$languageCode][$mode] ) ) {
- return $this->languageCache[$languageCode][$mode];
+ if ( !isset( $this->languageCache[$languageCode][$mode] ) ) {
+ $chain = $this->buildFromLanguage( $languageCode, $mode
);
+ $this->languageCache[$languageCode][$mode] = new
LanguageFallbackChain( $chain );
}
- $chain = $this->buildFromLanguage( $languageCode, $mode );
- $languageFallbackChain = new LanguageFallbackChain( $chain );
-
- $this->languageCache[$languageCode][$mode] =
$languageFallbackChain;
-
- return $languageFallbackChain;
+ return $this->languageCache[$languageCode][$mode];
}
/**
diff --git a/lib/includes/formatters/MwTimeIsoFormatter.php
b/lib/includes/formatters/MwTimeIsoFormatter.php
index 0571d67..bc969a2 100644
--- a/lib/includes/formatters/MwTimeIsoFormatter.php
+++ b/lib/includes/formatters/MwTimeIsoFormatter.php
@@ -33,7 +33,8 @@
public function __construct( FormatterOptions $options = null ) {
parent::__construct( $options );
- $this->language = Language::factory( $this->getOption(
ValueFormatter::OPT_LANG ) );
+ $languageCode = $this->getOption( ValueFormatter::OPT_LANG );
+ $this->language = Language::factory( $languageCode );
}
/**
--
To view, visit https://gerrit.wikimedia.org/r/250934
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I0685ad9c64d821e29e6a334469d9ba547864cd40
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits