function Parser::parseJSXFragment
Parses a jsx fragment
Return value
\Peast\Syntax\Node\JSX\JSXFragment|null
2 calls to Parser::parseJSXFragment()
- Parser::parseJSXAttribute in vendor/
mck89/ peast/ lib/ Peast/ Syntax/ JSX/ Parser.php - Parses a jsx spread attribute
- Parser::parseJSXChild in vendor/
mck89/ peast/ lib/ Peast/ Syntax/ JSX/ Parser.php - Parses a jsx child
File
-
vendor/
mck89/ peast/ lib/ Peast/ Syntax/ JSX/ Parser.php, line 39
Class
- Parser
- JSX parser trait
Namespace
Peast\Syntax\JSXCode
protected function parseJSXFragment() {
$startOpeningToken = $this->scanner
->getToken();
if (!$startOpeningToken || $startOpeningToken->value !== "<") {
return null;
}
$endOpeningToken = $this->scanner
->getNextToken();
if (!$endOpeningToken || $endOpeningToken->value !== ">") {
return null;
}
$this->scanner
->consumeToken();
$this->scanner
->consumeToken();
$children = $this->parseJSXChildren();
if (!($startClosingToken = $this->scanner
->consume("<")) || !$this->scanner
->consume("/") || !$this->scanner
->reconsumeCurrentTokenInJSXMode() || $endOpeningToken->value !== ">") {
$this->error();
}
$this->scanner
->consumeToken();
//Opening tag
$openingNode = $this->createJSXNode("JSXOpeningFragment", $startOpeningToken);
$this->completeNode($openingNode, $endOpeningToken->location->end);
//Closing tag
$closingNode = $this->createJSXNode("JSXClosingFragment", $startClosingToken);
$this->completeNode($closingNode);
//Fragment
$node = $this->createJSXNode("JSXFragment", $startOpeningToken);
$node->setOpeningFragment($openingNode);
$node->setClosingFragment($closingNode);
if ($children) {
$node->setChildren($children);
}
return $this->completeNode($node);
}