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

Reply via email to