jenkins-bot has submitted this change and it was merged.

Change subject: Update support for JSON in mediawiki-defines.txt
......................................................................


Update support for JSON in mediawiki-defines.txt

* Updated support for JSON in mediawiki-defines.txt
* Added tests for JSON support

Change-Id: I3c982836ce3cadc448ca6f3fc5d5b4f166920c06
---
M ffs/MediaWikiExtensions.php
M tests/phpunit/MediaWikiExtensionTest.php
A tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
A tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
M tests/phpunit/data/mediawiki-extensions.txt
5 files changed, 101 insertions(+), 18 deletions(-)

Approvals:
  Nikerabbit: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/ffs/MediaWikiExtensions.php b/ffs/MediaWikiExtensions.php
index 5a937a4..6a7de12 100644
--- a/ffs/MediaWikiExtensions.php
+++ b/ffs/MediaWikiExtensions.php
@@ -103,9 +103,13 @@
                        $conf['BASIC']['extensionurl'] = $info['url'];
                }
 
-               $conf['FILES']['class'] = 'MediaWikiExtensionFFS';
+               if ( $info['format'] === 'json' ) {
+                       $conf['FILES']['class'] = 'JsonFFS';
+               } else {
+                       $conf['FILES']['class'] = 'MediaWikiExtensionFFS';
+               }
+
                $conf['FILES']['sourcePattern'] = $this->path . '/' . 
$info['file'];
-               // Kind of hacky, export path will be wrong if %GROUPROOT% not 
used.
                $target = str_replace( '%GROUPROOT%/', '', 
$conf['FILES']['sourcePattern'] );
                $conf['FILES']['targetPattern'] = $target;
 
