/**
  * Returns the wikitext description for a single parser hook.
  *
  * @since 0.4.3
  *
  * @param string $hookName
  * @param array $parameters
  * @param ParserHook $parserHook
  *
  * @return string
  */
 protected function getParserHookDescription($hookName, array $parameters, ParserHook $parserHook)
 {
     global $wgLang;
     $descriptionData = $parserHook->getDescriptionData(ParserHook::TYPE_TAG);
     // TODO
     $this->sortParameters($descriptionData['parameters'], $descriptionData['defaults']);
     $description = ($parameters['pre'] ? '== ' : '<h2>') . $hookName . ($parameters['pre'] ? ' ==' : '</h2>');
     if ($parameters['pre']) {
         $description .= "\n<!-- " . $this->msg('validator-describe-autogen') . ' -->';
     }
     $description .= "\n\n";
     if ($descriptionData['message'] !== false) {
         $description .= $this->msg('validator-describe-descriptionmsg', $this->msg($descriptionData['message']));
         $description .= "\n\n";
     } elseif ($descriptionData['description'] !== false) {
         $description .= wfMsgExt('validator-describe-descriptionmsg', $descriptionData['description']);
         $description .= "\n\n";
     }
     if (count($descriptionData['names']) > 1) {
         $aliases = array();
         foreach ($descriptionData['names'] as $name) {
             if ($name != $hookName) {
                 $aliases[] = $name;
             }
         }
         $description .= $this->msg('validator-describe-aliases', $wgLang->listToText($aliases), count($aliases));
         $description .= "\n\n";
     }
     if ($parserHook->forTagExtensions || $parserHook->forParserFunctions) {
         if ($parserHook->forTagExtensions && $parserHook->forParserFunctions) {
             $description .= $this->msg('validator-describe-bothhooks');
         } elseif ($parserHook->forTagExtensions) {
             $description .= $this->msg('validator-describe-tagextension');
         } else {
             // if $parserHook->forParserFunctions
             $description .= $this->msg('validator-describe-parserfunction');
         }
         $description .= "\n\n";
     }
     $description .= $this->getParameterTable($descriptionData['parameters'], $descriptionData['defaults'], $parameters['pre']);
     if ($parserHook->forTagExtensions || $parserHook->forParserFunctions) {
         $description .= $this->getSyntaxExamples($hookName, $descriptionData['parameters'], $parserHook, $descriptionData['defaults'], $parameters['pre']);
     }
     if ($parameters['pre']) {
         $description = '<pre>' . $description . '</pre>';
     }
     return $description;
 }