http://www.mediawiki.org/wiki/Special:Code/MediaWiki/64053

Revision: 64053
Author:   conrad
Date:     2010-03-23 01:33:20 +0000 (Tue, 23 Mar 2010)

Log Message:
-----------
Localise option names better, still needs work for booleans and list/rawlist

Modified Paths:
--------------
    trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.php
    trunk/extensions/NaturalLanguageList/NaturalLanguageList.php

Added Paths:
-----------
    trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.magic.php

Added: trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.magic.php
===================================================================
--- trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.magic.php     
                        (rev 0)
+++ trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.magic.php     
2010-03-23 01:33:20 UTC (rev 64053)
@@ -0,0 +1,12 @@
+<?php
+
+$magicWords = array();
+
+$magicWords['en'] = array(
+       'nll_blanks' => array( 0, 'blanks' ),
+       'nll_duplicates' => array( 0, 'duplicates' ),
+       'nll_itemcover' => array( 0, 'itemcover' ),
+       'nll_fieldsperitem' => array( 0, 'itemsperitem', 'fieldsperitem' ),
+       'nll_lastseparator' => array( 0, 'lastseparator' ),
+       'nll_outputseparator' => array( 0, 'outputseparator', 'separator' ),
+);


Property changes on: 
trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.magic.php
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.php
===================================================================
--- trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.php   
2010-03-23 01:32:15 UTC (rev 64052)
+++ trunk/extensions/NaturalLanguageList/NaturalLanguageList.i18n.php   
2010-03-23 01:33:20 UTC (rev 64053)
@@ -1,4 +1,6 @@
 <?php
+
+require_once( dirname(__FILE__) . '/NaturalLanguageList.i18n.magic.php' );
 $messages['en'] = array (
        'nll-itemcover'                 => '$1',
        'nll-separator'                 => ', ',

Modified: trunk/extensions/NaturalLanguageList/NaturalLanguageList.php
===================================================================
--- trunk/extensions/NaturalLanguageList/NaturalLanguageList.php        
2010-03-23 01:32:15 UTC (rev 64052)
+++ trunk/extensions/NaturalLanguageList/NaturalLanguageList.php        
2010-03-23 01:33:20 UTC (rev 64053)
@@ -320,26 +320,18 @@
                        }
                }
                # Still here?  Then it must be an option
-               switch ( trim( $var ) ) {
+               switch ( $name = self::parseOptionName( $var ) ) {
                        case 'duplicates':
-                               $this->mOptions['duplicates'] = self::trueCheck 
( $value );
-                               break;
                        case 'blanks':
-                               $this->mOptions['blanks'] = self::trueCheck ( 
$value );
+                               $this->mOptions[$name] = self::parseBoolean( 
$value );
                                break;
                        case 'outputseparator':
-                       case 'separator':
-                               $this->mOptions['outputseparator'] = 
self::trimString ( $value );
-                               break;
                        case 'lastseparator':
-                               $this->mOptions['lastseparator'] = 
self::trimString ( $value );
-                               break;
                        case 'itemcover':
-                               $this->mOptions['itemcover'] = self::trimString 
( $value );
+                               $this->mOptions[$name] = self::parseString( 
$value );
                                break;
                        case 'fieldsperitem':
-                       case 'itemsperitem':
-                               $this->mOptions['fieldsperitem'] = 
self::numeralCheck ( $value );
+                               $this->mOptions[$name] = self::parseNumeral( 
$value );
                                break;
                        default:
                                # Wasn't an option after all
@@ -347,22 +339,42 @@
                                        ? trim( $this->mFrame->expand( $arg ) )
                                        : $arg;
                }
+               return false;
        }
 
-       private static function numeralCheck ( $value, $default = 1 ) {
-               if ( is_numeric ( $value ) && $value > 0 ) {
+       private static function parseOptionName( $value ) {
+
+               static $magicWords = null;
+               if ( $magicWords === null ) {
+                       $magicWords = new MagicWordArray( array(
+                               'nll_blanks', 'nll_duplicates', 
+                               'nll_fieldsperitem', 'nll_itemcover',
+                               'nll_lastseparator', 'nll_outputseparator'
+                       ) );
+               }
+
+               if ( $name = $magicWords->matchStartToEnd( trim($value) ) ) {
+                       return str_replace( 'nll_', '', $name );
+               }
+
+               return false;
+       }
+
+
+       private static function parseNumeral( $value, $default = 1 ) {
+               if ( is_numeric( $value ) && $value > 0 ) {
                        return floor( $value ); # only integers
                }
                return $default;
        }
 
-       private static function trimString ( $value, $default = null ) {
+       private static function parseString( $value, $default = null ) {
                if ( $value !== '' )
                        return $value;
                return $default;
        }
 
-       private static function trueCheck ( $value ) {
+       private static function parseBoolean( $value ) {
                return in_array( $value, array( 1, true, '1', 'true' ), true );
        }
 }



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to