Differential D20977 Diff 49988 src/infrastructure/markup/syntax/highlighter/pygments/PhutilDefaultSyntaxHighlighterEnginePygmentsFuture.php
Changeset View
Changeset View
Standalone View
Standalone View
src/infrastructure/markup/syntax/highlighter/pygments/PhutilDefaultSyntaxHighlighterEnginePygmentsFuture.php
- This file was added.
<?php | |||||
final class PhutilDefaultSyntaxHighlighterEnginePygmentsFuture | |||||
extends FutureProxy { | |||||
private $source; | |||||
private $scrub; | |||||
public function __construct(Future $proxied, $source, $scrub = false) { | |||||
parent::__construct($proxied); | |||||
$this->source = $source; | |||||
$this->scrub = $scrub; | |||||
} | |||||
protected function didReceiveResult($result) { | |||||
list($err, $stdout, $stderr) = $result; | |||||
if (!$err && strlen($stdout)) { | |||||
// Strip off fluff Pygments adds. | |||||
$stdout = preg_replace( | |||||
'@^<div class="highlight"><pre>(.*)</pre></div>\s*$@s', | |||||
'\1', | |||||
$stdout); | |||||
if ($this->scrub) { | |||||
$stdout = preg_replace('/^.*\n/', '', $stdout); | |||||
} | |||||
return phutil_safe_html($stdout); | |||||
} | |||||
throw new PhutilSyntaxHighlighterException($stderr, $err); | |||||
} | |||||
} |