public function getHighlightFuture()

in src/markup/syntax/engine/PhutilDefaultSyntaxHighlighterEngine.php [42:113]


  public function getHighlightFuture($language, $source) {
    if ($language === null) {
      $language = PhutilLanguageGuesser::guessLanguage($source);
    }

    $have_pygments = !empty($this->config['pygments.enabled']);

    if ($language == 'php' && PhutilXHPASTBinary::isAvailable()) {
      return id(new PhutilXHPASTSyntaxHighlighter())
        ->getHighlightFuture($source);
    }

    if ($language == 'console') {
      return id(new PhutilConsoleSyntaxHighlighter())
        ->getHighlightFuture($source);
    }

    if ($language == 'diviner' || $language == 'remarkup') {
      return id(new PhutilDivinerSyntaxHighlighter())
        ->getHighlightFuture($source);
    }

    if ($language == 'rainbow') {
      return id(new PhutilRainbowSyntaxHighlighter())
        ->getHighlightFuture($source);
    }

    if ($language == 'php') {
      return id(new PhutilLexerSyntaxHighlighter())
        ->setConfig('lexer', new PhutilPHPFragmentLexer())
        ->setConfig('language', 'php')
        ->getHighlightFuture($source);
    }

    if ($language == 'py' || $language == 'python') {
      return id(new PhutilLexerSyntaxHighlighter())
        ->setConfig('lexer', new PhutilPythonFragmentLexer())
        ->setConfig('language', 'py')
        ->getHighlightFuture($source);
    }

    if ($language == 'java') {
      return id(new PhutilLexerSyntaxHighlighter())
        ->setConfig('lexer', new PhutilJavaFragmentLexer())
        ->setConfig('language', 'java')
        ->getHighlightFuture($source);
    }

    if ($language == 'json') {
      return id(new PhutilLexerSyntaxHighlighter())
        ->setConfig('lexer', new PhutilJSONFragmentLexer())
        ->getHighlightFuture($source);
    }

    if ($language == 'invisible') {
      return id(new PhutilInvisibleSyntaxHighlighter())
        ->getHighlightFuture($source);
    }

    // Don't invoke Pygments for plain text, since it's expensive and has
    // no effect.
    if ($language !== 'text' && $language !== 'txt') {
      if ($have_pygments) {
        return id(new PhutilPygmentsSyntaxHighlighter())
          ->setConfig('language', $language)
          ->getHighlightFuture($source);
      }
    }

    return id(new PhutilDefaultSyntaxHighlighter())
      ->getHighlightFuture($source);
  }