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);
}