Something went wrong. Try again.
@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
Something went wrong. Try again.
2.3 kB · 81 lines
PHP
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182<?php
/** * @phutil-external-symbol class PhpParser\Error */final class PhorgePHPASTViewRunController extends PhabricatorXHPASTViewController {
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer();
if ($request->isFormPost()) { $source = $request->getStr('source');
$storage_tree = id(new PhorgePHPASTParseTree()) ->setInput($source) ->setAuthorPHID($viewer->getPHID());
$parser = PhutilPHPParserLibrary::getParser(); $exposes_token_stream = version_compare( PhutilPHPParserLibrary::getVersion(), PhutilPHPParserLibrary::EXPECTED_VERSION, '>=');
try { $storage_tree->setTree($parser->parse($source)); if ($exposes_token_stream) { $storage_tree->setTokenStream($parser->getTokens()); } } catch (PhpParser\Error $ex) { $storage_tree->setError($ex->getMessageWithColumnInfo($source)); }
$storage_tree->save();
return id(new AphrontRedirectResponse()) ->setURI('/phpast/view/'.$storage_tree->getID().'/'); }
$form = id(new AphrontFormView()) ->setViewer($viewer) ->appendChild( id(new AphrontFormTextAreaControl()) ->setLabel(pht('Source')) ->setName('source') ->setValue("<?php\n\n") ->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_TALL)) ->appendChild( id(new AphrontFormSubmitControl()) ->setValue(pht('Parse')));
$form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Generate PHP AST')) ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) ->setForm($form);
$title = pht('PHPAST View'); $header = id(new PHUIHeaderView()) ->setHeader($title) ->setHeaderIcon('fa-ambulance');
$view = id(new PHUITwoColumnView()) ->setHeader($header) ->setFooter(array( $form_box, ));
return $this->newPage() ->setTitle($title) ->setCrumbs( id(new PHUICrumbsView()) ->addAction( id(new PHUIListItemView()) ->setName(pht('Use XHPAST')) ->setHref('/xhpast/') ->setIcon('fa-random'))) ->appendChild($view);
}
}