From 56d3b87bd0a1d1aee3001c1c13fda4d005cb3db7 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Mon, 3 Jul 2006 03:29:57 +0000 Subject: [PATCH] Better extension function synonym cache --- includes/Parser.php | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/includes/Parser.php b/includes/Parser.php index 9a6278af44..480a6555e7 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -128,7 +128,6 @@ class Parser function Parser() { $this->mTagHooks = array(); $this->mFunctionHooks = array(); - $this->mFunctionSynonymsValid = true; $this->mFunctionSynonyms = array(); $this->clearState(); $this->setHook( 'pre', array( $this, 'renderPreTag' ) ); @@ -178,10 +177,6 @@ class Parser $this->mShowToc = true; $this->mForceTocPosition = false; - # This doesn't actually clear anything, but it seemed like a nice place to put it - # Fill the function cache, if it needs filling - $this->refreshFunctionCache(); - wfRunHooks( 'ParserClearState', array( &$this ) ); } @@ -2859,8 +2854,6 @@ class Parser $function = strtolower( substr( $part1, 1, $colonPos - 1 ) ); if ( isset( $this->mFunctionSynonyms[$function] ) ) { $function = $this->mFunctionSynonyms[$function]; - } - if ( isset( $this->mFunctionHooks[$function] ) ) { $funcArgs = array_map( 'trim', $args ); $funcArgs = array_merge( array( &$this, trim( substr( $part1, $colonPos + 1 ) ) ), $funcArgs ); $result = call_user_func_array( $this->mFunctionHooks[$function], $funcArgs ); @@ -3909,28 +3902,14 @@ class Parser } $oldVal = @$this->mFunctionHooks[$id]; $this->mFunctionHooks[$id] = $callback; - # Invalidate function synonym cache - $this->mFunctionSynonymsValid = false; - return $oldVal; - } - - /** - * Make sure the function synonym cache is up to date - */ - function refreshFunctionCache() { - if ( !$this->mFunctionSynonymsValid ) { - $this->mFunctionSynonyms = array(); - foreach( $this->mFunctionHooks as $key => $value ) { - if ( is_int( $key ) ) { - $mw = MagicWord::get( $key ); - $synonyms = $mw->getSynonyms(); - foreach( $synonyms as $synonym ) { - $this->mFunctionSynonyms[strtolower($synonym)] = $key; - } - } - } - $this->mFunctionSynonymsValid = true; + # Add to function cache + if ( is_int( $id ) ) { + $mw = MagicWord::get( $id ); + $mw->addToArray( $this->mFunctionSynonyms, $id ); + } else { + $this->mFunctionSynonyms[$id] = $id; } + return $oldVal; } /** -- 2.20.1