mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-21 04:01:30 +01:00
15550b5582
Summary: Currently we do not show node IDs in this view, but do show token IDs in the stream view. Given that this view facilitates testing various XHPAST functionality, it would be useful to add this information. Test Plan: Saw node IDs in XHPAST. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D14697
54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
final class PhabricatorXHPASTViewTreeController
|
|
extends PhabricatorXHPASTViewPanelController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
public function handleRequest(AphrontRequest $request) {
|
|
$storage = $this->getStorageTree();
|
|
$input = $storage->getInput();
|
|
$err = $storage->getReturnCode();
|
|
$stdout = $storage->getStdout();
|
|
$stderr = $storage->getStderr();
|
|
|
|
try {
|
|
$tree = XHPASTTree::newFromDataAndResolvedExecFuture(
|
|
$input,
|
|
array($err, $stdout, $stderr));
|
|
} catch (XHPASTSyntaxErrorException $ex) {
|
|
return $this->buildXHPASTViewPanelResponse($ex->getMessage());
|
|
}
|
|
|
|
$tree = phutil_tag('ul', array(), $this->buildTree($tree->getRootNode()));
|
|
return $this->buildXHPASTViewPanelResponse($tree);
|
|
}
|
|
|
|
protected function buildTree($root) {
|
|
try {
|
|
$name = $root->getTypeName();
|
|
$title = pht('Node %d: %s', $root->getID(), $name);
|
|
} catch (Exception $ex) {
|
|
$name = '???';
|
|
$title = '???';
|
|
}
|
|
|
|
$tree = array();
|
|
$tree[] = phutil_tag(
|
|
'li',
|
|
array(),
|
|
phutil_tag(
|
|
'span',
|
|
array(
|
|
'title' => $title,
|
|
),
|
|
$name));
|
|
foreach ($root->getChildren() as $child) {
|
|
$tree[] = phutil_tag('ul', array(), $this->buildTree($child));
|
|
}
|
|
return phutil_implode_html("\n", $tree);
|
|
}
|
|
|
|
}
|