Thiemo Mättig (WMDE) has uploaded a new change for review.

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

Change subject: Rename and rework classes for configuring JS deserializers
......................................................................

Rename and rework classes for configuring JS deserializers

This was originally meant to become Patch Set 9 in Ic058f8c, but it
became to big.

Bug: T132558
Change-Id: I626a6ba29f82d045d4577bba79be51c7d6129a50
---
A repo/includes/Modules/EntityTypesConfigValueProvider.php
D repo/includes/Modules/EntityTypesModuleWorker.php
A repo/includes/Modules/MediaWikiConfigModule.php
A repo/includes/Modules/MediaWikiConfigValueProvider.php
D repo/includes/Modules/MwConfigModule.php
D repo/includes/Modules/MwConfigModuleWorker.php
M repo/includes/WikibaseRepo.php
M repo/resources/Resources.php
8 files changed, 144 insertions(+), 132 deletions(-)


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

diff --git a/repo/includes/Modules/EntityTypesConfigValueProvider.php 
b/repo/includes/Modules/EntityTypesConfigValueProvider.php
new file mode 100644
index 0000000..2eb06dd
--- /dev/null
+++ b/repo/includes/Modules/EntityTypesConfigValueProvider.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Wikibase\Repo\Modules;
+
+use Wikibase\Lib\EntityTypeDefinitions;
+
+/**
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine <[email protected]>
+ * @author Thiemo Mättig
+ * @author Jonas Kress
+ */
+class EntityTypesConfigValueProvider implements MediaWikiConfigValueProvider {
+
+       /**
+        * @var EntityTypeDefinitions
+        */
+       private $entityTypeDefinitions;
+
+       public function __construct( EntityTypeDefinitions 
$entityTypeDefinitions ) {
+               $this->entityTypeDefinitions = $entityTypeDefinitions;
+       }
+
+       /**
+        * @see MediaWikiJsConfigProvider::getKey
+        *
+        * @return string
+        */
+       public function getKey() {
+               return 'wbEntityTypes';
+       }
+
+       /**
+        * @see MediaWikiJsConfigProvider::getValue
+        *
+        * @return array
+        */
+       public function getValue() {
+               return [
+                       'types' => 
$this->entityTypeDefinitions->getEntityTypes(),
+                       'deserializer-factory-functions'
+                               => 
$this->entityTypeDefinitions->getJsDeserializerFactoryFunctions()
+               ];
+       }
+}
diff --git a/repo/includes/Modules/EntityTypesModuleWorker.php 
b/repo/includes/Modules/EntityTypesModuleWorker.php
deleted file mode 100644
index a8a3bf1..0000000
--- a/repo/includes/Modules/EntityTypesModuleWorker.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Wikibase\Repo\Modules;
-
-use ResourceLoaderContext;
-use Wikibase\Lib\EntityTypeDefinitions;
-
-/**
- * @since 0.5
- *
- * @license GPL-2.0+
- * @author Adrian Heine <[email protected]>
- */
-class EntityTypesModuleWorker implements MwConfigModuleWorker {
-
-       /**
-        * @var EntityTypeDefinitions
-        */
-       private $entityTypeDefinitions;
-
-       public function __construct( EntityTypeDefinitions 
$entityTypeDefinitions ) {
-               $this->entityTypeDefinitions = $entityTypeDefinitions;
-       }
-
-       /**
-        * @since 0.5
-        *
-        * @param ResourceLoaderContext $context
-        *
-        * @return mixed
-        */
-       public function getValue( ResourceLoaderContext $context ) {
-               return [
-                       "types" => 
$this->entityTypeDefinitions->getEntityTypes(),
-                       "deserializer-factory-functions" => 
$this->entityTypeDefinitions->getJsDeserializerFactoryFunctions()
-               ];
-       }
-
-}
diff --git a/repo/includes/Modules/MediaWikiConfigModule.php 
b/repo/includes/Modules/MediaWikiConfigModule.php
new file mode 100644
index 0000000..4cca07b
--- /dev/null
+++ b/repo/includes/Modules/MediaWikiConfigModule.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Wikibase\Repo\Modules;
+
+use ResourceLoader;
+use ResourceLoaderContext;
+use ResourceLoaderModule;
+use Xml;
+
+/**
+ * Generic, reusable ResourceLoader module to set a JavaScript configuration 
variable via
+ * mediaWiki.config.set.
+ *
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine <[email protected]>
+ */
+class MediaWikiConfigModule extends ResourceLoaderModule {
+
+       /**
+        * @var callable
+        */
+       private $getConfigValueProvider;
+
+       /**
+        * @param array $options ResourceLoader module options. Must include a 
"getconfigvalueprovider"
+        *  callable that returns a MediaWikiConfigValueProvider when called.
+        */
+       public function __construct( array $options ) {
+               $this->getConfigValueProvider = 
$options['getconfigvalueprovider'];
+       }
+
+       /**
+        * @see ResourceLoaderModule::getScript
+        *
+        * @param ResourceLoaderContext $context
+        *
+        * @return string JavaScript code
+        */
+       public function getScript( ResourceLoaderContext $context ) {
+               /** @var MediaWikiConfigValueProvider $configValueProvider */
+               $configValueProvider = call_user_func( 
$this->getConfigValueProvider );
+
+               return Xml::encodeJsCall(
+                       'mediaWiki.config.set',
+                       [
+                               $configValueProvider->getKey(),
+                               $configValueProvider->getValue()
+                       ],
+                       ResourceLoader::inDebugMode()
+               );
+       }
+
+       /**
+        * @return bool Always true.
+        */
+       public function enableModuleContentVersion() {
+               return true;
+       }
+
+}
diff --git a/repo/includes/Modules/MediaWikiConfigValueProvider.php 
b/repo/includes/Modules/MediaWikiConfigValueProvider.php
new file mode 100644
index 0000000..a8e64b1
--- /dev/null
+++ b/repo/includes/Modules/MediaWikiConfigValueProvider.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Wikibase\Repo\Modules;
+
+/**
+ * Provider to pass information to mediaWiki.config.
+ *
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine <[email protected]>
+ * @author Thiemo Mättig
+ * @author Jonas Kress
+ */
+interface MediaWikiConfigValueProvider {
+
+       /**
+        * @return string Key for use in mediaWiki.config.
+        */
+       public function getKey();
+
+       /**
+        * @return mixed Non-complex value for use in mediaWiki.config.set, 
typically a string or
+        *  (nested) array of strings.
+        */
+       public function getValue();
+
+}
diff --git a/repo/includes/Modules/MwConfigModule.php 
b/repo/includes/Modules/MwConfigModule.php
deleted file mode 100644
index c5a1898..0000000
--- a/repo/includes/Modules/MwConfigModule.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-namespace Wikibase\Repo\Modules;
-
-use ResourceLoader;
-use ResourceLoaderContext;
-use ResourceLoaderModule;
-use Xml;
-
-/**
- * @since 0.5
- *
- * @license GPL-2.0+
- * @author Adrian Heine <[email protected]>
- */
-class MwConfigModule extends ResourceLoaderModule {
-
-       /**
-        * @var string
-        */
-       private $configName;
-
-       /**
-        * @var callable
-        */
-       private $getWorker;
-
-       public function __construct( $info ) {
-               $this->getWorker = $info['getworker'];
-               $this->configName = $info['name'];
-       }
-
-       /**
-        * @see ResourceLoaderModule::getScript
-        *
-        * @since 0.5
-        *
-        * @param ResourceLoaderContext $context
-        *
-        * @return string
-        */
-       public function getScript( ResourceLoaderContext $context ) {
-               return Xml::encodeJsCall(
-                       'mediaWiki.config.set',
-                       [
-                               $this->configName,
-                               call_user_func( $this->getWorker )->getValue( 
$context )
-                       ],
-                       ResourceLoader::inDebugMode()
-               );
-       }
-
-       /**
-        * @return bool
-        */
-       public function enableModuleContentVersion() {
-               return true;
-       }
-
-}
diff --git a/repo/includes/Modules/MwConfigModuleWorker.php 
b/repo/includes/Modules/MwConfigModuleWorker.php
deleted file mode 100644
index 0ec31f3..0000000
--- a/repo/includes/Modules/MwConfigModuleWorker.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Wikibase\Repo\Modules;
-
-use ResourceLoaderContext;
-
-/**
- * @since 0.5
- *
- * @license GPL-2.0+
- * @author Adrian Heine <[email protected]>
- */
-interface MwConfigModuleWorker {
-
-       /**
-        * @since 0.5
-        *
-        * @param ResourceLoaderContext $context
-        *
-        * @return mixed
-        */
-       public function getValue( ResourceLoaderContext $context );
-
-}
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 677ab8b..044e1fc 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -105,7 +105,7 @@
 use Wikibase\Repo\Localizer\MessageExceptionLocalizer;
 use Wikibase\Repo\Localizer\MessageParameterFormatter;
 use Wikibase\Repo\Localizer\ParseExceptionLocalizer;
