Liangent has uploaded a new change for review. https://gerrit.wikimedia.org/r/84528
Change subject: Revert "Revert 3fab17d4 and 61dacb15 for PropertyParserFunction" ...................................................................... Revert "Revert 3fab17d4 and 61dacb15 for PropertyParserFunction" This reverts commit bf35e4ca9df3f959f58107185e1d7383e6baf400. Change-Id: I69eb825d7c2b6468a719bb8d3bcf56f83a6845c7 --- M client/includes/parserhooks/PropertyParserFunction.php M client/tests/phpunit/includes/parserhooks/PropertyParserFunctionTest.php 2 files changed, 33 insertions(+), 17 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/28/84528/1 diff --git a/client/includes/parserhooks/PropertyParserFunction.php b/client/includes/parserhooks/PropertyParserFunction.php index 4941640..55bc65f 100644 --- a/client/includes/parserhooks/PropertyParserFunction.php +++ b/client/includes/parserhooks/PropertyParserFunction.php @@ -2,9 +2,11 @@ namespace Wikibase; +use ValueFormatters\FormatterOptions; use Wikibase\Client\WikibaseClient; use Wikibase\DataModel\SimpleSiteLink; use Wikibase\Lib\SnakFormatter; +use Wikibase\Lib\SnakFormatterFactory; /** * Handler of the {{#property}} parser function. @@ -34,6 +36,7 @@ * @licence GNU GPL v2+ * @author Katie Filbert < aude.w...@gmail.com > * @author Jeroen De Dauw < jeroended...@gmail.com > + * @author Daniel Kinzler */ class PropertyParserFunction { @@ -59,7 +62,7 @@ * @param EntityLookup $entityLookup * @param PropertyLabelResolver $propertyLabelResolver * @param ParserErrorMessageFormatter $errorFormatter - * @param Lib\SnakFormatter $snaksFormatter + * @param SnakFormatter $snaksFormatter */ public function __construct( \Language $language, EntityLookup $entityLookup, PropertyLabelResolver $propertyLabelResolver, @@ -114,12 +117,18 @@ * @return string - wikitext format */ private function formatSnakList( $snaks ) { - $languageFallbackChainFactory = WikibaseClient::getDefaultInstance()->getLanguageFallbackChainFactory(); - $languageFallbackChain = $languageFallbackChainFactory->newFromLanguage( $this->language, - LanguageFallbackChainFactory::FALLBACK_SELF | LanguageFallbackChainFactory::FALLBACK_VARIANTS - ); - $formattedValues = $this->snaksFormatter->formatSnaks( $snaks, $languageFallbackChain ); + $formattedValues = $this->formatSnaks( $snaks ); return $this->language->commaList( $formattedValues ); + } + + private function formatSnaks( $snaks ) { + $strings = array(); + + foreach ( $snaks as $snak ) { + $strings[] = $this->snaksFormatter->formatSnak( $snak ); + } + + return $strings; } /** @@ -191,7 +200,18 @@ $entityLookup = $wikibaseClient->getStore()->getEntityLookup(); $propertyLabelResolver = $wikibaseClient->getStore()->getPropertyLabelResolver(); - $formatter = $wikibaseClient->newSnakFormatter(); + + $languageFallbackChainFactory = WikibaseClient::getDefaultInstance()->getLanguageFallbackChainFactory(); + $languageFallbackChain = $languageFallbackChainFactory->newFromLanguage( $targetLanguage, + LanguageFallbackChainFactory::FALLBACK_SELF | LanguageFallbackChainFactory::FALLBACK_VARIANTS + ); + + $options = new FormatterOptions( array( + 'languages' => $languageFallbackChain, + // ...more options... + ) ); + + $formatter = $wikibaseClient->newSnakFormatter( SnakFormatterFactory::FORMAT_WIKI, $options ); $instance = new self( $targetLanguage, $entityLookup, $propertyLabelResolver, diff --git a/client/tests/phpunit/includes/parserhooks/PropertyParserFunctionTest.php b/client/tests/phpunit/includes/parserhooks/PropertyParserFunctionTest.php index 0e5d6b3..4b24dbe 100644 --- a/client/tests/phpunit/includes/parserhooks/PropertyParserFunctionTest.php +++ b/client/tests/phpunit/includes/parserhooks/PropertyParserFunctionTest.php @@ -8,9 +8,6 @@ use Wikibase\DataModel\Entity\ItemId; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\Item; -use Wikibase\Lib\EntityRetrievingDataTypeLookup; -use Wikibase\Lib\SnakFormatter; -use Wikibase\Lib\TypedValueFormatter; use Wikibase\ParserErrorMessageFormatter; use Wikibase\Property; use Wikibase\PropertyParserFunction; @@ -43,11 +40,10 @@ $mockRepo = $this->newMockRepository(); $mockResolver = new MockPropertyLabelResolver( $targetLanguage->getCode(), $mockRepo ); - $formatter = new SnakFormatter( - new EntityRetrievingDataTypeLookup( $mockRepo ), - new TypedValueFormatter(), - $dataTypeFactory - ); + $formatter = $this->getMock( 'Wikibase\Lib\SnakFormatter' ); + $formatter->expects( $this->any() ) + ->method( 'formatSnak' ) + ->will( $this->returnValue( '(a kitten)' ) ); return new PropertyParserFunction( $targetLanguage, @@ -90,12 +86,12 @@ return array( array( 'p1337', - 'Please write tests before merging your code, or kittens will die', + '(a kitten), (a kitten)', 'Congratulations, you just killed a kitten' ), array( 'kitten', - 'Please write tests before merging your code, or kittens will die', + '(a kitten), (a kitten)', 'Congratulations, you just killed a kitten' ), ); -- To view, visit https://gerrit.wikimedia.org/r/84528 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I69eb825d7c2b6468a719bb8d3bcf56f83a6845c7 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Liangent <liang...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits