/** * Pattern handler for PHP & JavaScript block syntaxes * * @param Texy\BlockParser * @param array regexp matches * @param string pattern name * @return Texy\HtmlElement|string|FALSE */ function codeBlockHandler(Texy\BlockParser $parser, array $matches, $name) { list($content) = $matches; $lang = $name === 'phpBlockSyntax' ? 'PHP' : 'HTML'; $fshl = new fshlParser('HTML_UTF8', P_TAB_INDENT); $texy = $parser->getTexy(); $content = $fshl->highlightString($lang, $content); $content = $texy->protect($content, $texy::CONTENT_BLOCK); $elPre = new Texy\HtmlElement('pre'); $elPre->attrs['class'] = strtolower($lang); $elCode = $elPre->create('code', $content); return $elPre; }