-use Wikibase\Repo\Modules\EntityTypesModuleWorker;
+use Wikibase\Repo\Modules\EntityTypesConfigValueProvider;
 use Wikibase\Repo\Notifications\ChangeNotifier;
 use Wikibase\Repo\Notifications\ChangeTransmitter;
 use Wikibase\Repo\Notifications\DatabaseChangeTransmitter;
@@ -1661,8 +1661,8 @@
                return new WikibaseHtmlSnakFormatterFactory( 
$this->getSnakFormatterFactory() );
        }
 
-       public function getEntityTypesModuleWorker() {
-               return new EntityTypesModuleWorker( 
$this->entityTypeDefinitions );
+       public function getEntityTypesConfigValueProvider() {
+               return new EntityTypesConfigValueProvider( 
$this->entityTypeDefinitions );
        }
 
 }
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index 53c2ada..8de739c 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -1,8 +1,7 @@
 <?php
 
 use DataTypes\Modules\DataTypesModule;
-use Wikibase\Repo\Modules\EntityTypesModuleWorker;
-use Wikibase\Repo\Modules\MwConfigModule;
+use Wikibase\Repo\Modules\MediaWikiConfigModule;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
@@ -51,10 +50,9 @@
                ),
 
                'mw.config.values.wbEntityTypes' => $moduleTemplate + [
-                       'class' => MwConfigModule::class,
-                       'name' => 'wbEntityTypes',
-                       'getworker' => function() {
-                               return 
WikibaseRepo::getDefaultInstance()->getEntityTypesModuleWorker();
+                       'class' => MediaWikiConfigModule::class,
+                       'getconfigvalueprovider' => function() {
+                               return 
WikibaseRepo::getDefaultInstance()->getEntityTypesConfigValueProvider();
                        }
                ],
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I626a6ba29f82d045d4577bba79be51c7d6129a50
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

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

Reply via email to