reset(); } /** * Init/reset or forgot about the current delayed test. * Call to this will erase any hooks function that were pending. */ public function reset() { $this->hooks = []; $this->fnHooks = []; $this->transparentHooks = []; } /** * Called whenever we actually want to run the hook. * Should be the case if we found the parserTest is not disabled * @param ParserTest|NewParserTest $parserTest * @return bool * @throws MWException */ public function unleash( &$parserTest ) { if ( !( $parserTest instanceof ParserTest || $parserTest instanceof NewParserTest ) ) { throw new MWException( __METHOD__ . " must be passed an instance of ParserTest or " . "NewParserTest classes\n" ); } # Trigger delayed hooks. Any failure will make us abort foreach ( $this->hooks as $hook ) { $ret = $parserTest->requireHook( $hook ); if ( !$ret ) { return false; } } # Trigger delayed function hooks. Any failure will make us abort foreach ( $this->fnHooks as $fnHook ) { $ret = $parserTest->requireFunctionHook( $fnHook ); if ( !$ret ) { return false; } } # Trigger delayed transparent hooks. Any failure will make us abort foreach ( $this->transparentHooks as $hook ) { $ret = $parserTest->requireTransparentHook( $hook ); if ( !$ret ) { return false; } } # Delayed execution was successful. return true; } /** * Similar to ParserTest object but does not run anything * Use unleash() to really execute the hook * @param string $hook */ public function requireHook( $hook ) { $this->hooks[] = $hook; } /** * Similar to ParserTest object but does not run anything * Use unleash() to really execute the hook function * @param string $fnHook */ public function requireFunctionHook( $fnHook ) { $this->fnHooks[] = $fnHook; } /** * Similar to ParserTest object but does not run anything * Use unleash() to really execute the hook function * @param string $hook */ public function requireTransparentHook( $hook ) { $this->transparentHooks[] = $hook; } }