$this->extractConfig( $info );
$this->extractHooks( $info );
$dir = dirname( $path );
- $this->extractMessageSettings( $dir, $info );
+ $this->extractExtensionMessagesFiles( $dir, $info );
+ $this->extractMessagesDirs( $dir, $info );
$this->extractNamespaces( $info );
$this->extractResourceLoaderModules( $dir, $info );
if ( isset( $info['callback'] ) ) {
}
}
+ protected function extractExtensionMessagesFiles( $dir, array $info ) {
+ if ( isset( $info['ExtensionMessagesFiles'] ) ) {
+ $this->globals["wgExtensionMessagesFiles"] += array_map( function( $file ) use ( $dir ) {
+ return "$dir/$file";
+ }, $info['ExtensionMessagesFiles'] );
+ $this->processed[] = 'ExtensionMessagesFiles';
+ }
+ }
+
/**
* Set message-related settings, which need to be expanded to use
* absolute paths
* @param string $dir
* @param array $info
*/
- protected function extractMessageSettings( $dir, array $info ) {
- foreach ( array( 'ExtensionMessagesFiles', 'MessagesDirs' ) as $key ) {
- if ( isset( $info[$key] ) ) {
- foreach ( $info[$key] as $name => $files ) {
- foreach ( (array)$files as $file ) {
- $this->globals["wg$key"][$name][] = "$dir/$file";
- }
+ protected function extractMessagesDirs( $dir, array $info ) {
+ if ( isset( $info['MessagesDirs'] ) ) {
+ foreach ( $info['MessagesDirs'] as $name => $files ) {
+ foreach ( (array)$files as $file ) {
+ $this->globals["wgMessagesDirs"][$name][] = "$dir/$file";
}
- $this->processed[] = $key;
}
+ $this->processed[] = 'MessagesDirs';
}
}
$this->assertArrayNotHasKey( 'wg@IGNORED', $extracted['globals'] );
}
- public static function provideExtractMessageSettings() {
+ public static function provideExtracttExtensionMessagesFiles() {
+ $dir = __DIR__ . '/FooBar/';
+ return array(
+ array(
+ array( 'ExtensionMessagesFiles' => array( 'FooBarAlias' => 'FooBar.alias.php' ) ),
+ array( 'wgExtensionMessagesFiles' => array( 'FooBarAlias' => $dir . 'FooBar.alias.php' ) )
+ ),
+ array(
+ array(
+ 'ExtensionMessagesFiles' => array(
+ 'FooBarAlias' => 'FooBar.alias.php',
+ 'FooBarMagic' => 'FooBar.magic.i18n.php',
+ ),
+ ),
+ array(
+ 'wgExtensionMessagesFiles' => array(
+ 'FooBarAlias' => $dir . 'FooBar.alias.php',
+ 'FooBarMagic' => $dir . 'FooBar.magic.i18n.php',
+ ),
+ ),
+ ),
+ );
+ }
+
+ /**
+ * @covers ExtensionProcessor::extracttExtensionMessagesFiles
+ * @dataProvider provideExtracttExtensionMessagesFiles
+ */
+ public function testExtracttExtensionMessagesFiles( $input, $expected ) {
+ $processor = new ExtensionProcessor();
+ $processor->extractInfo( $this->dir, $input + self::$default );
+ $out = $processor->getExtractedInfo();
+ foreach ( $expected as $key => $value ) {
+ $this->assertEquals( $value, $out['globals'][$key] );
+ }
+ }
+
+
+ public static function provideExtractMessagesDirs() {
$dir = __DIR__ . '/FooBar/';
return array(
array(
}
/**
- * @covers ExtensionProcessor::extractMessageSettings
- * @dataProvider provideExtractMessageSettings
+ * @covers ExtensionProcessor::extractMessagesDirs
+ * @dataProvider provideExtractMessagesDirs
*/
- public function testExtractMessageSettings( $input, $expected ) {
+ public function testExtractMessagesDirs( $input, $expected ) {
$processor = new ExtensionProcessor();
$processor->extractInfo( $this->dir, $input + self::$default );
$out = $processor->getExtractedInfo();