@@ -182,13 +186,14 @@
                                } else {
                                        list( $key, $value ) = array_map( 
'trim', explode( '=', $line, 2 ) );
                                        switch ( $key ) {
-                                               case 'file':
-                                               case 'var':
-                                               case 'id':
-                                               case 'descmsg':
-                                               case 'desc':
-                                               case 'magicfile':
                                                case 'aliasfile':
+                                               case 'desc':
+                                               case 'descmsg':
+                                               case 'file':
+                                               case 'format':
+                                               case 'id':
+                                               case 'magicfile':
+                                               case 'var':
                                                        $newgroup[$key] = 
$value;
                                                        break;
                                                case 'optional':
@@ -251,10 +256,19 @@
                                $id = $this->idPrefix . preg_replace( '/\s+/', 
'', strtolower( $name ) );
                        }
 
-                       if ( isset( $g['file'] ) ) {
-                               $file = $g['file'];
+                       // Default message file format is currently php
+                       if ( !isset( $g['format'] ) ) {
+                               $g['format'] = 'php';
+                       }
+
+                       if ( !isset( $g['file'] ) ) {
+                               if ( $g['format'] === 'json' ) {
+                                       $file = preg_replace( '/\s+/', '', 
"$name/i18n/%CODE%.json" );
+                               } else {
+                                       $file = preg_replace( '/\s+/', '', 
"$name/$name.i18n.php" );
+                               }
                        } else {
-                               $file = preg_replace( '/\s+/', '', 
"$name/$name.i18n.php" );
+                               $file = $g['file'];
                        }
 
                        if ( isset( $g['descmsg'] ) ) {
@@ -278,14 +292,15 @@
                        );
 
                        $copyvars = array(
-                               'ignored',
-                               'optional',
-                               'var',
+                               'aliasfile',
                                'desc',
-                               'prefix',
-                               'mangle',
+                               'format',
+                               'ignored',
                                'magicfile',
-                               'aliasfile'
+                               'mangle',
+                               'optional',
+                               'prefix',
+                               'var',
                        );
 
                        foreach ( $copyvars as $var ) {
diff --git a/tests/phpunit/MediaWikiExtensionTest.php 
b/tests/phpunit/MediaWikiExtensionTest.php
index f063054..b94167b 100644
--- a/tests/phpunit/MediaWikiExtensionTest.php
+++ b/tests/phpunit/MediaWikiExtensionTest.php
@@ -19,7 +19,7 @@
                $foo->register( $list, $deps, $autoload );
 
                $this->assertEquals( 1, count( $deps ), 'A dependency to 
definition file was added' );
-               $this->assertEquals( 2, count( $list ), 'Two group were 
creates' );
+               $this->assertEquals( 4, count( $list ), 'Four groups were 
created' );
 
                $this->assertArrayHasKey( 'ext-exampleextension', $list );
                $expected = TranslateYaml::load( __DIR__ . 
'/data/MediaWikiExtensionTest-conf1.yaml' );
@@ -28,5 +28,13 @@
                $this->assertArrayHasKey( 'ext-wikimediamessages', $list );
                $expected = TranslateYaml::load( __DIR__ . 
'/data/MediaWikiExtensionTest-conf2.yaml' );
                $this->assertEquals( $expected, 
$list['ext-wikimediamessages']->getConfiguration() );
+
+               $this->assertArrayHasKey( 'ext-examplejsonextension', $list );
+               $expected = TranslateYaml::load( __DIR__ . 
'/data/MediaWikiExtensionTest-conf3.yaml' );
+               $this->assertEquals( $expected, 
$list['ext-examplejsonextension']->getConfiguration() );
+
+               $this->assertArrayHasKey( 'ext-exampleextension2', $list );
+               $expected = TranslateYaml::load( __DIR__ . 
'/data/MediaWikiExtensionTest-conf4.yaml' );
+               $this->assertEquals( $expected, 
$list['ext-exampleextension2']->getConfiguration() );
        }
 }
diff --git a/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml 
b/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
new file mode 100644
index 0000000..ab3b61c
--- /dev/null
+++ b/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
@@ -0,0 +1,27 @@
+BASIC:
+  class: MediaWikiExtensionMessageGroup
+  id: ext-examplejsonextension
+  namespace: 8
+  label: Example JsonExtension
+  descriptionmsg: examplejsonextension-desc
+  extensionurl: false
+
+FILES:
+  class: JsonFFS
+  sourcePattern: 
%GROUPROOT%/mediawiki-extensions/extensions/ExampleJsonExtension/i18n/%CODE%.json
+  targetPattern: 
mediawiki-extensions/extensions/ExampleJsonExtension/i18n/%CODE%.json
+
+CHECKER:
+  class: MediaWikiMessageChecker
+  checks:
+   - pluralCheck
+   - pluralFormsCheck
+   - wikiParameterCheck
+   - wikiLinksCheck
+   - XhtmlCheck
+   - braceBalanceCheck
+   - pagenameMessagesCheck
+   - miscMWChecks
+
+INSERTABLES:
+  class: MediaWikiInsertablesSuggester
diff --git a/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml 
b/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
new file mode 100644
index 0000000..2d04b0c
--- /dev/null
+++ b/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
@@ -0,0 +1,27 @@
+BASIC:
+  class: MediaWikiExtensionMessageGroup
+  id: ext-exampleextension2
+  namespace: 8
+  label: Example Extension 2
+  descriptionmsg: exampleextension2-desc
+  extensionurl: false
+
+FILES:
+  class: MediaWikiExtensionFFS
+  sourcePattern: %GROUPROOT%/mediawiki-extensions/extensions/foo
+  targetPattern: mediawiki-extensions/extensions/foo
+
+CHECKER:
+  class: MediaWikiMessageChecker
+  checks:
+   - pluralCheck
+   - pluralFormsCheck
+   - wikiParameterCheck
+   - wikiLinksCheck
+   - XhtmlCheck
+   - braceBalanceCheck
+   - pagenameMessagesCheck
+   - miscMWChecks
+
+INSERTABLES:
+  class: MediaWikiInsertablesSuggester
diff --git a/tests/phpunit/data/mediawiki-extensions.txt 
b/tests/phpunit/data/mediawiki-extensions.txt
index 224e063..7b4279a 100644
--- a/tests/phpunit/data/mediawiki-extensions.txt
+++ b/tests/phpunit/data/mediawiki-extensions.txt
@@ -7,3 +7,9 @@
 magicfile = FooBar.magic.php
 
 Example Extension
+
+Example JsonExtension
+format = json
+
+Example Extension 2
+file = foo

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I3c982836ce3cadc448ca6f3fc5d5b4f166920c06
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: KartikMistry <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: KartikMistry <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to