'html/xml', 'xml' => 'html/xml', 'js' => 'javascript']; /** * @param AbstractBlock $block * @param HtmlRendererInterface $htmlRenderer * @param bool $inTightList * * @return HtmlElement|string */ public function render(AbstractBlock $block, HtmlRendererInterface $htmlRenderer, $inTightList = false) { if (!($block instanceof FencedCode)) { throw new \InvalidArgumentException('Incompatible block type: ' . get_class($block)); } $content = []; if ($language = $this->getLanguage($block->getInfoWords(), $htmlRenderer)) { $content[] = new HtmlElement('ac:parameter', ['ac:name' => 'language'], $language); } $content[] = new HtmlElement('ac:plain-text-body', [], 'getStringContent() . ']]>'); return new HtmlElement( 'ac:structured-macro', ['ac:name' => 'code'], $content ); } public function getLanguage($infoWords, HtmlRendererInterface $htmlRenderer) { if (count($infoWords) === 0 || strlen($infoWords[0]) === 0) { return false; } $language = $htmlRenderer->escape($infoWords[0], true); if (array_key_exists($language, $this->known_conversions)) { $language = $this->known_conversions[$language]; } if (in_array($language, $this->supported_languages)) { return $language; } return false; } }