$parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
$parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
$parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
+ $parser->setFunctionHook( 'groupconvert', array( __CLASS__, 'groupconvert' ), SFH_NO_HASH );
if ( $wgAllowDisplayTitle ) {
$parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
$date = $df->reformat( $pref, $date, array('match-whole') );
return $date;
}
-
+
static function ns( $parser, $part1 = '' ) {
global $wgContLang;
if ( intval( $part1 ) || $part1 == "0" ) {
);
return $parser->extensionSubstitution( $params, $frame );
}
+
+ /**
+ * magic word call for a group convert from LanguageConverter.
+ */
+ public static function groupconvert( $parser, $group ) {
+ global $wgContLang;
+ return $wgContLang->groupConvert( $group );
+ }
}
function convertCategoryKey( $key ) {return $key; }
function convertLinkToAllVariants($text){ return array( $this->mLang->getCode() => $text); }
function armourMath($text){ return $text; }
+ function groupConvert($group) {return '';}
}
/**
function markNoConversion( $text, $noParse=false ) {
return $this->mConverter->markNoConversion( $text, $noParse );
}
+
+ /**
+ * Callback function for magicword 'groupconvert'
+ *
+ * @param string $group: the group name called for
+ * @return blank string
+ */
+ function groupConvert( $group ) {
+ return $this->mConverter->groupConvert( $group );
+ }
/**
* A regular expression to match legal word-trailing characters
var $mFlags;
var $mDescCodeSep = ':',$mDescVarSep = ';';
var $mUcfirst = false;
+ var $mGroups = array();
const CACHE_VERSION_KEY = 'VERSION 6';
global $wgDisableLangConversion;
/* don't do anything if this is the conversion table */
if ( $parser->getTitle()->getNamespace() == NS_MEDIAWIKI &&
- strpos($parser->mTitle->getText(), "Conversiontable") !== false )
+ strpos($parser->mTitle->getText(), 'onversiontable') !== false )
{
return $text;
}
* load conversion tables either from the cache or the disk
* @private
*/
- function loadTables($fromcache=true) {
+ function loadTables( $fromcache = true ) {
global $wgMemc;
if( $this->mTablesLoaded )
return;
// we will first load the default tables
// then update them using things in MediaWiki:Zhconversiontable/*
$this->loadDefaultTables();
- foreach($this->mVariants as $var) {
- $cached = $this->parseCachedTable($var);
- $this->mTables[$var]->mergeArray($cached);
+ foreach( $this->mVariants as $var ) {
+ $cached = $this->parseCachedTable( $var );
+ // load group convert table, e.g. [[MediaWiki:Groupconversiontable-StarTrek]].
+ foreach( $this->mGroups as $group ) {
+ $cachedgroup = $this->parseCachedTable( $var, '', true, "Groupconversiontable-$group" );
+ $cached = array_merge( $cached, $cachedgroup );
+ }
+ $this->mTables[$var]->mergeArray( $cached );
}
$this->postLoadTables();
* and will be parsed recursively if $recursive=true
*
*/
- function parseCachedTable($code, $subpage='', $recursive=true) {
+ function parseCachedTable($code, $subpage='', $recursive=true, $table='Conversiontable') {
global $wgMessageCache;
static $parsed = array();
if(!is_object($wgMessageCache))
return array();
- $key = 'Conversiontable/'.$code;
+ $key = "$table/".$code;
if($subpage)
$key .= '/' . $subpage;
if(array_key_exists($key, $parsed))
return array();
-
+
if ( strpos( $code, '/' ) === false ) {
- $txt = $wgMessageCache->get( 'Conversiontable', true, $code );
+ $txt = $wgMessageCache->get( $table, true, $code );
} else {
- $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Conversiontable/$code" );
+ $title = Title::makeTitleSafe( NS_MEDIAWIKI, "$table/$code" );
if ( $title && $title->exists() ) {
$article = new Article( $title );
$txt = $article->getContents();
$txt = '';
}
}
-
// get all subpage links of the form
// [[MediaWiki:conversiontable/zh-xx/...|...]]
- $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ':Conversiontable';
+ $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ":$table";
$subs = explode('[[', $txt);
$sublinks = array();
foreach( $subs as $sub ) {
}
}
-
// parse the mappings in this page
$blocks = explode($this->mMarkup['begin'], $txt);
array_shift($blocks);
$ret = $this->mMarkup['begin'] . 'R|' . $text . $this->mMarkup['end'];
return $ret;
}
+
+ /**
+ * Callback function for magicword 'groupconvert'
+ *
+ * @param string $group: the group name called for
+ * @return blank string
+ */
+ function groupConvert( $group ) {
+ $this->mGroups[] = $group;
+ return '';
+ }
}
/**