From 894fb23650f09b9ccfba7febcfd935437727d9bf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Sun, 23 Dec 2007 20:10:50 +0000 Subject: [PATCH] * Split Stat outputs to different file for better re-usability --- maintenance/language/StatOutputs.php | 103 +++++++++++++++++++++++++++ maintenance/language/transstat.php | 96 +------------------------ 2 files changed, 106 insertions(+), 93 deletions(-) create mode 100644 maintenance/language/StatOutputs.php diff --git a/maintenance/language/StatOutputs.php b/maintenance/language/StatOutputs.php new file mode 100644 index 0000000000..50829cbe91 --- /dev/null +++ b/maintenance/language/StatOutputs.php @@ -0,0 +1,103 @@ + + * @author Ashar Voultoiz + */ + +/** A general output object. Need to be overriden */ +class statsOutput { + function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) { + return @sprintf( '%.' . $accuracy . 'f%%', 100 * $subset / $total ); + } + + # Override the following methods + function heading() { + } + function footer() { + } + function blockstart() { + } + function blockend() { + } + function element( $in, $heading = false ) { + } +} + +/** Outputs WikiText */ +class wikiStatsOutput extends statsOutput { + function heading() { + global $IP; + $version = SpecialVersion::getVersion( $IP ); + echo "'''Statistics are based on:''' " . $version . "\n\n"; + echo "'''Note:''' These statistics can be generated by running php maintenance/language/transstat.php.\n\n"; + echo "For additional information on specific languages (the message names, the actual problems, etc.), run php maintenance/language/checkLanguage.php --lang=foo.\n\n"; + echo '{| class="sortable wikitable" border="2" cellpadding="4" cellspacing="0" style="background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse; clear:both;" width="100%"'."\n"; + } + function footer() { + echo "|}\n"; + } + function blockstart() { + echo "|-\n"; + } + function blockend() { + echo ''; + } + function element( $in, $heading = false ) { + echo ($heading ? '!' : '|') . " $in\n"; + } + function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) { + $v = @round(255 * $subset / $total); + if ( $revert ) { + $v = 255 - $v; + } + if ( $v < 128 ) { + # Red to Yellow + $red = 'FF'; + $green = sprintf( '%02X', 2 * $v ); + } else { + # Yellow to Green + $red = sprintf('%02X', 2 * ( 255 - $v ) ); + $green = 'FF'; + } + $blue = '00'; + $color = $red . $green . $blue; + + $percent = statsOutput::formatPercent( $subset, $total, $revert, $accuracy ); + return 'bgcolor="#'. $color .'" | '. $percent; + } +} + +/** Outputs WikiText and appends category and text only used for Meta-Wiki */ +class metawikiStatsOutput extends wikiStatsOutput { + function heading() { + echo "See [[MediaWiki localisation]] to learn how you can help translating MediaWiki.\n\n"; + parent::heading(); + } + function footer() { + parent::footer(); + echo "\n[[Category:Localisation|Statistics]]\n"; + } +} + +/** Output text. To be used on a terminal for example. */ +class textStatsOutput extends statsOutput { + function element( $in, $heading = false ) { + echo $in."\t"; + } + function blockend() { + echo "\n"; + } +} + +/** csv output. Some people love excel */ +class csvStatsOutput extends statsOutput { + function element( $in, $heading = false ) { + echo $in . ";"; + } + function blockend() { + echo "\n"; + } +} diff --git a/maintenance/language/transstat.php b/maintenance/language/transstat.php index 6a1423a89f..410bd695e4 100644 --- a/maintenance/language/transstat.php +++ b/maintenance/language/transstat.php @@ -10,9 +10,12 @@ * Output is posted from time to time on: * http://meta.wikimedia.org/wiki/Localization_statistics */ +$optionsWithArgs = array( 'output' ); require_once( dirname(__FILE__).'/../commandLine.inc' ); require_once( 'languages.inc' ); +require_once( dirname(__FILE__).'/StatOutputs.php' ); + if ( isset( $options['help'] ) ) { showUsage(); @@ -39,100 +42,7 @@ END; exit(); } -/** A general output object. Need to be overriden */ -class statsOutput { - function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) { - return @sprintf( '%.' . $accuracy . 'f%%', 100 * $subset / $total ); - } - - # Override the following methods - function heading() { - } - function footer() { - } - function blockstart() { - } - function blockend() { - } - function element( $in, $heading = false ) { - } -} - -/** Outputs WikiText */ -class wikiStatsOutput extends statsOutput { - function heading() { - global $IP; - $version = SpecialVersion::getVersion( $IP ); - echo "'''Statistics are based on:''' " . $version . "\n\n"; - echo "'''Note:''' These statistics can be generated by running php maintenance/language/transstat.php.\n\n"; - echo "For additional information on specific languages (the message names, the actual problems, etc.), run php maintenance/language/checkLanguage.php --lang=foo.\n\n"; - echo '{| class="sortable wikitable" border="2" cellpadding="4" cellspacing="0" style="background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse; clear:both;" width="100%"'."\n"; - } - function footer() { - echo "|}\n"; - } - function blockstart() { - echo "|-\n"; - } - function blockend() { - echo ''; - } - function element( $in, $heading = false ) { - echo ($heading ? '!' : '|') . " $in\n"; - } - function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) { - $v = @round(255 * $subset / $total); - if ( $revert ) { - $v = 255 - $v; - } - if ( $v < 128 ) { - # Red to Yellow - $red = 'FF'; - $green = sprintf( '%02X', 2 * $v ); - } else { - # Yellow to Green - $red = sprintf('%02X', 2 * ( 255 - $v ) ); - $green = 'FF'; - } - $blue = '00'; - $color = $red . $green . $blue; - - $percent = statsOutput::formatPercent( $subset, $total, $revert, $accuracy ); - return 'bgcolor="#'. $color .'" | '. $percent; - } -} - -/** Outputs WikiText and appends category and text only used for Meta-Wiki */ -class metawikiStatsOutput extends wikiStatsOutput { - function heading() { - echo "See [[MediaWiki localisation]] to learn how you can help translating MediaWiki.\n\n"; - parent::heading(); - } - function footer() { - parent::footer(); - echo "\n[[Category:Localisation|Statistics]]\n"; - } -} - -/** Output text. To be used on a terminal for example. */ -class textStatsOutput extends statsOutput { - function element( $in, $heading = false ) { - echo $in."\t"; - } - function blockend() { - echo "\n"; - } -} -/** csv output. Some people love excel */ -class csvStatsOutput extends statsOutput { - function element( $in, $heading = false ) { - echo $in . ";"; - } - function blockend() { - echo "\n"; - } -} # Select an output engine switch ( $options['output'] ) { -- 2.20.1