@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 39 lines 1.1 kB view raw
1<?php 2 3final class PhabricatorXHPASTViewStreamController 4 extends PhabricatorXHPASTViewPanelController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $storage = $this->getStorageTree(); 8 $input = $storage->getInput(); 9 $err = $storage->getReturnCode(); 10 $stdout = $storage->getStdout(); 11 $stderr = $storage->getStderr(); 12 13 try { 14 $tree = XHPASTTree::newFromDataAndResolvedExecFuture( 15 $input, 16 array($err, $stdout, $stderr)); 17 } catch (XHPASTSyntaxErrorException $ex) { 18 return $this->buildXHPASTViewPanelResponse($ex->getMessage()); 19 } 20 21 $tokens = array(); 22 foreach ($tree->getRawTokenStream() as $id => $token) { 23 $seq = $id; 24 $name = $token->getTypeName(); 25 $title = pht('Token %d: %s', $seq, $name); 26 27 $tokens[] = phutil_tag( 28 'span', 29 array( 30 'title' => $title, 31 'class' => 'token', 32 ), 33 $token->getValue()); 34 } 35 36 return $this->buildXHPASTViewPanelResponse( 37 phutil_implode_html('', $tokens)); 38 } 39}