МедијаВики:$IP/extensions/NumberFormat/NumberFormat.php

Од Википедија — слободната енциклопедија

<?php $wgExtensionCredits['parserhook'][] = array( 'name' => 'NumberFormat', 'version' => '0.4', // 2010-08-10 'description' => 'Format numbers: insert thousands separators, round to a given number of decimals', 'author' => 'Patrick Nagel' );

$wgExtensionFunctions[] = 'number_format_Setup'; $wgHooks['LanguageGetMagic'][] = 'number_format_Magic';

function number_format_Setup() {

       global $wgParser;
       $wgParser->setFunctionHook('number_format', 'number_format_Render');

}

function number_format_Magic(&$magicWords, $langCode) {

       $magicWords['number_format'] = array(0, 'number_format');
       return true;

}

function number_format_Render(&$parser) {

       // {{#number_format:number|decimals|dec_point|thousands_sep}}

       // Get the parameters that were passed to this function
       $params = func_get_args();
       array_shift($params);
       $paramcount = count($params);

       if ($paramcount >= 1) {
               if ($params[0] == ) return ;
               if (!is_numeric($params[0])) return 'First argument to number_format must be a number';
       }

       switch ($paramcount) {
               case 4:
                       // Since 'space' cannot be passed through parser functions, users are advised to use
                       // the underscore instead. Converting back to space here.
                       if ($params[2] == '_') $params[2] = ' ';
                       if ($params[3] == '_') $params[3] = ' ';
                       return number_format($params[0], $params[1], $params[2], $params[3]);
                       break;
               case 3:
                       return 'number_format needs one, two or four parameters - not three.';
                       break;
               case 2:
                       return number_format($params[0], $params[1]);
                       break;
               case 1:
                       return number_format($params[0]);
                       break;
               case 0:
                       return "";
                       break;
               default:
                       return 'wrong number of arguments to number_format.';
       }

}