*/ final class CodeBlockParser extends AbstractBlockParser { public function parse(MarkupLanguageParser $parser, NodeWalker $walker, CommonMarkNode $current): CodeNode { assert($current instanceof IndentedCode || $current instanceof FencedCode); $walker->next(); $codeNode = new CodeNode(explode("\n", $current->getLiteral())); if ($current instanceof FencedCode) { $infoWords = $current->getInfoWords(); if (count($infoWords) !== 0 && $infoWords[0] !== '') { $codeNode->setLanguage($infoWords[0]); } } return $codeNode; } public function supports(NodeWalkerEvent $event): bool { return $event->getNode() instanceof IndentedCode || $event->getNode() instanceof FencedCode; } }