Daniel Kinzler has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/98101


Change subject: (bug #56685) Parsing of localized quantities.
......................................................................

(bug #56685) Parsing of localized quantities.

This introduces MediaWikiNumberUnlocalizer which relies on
MediaWiki's Language class for converting numbers to canonical form.

Change-Id: I996e8d032a476d245bbfc2872d7eae4bbad79cb1
---
M lib/WikibaseLib.classes.php
M lib/WikibaseLib.php
A lib/includes/parsers/MediaWikiNumberUnlocalizer.php
3 files changed, 41 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/01/98101/1

diff --git a/lib/WikibaseLib.classes.php b/lib/WikibaseLib.classes.php
index f48a838..b925dbf 100644
--- a/lib/WikibaseLib.classes.php
+++ b/lib/WikibaseLib.classes.php
@@ -135,6 +135,7 @@
 
                // includes/parsers
                'Wikibase\Lib\EntityIdParser' => 
'includes/parsers/EntityIdParser.php',
+               'Wikibase\Lib\MediaWikiNumberUnlocalizer' => 
'includes/parsers/MediaWikiNumberUnlocalizer.php',
 
                // includes/specials
                'Wikibase\Lib\Specials\SpecialWikibasePage' => 
'includes/specials/SpecialWikibasePage.php',
diff --git a/lib/WikibaseLib.php b/lib/WikibaseLib.php
index 9e819b1..2315187 100644
--- a/lib/WikibaseLib.php
+++ b/lib/WikibaseLib.php
@@ -136,7 +136,15 @@
        // i18n
        $wgExtensionMessagesFiles['WikibaseLib'] = __DIR__ . 
'/WikibaseLib.i18n.php';
 
+       // This is somewhat hackish, make WikibaseValueParserBuilders, 
analogous to WikibaseValueFormatterBuilders
        $wgValueParsers['wikibase-entityid'] = 'Wikibase\Lib\EntityIdParser';
+       $wgValueParsers['quantity'] = function( ValueParsers\ParserOptions 
$options ) {
+               $unlocalizer = new Wikibase\Lib\MediaWikiNumberUnlocalizer();
+               return new \ValueParsers\QuantityParser(
+                       new \ValueParsers\DecimalParser( $options, $unlocalizer 
),
+                       $options );
+       };
+
        $wgDataValues['wikibase-entityid'] = 
'Wikibase\DataModel\Entity\EntityIdValue';
        $wgJobClasses['ChangeNotification'] = 'Wikibase\ChangeNotificationJob';
        $wgJobClasses['UpdateRepoOnMove'] = 'Wikibase\UpdateRepoOnMoveJob';
diff --git a/lib/includes/parsers/MediaWikiNumberUnlocalizer.php 
b/lib/includes/parsers/MediaWikiNumberUnlocalizer.php
new file mode 100644
index 0000000..87093d7
--- /dev/null
+++ b/lib/includes/parsers/MediaWikiNumberUnlocalizer.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Wikibase\Lib;
+use Language;
+use ValueParsers\ParserOptions;
+use ValueParsers\Unlocalizer;
+
+/**
+ * MediaWikiNumberUnlocalizer
+ *
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+class MediaWikiNumberUnlocalizer implements Unlocalizer {
+
+       /**
+        * @see Unlocalizer::unlocalize()
+        *
+        * @param string $number string to process
+        * @param string $language language code
+        * @param ParserOptions $options
+        *
+        * @return string unlocalized string
+        */
+       public function unlocalize( $number, $language, ParserOptions $options 
) {
+               $language = Language::factory( $language );
+
+               $canonicalizedNumber = $language->parseFormattedNumber( $number 
);
+               return $canonicalizedNumber;
+       }
+}
+ 
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/98101
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I996e8d032a476d245bbfc2872d7eae4bbad79cb1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to