*/
var $depth;
+ /**
+ * @var array
+ */
+ protected $childExpansionCache;
+
/**
* Construct a new preprocessor frame.
* @param Preprocessor $preprocessor The parent preprocessor
$this->titleCache = array( $this->title ? $this->title->getPrefixedDBkey() : false );
$this->loopCheckHash = array();
$this->depth = 0;
+ $this->childExpansionCache = array();
}
/**
return new PPTemplateFrame_Hash( $this->preprocessor, $this, $numberedArgs, $namedArgs, $title );
}
+ /**
+ * @throws MWException
+ * @param string|int $key
+ * @param string|PPNode_Hash|DOMDocument $root
+ * @param int $flags
+ * @return string
+ */
+ function cachedExpand( $key, $root, $flags = 0 ) {
+ // we don't have a parent, so we don't have a cache
+ return $this->expand( $root, $flags );
+ }
+
/**
* @throws MWException
* @param string|PPNode$root
return $s;
}
+ /**
+ * @throws MWException
+ * @param string|int $key
+ * @param string|PPNode_Hash|DOMDocument $root
+ * @param int $flags
+ * @return string
+ */
+ function cachedExpand( $key, $root, $flags = 0 ) {
+ if ( !isset( $this->parent->childExpansionCache[$key] ) ) {
+ $this->parent->childExpansionCache[$key] = $this->expand( $root, $flags );
+ }
+ return $this->parent->childExpansionCache[$key];
+ }
+
/**
* Returns true if there are no arguments in this frame
*