PK&Zf*ChildNodeRendererInterface.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Node\Node; /** * Renders multiple nodes by delegating to the individual node renderers and adding spacing where needed */ interface ChildNodeRendererInterface { /** * @param Node[] $nodes */ public function renderNodes(iterable $nodes): string; public function getBlockSeparator(): string; public function getInnerSeparator(): string; } PK&Z5OV5 5 HtmlRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Environment\EnvironmentInterface; use League\CommonMark\Event\DocumentPreRenderEvent; use League\CommonMark\Event\DocumentRenderedEvent; use League\CommonMark\Node\Block\AbstractBlock; use League\CommonMark\Node\Block\Document; use League\CommonMark\Node\Node; use League\CommonMark\Output\RenderedContent; use League\CommonMark\Output\RenderedContentInterface; final class HtmlRenderer implements DocumentRendererInterface, ChildNodeRendererInterface { /** @psalm-readonly */ private EnvironmentInterface $environment; public function __construct(EnvironmentInterface $environment) { $this->environment = $environment; } public function renderDocument(Document $document): RenderedContentInterface { $this->environment->dispatch(new DocumentPreRenderEvent($document, 'html')); $output = new RenderedContent($document, (string) $this->renderNode($document)); $event = new DocumentRenderedEvent($output); $this->environment->dispatch($event); return $event->getOutput(); } /** * {@inheritDoc} */ public function renderNodes(iterable $nodes): string { $output = ''; $isFirstItem = true; foreach ($nodes as $node) { if (! $isFirstItem && $node instanceof AbstractBlock) { $output .= $this->getBlockSeparator(); } $output .= $this->renderNode($node); $isFirstItem = false; } return $output; } /** * @return \Stringable|string * * @throws NoMatchingRendererException */ private function renderNode(Node $node) { $renderers = $this->environment->getRenderersForClass(\get_class($node)); foreach ($renderers as $renderer) { \assert($renderer instanceof NodeRendererInterface); if (($result = $renderer->render($node, $this)) !== null) { return $result; } } throw new NoMatchingRendererException('Unable to find corresponding renderer for node type ' . \get_class($node)); } public function getBlockSeparator(): string { return $this->environment->getConfiguration()->get('renderer/block_separator'); } public function getInnerSeparator(): string { return $this->environment->getConfiguration()->get('renderer/inner_separator'); } } PK&ZMarkdownRendererInterface.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Node\Block\Document; use League\CommonMark\Output\RenderedContentInterface; /** * Renders a parsed Document AST * * @deprecated since 2.3; use {@link DocumentRendererInterface} instead */ interface MarkdownRendererInterface { /** * Render the given Document node (and all of its children) */ public function renderDocument(Document $document): RenderedContentInterface; } PK&Zv|Block/DocumentRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer\Block; use League\CommonMark\Node\Block\Document; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Xml\XmlNodeRendererInterface; final class DocumentRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Document $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { Document::assertInstanceOf($node); $wholeDoc = $childRenderer->renderNodes($node->children()); return $wholeDoc === '' ? '' : $wholeDoc . "\n"; } public function getXmlTagName(Node $node): string { return 'document'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return [ 'xmlns' => 'http://commonmark.org/xml/1.0', ]; } } PK&ZBlock/ParagraphRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer\Block; use League\CommonMark\Node\Block\Paragraph; use League\CommonMark\Node\Block\TightBlockInterface; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class ParagraphRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Paragraph $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer) { Paragraph::assertInstanceOf($node); if ($this->inTightList($node)) { return $childRenderer->renderNodes($node->children()); } $attrs = $node->data->get('attributes'); return new HtmlElement('p', $attrs, $childRenderer->renderNodes($node->children())); } public function getXmlTagName(Node $node): string { return 'paragraph'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } private function inTightList(Paragraph $node): bool { // Only check up to two (2) levels above this for tightness $i = 2; while (($node = $node->parent()) && $i--) { if ($node instanceof TightBlockInterface) { return $node->isTight(); } } return false; } } PK&Z쓲HtmlDecorator.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Node\Node; use League\CommonMark\Util\HtmlElement; final class HtmlDecorator implements NodeRendererInterface { private NodeRendererInterface $inner; private string $tag; /** @var array */ private array $attributes; private bool $selfClosing; /** * @param array $attributes */ public function __construct(NodeRendererInterface $inner, string $tag, array $attributes = [], bool $selfClosing = false) { $this->inner = $inner; $this->tag = $tag; $this->attributes = $attributes; $this->selfClosing = $selfClosing; } /** * {@inheritDoc} */ public function render(Node $node, ChildNodeRendererInterface $childRenderer) { return new HtmlElement($this->tag, $this->attributes, $this->inner->render($node, $childRenderer), $this->selfClosing); } } PK&Z@ɥNoMatchingRendererException.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Exception\LogicException; class NoMatchingRendererException extends LogicException { } PK&Z:QdDocumentRendererInterface.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Node\Block\Document; use League\CommonMark\Output\RenderedContentInterface; /** * Renders a parsed Document AST */ interface DocumentRendererInterface extends MarkdownRendererInterface { /** * Render the given Document node (and all of its children) */ public function renderDocument(Document $document): RenderedContentInterface; } PK&ZwInline/NewlineRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer\Inline; use League\CommonMark\Node\Inline\Newline; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class NewlineRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { /** @psalm-readonly-allow-private-mutation */ private ConfigurationInterface $config; public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } /** * @param Newline $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { Newline::assertInstanceOf($node); if ($node->getType() === Newline::HARDBREAK) { return "
\n"; } return $this->config->get('renderer/soft_break'); } /** * @param Newline $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlTagName(Node $node): string { Newline::assertInstanceOf($node); return $node->getType() === Newline::SOFTBREAK ? 'softbreak' : 'linebreak'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PK&Z=;;Inline/TextRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer\Inline; use League\CommonMark\Node\Inline\Text; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\Xml; use League\CommonMark\Xml\XmlNodeRendererInterface; final class TextRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Text $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { Text::assertInstanceOf($node); return Xml::escape($node->getLiteral()); } public function getXmlTagName(Node $node): string { return 'text'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PK&Z{5NodeRendererInterface.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Renderer; use League\CommonMark\Exception\InvalidArgumentException; use League\CommonMark\Node\Node; interface NodeRendererInterface { /** * @return \Stringable|string|null * * @throws InvalidArgumentException if the wrong type of Node is provided */ public function render(Node $node, ChildNodeRendererInterface $childRenderer); } PKZ'ݣ inline.phpnuW+A'; /** * Suffix for inserted text. * * @var string */ var $_ins_suffix = ''; /** * Prefix for deleted text. * * @var string */ var $_del_prefix = ''; /** * Suffix for deleted text. * * @var string */ var $_del_suffix = ''; /** * Header for each change block. * * @var string */ var $_block_header = ''; /** * Whether to split down to character-level. * * @var boolean */ var $_split_characters = false; /** * What are we currently splitting on? Used to recurse to show word-level * or character-level changes. * * @var string */ var $_split_level = 'lines'; function _blockHeader($xbeg, $xlen, $ybeg, $ylen) { return $this->_block_header; } function _startBlock($header) { return $header; } function _lines($lines, $prefix = ' ', $encode = true) { if ($encode) { array_walk($lines, array(&$this, '_encode')); } if ($this->_split_level == 'lines') { return implode("\n", $lines) . "\n"; } else { return implode('', $lines); } } function _added($lines) { array_walk($lines, array(&$this, '_encode')); $lines[0] = $this->_ins_prefix . $lines[0]; $lines[count($lines) - 1] .= $this->_ins_suffix; return $this->_lines($lines, ' ', false); } function _deleted($lines, $words = false) { array_walk($lines, array(&$this, '_encode')); $lines[0] = $this->_del_prefix . $lines[0]; $lines[count($lines) - 1] .= $this->_del_suffix; return $this->_lines($lines, ' ', false); } function _changed($orig, $final) { /* If we've already split on characters, just display. */ if ($this->_split_level == 'characters') { return $this->_deleted($orig) . $this->_added($final); } /* If we've already split on words, just display. */ if ($this->_split_level == 'words') { $prefix = ''; while ($orig[0] !== false && $final[0] !== false && substr($orig[0], 0, 1) == ' ' && substr($final[0], 0, 1) == ' ') { $prefix .= substr($orig[0], 0, 1); $orig[0] = substr($orig[0], 1); $final[0] = substr($final[0], 1); } return $prefix . $this->_deleted($orig) . $this->_added($final); } $text1 = implode("\n", $orig); $text2 = implode("\n", $final); /* Non-printing newline marker. */ $nl = "\0"; if ($this->_split_characters) { $diff = new Text_Diff('native', array(preg_split('//', $text1), preg_split('//', $text2))); } else { /* We want to split on word boundaries, but we need to preserve * whitespace as well. Therefore we split on words, but include * all blocks of whitespace in the wordlist. */ $diff = new Text_Diff('native', array($this->_splitOnWords($text1, $nl), $this->_splitOnWords($text2, $nl))); } /* Get the diff in inline format. */ $renderer = new Text_Diff_Renderer_inline (array_merge($this->getParams(), array('split_level' => $this->_split_characters ? 'characters' : 'words'))); /* Run the diff and get the output. */ return str_replace($nl, "\n", $renderer->render($diff)) . "\n"; } function _splitOnWords($string, $newlineEscape = "\n") { // Ignore \0; otherwise the while loop will never finish. $string = str_replace("\0", '', $string); $words = array(); $length = strlen($string); $pos = 0; while ($pos < $length) { // Eat a word with any preceding whitespace. $spaces = strspn(substr($string, $pos), " \n"); $nextpos = strcspn(substr($string, $pos + $spaces), " \n"); $words[] = str_replace("\n", $newlineEscape, substr($string, $pos, $spaces + $nextpos)); $pos += $spaces + $nextpos; } return $words; } function _encode(&$string) { $string = htmlspecialchars($string); } } PKI.Z)v@FootnoteRenderer.phpnuW+A * (c) Rezo Zero / Ambroise Maupate * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace League\CommonMark\Extension\Footnote\Renderer; use League\CommonMark\Extension\Footnote\Node\Footnote; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class FootnoteRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { private ConfigurationInterface $config; /** * @param Footnote $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Footnote::assertInstanceOf($node); $attrs = $node->data->getData('attributes'); $attrs->append('class', $this->config->get('footnote/footnote_class')); $attrs->set('id', $this->config->get('footnote/footnote_id_prefix') . \mb_strtolower($node->getReference()->getLabel(), 'UTF-8')); $attrs->set('role', 'doc-endnote'); return new HtmlElement( 'li', $attrs->export(), $childRenderer->renderNodes($node->children()), true ); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'footnote'; } /** * @param Footnote $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { Footnote::assertInstanceOf($node); return [ 'reference' => $node->getReference()->getLabel(), ]; } } PKI.ZaX X FootnoteBackrefRenderer.phpnuW+A * (c) Rezo Zero / Ambroise Maupate * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace League\CommonMark\Extension\Footnote\Renderer; use League\CommonMark\Extension\Footnote\Node\FootnoteBackref; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class FootnoteBackrefRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { public const DEFAULT_SYMBOL = '↩'; private ConfigurationInterface $config; /** * @param FootnoteBackref $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { FootnoteBackref::assertInstanceOf($node); $attrs = $node->data->getData('attributes'); $attrs->append('class', $this->config->get('footnote/backref_class')); $attrs->set('rev', 'footnote'); $attrs->set('href', \mb_strtolower($node->getReference()->getDestination(), 'UTF-8')); $attrs->set('role', 'doc-backlink'); $symbol = $this->config->get('footnote/backref_symbol'); \assert(\is_string($symbol)); return ' ' . new HtmlElement('a', $attrs->export(), \htmlspecialchars($symbol), true); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'footnote_backref'; } /** * @param FootnoteBackref $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { FootnoteBackref::assertInstanceOf($node); return [ 'reference' => $node->getReference()->getLabel(), ]; } } PKI.Zf FootnoteRefRenderer.phpnuW+A * (c) Rezo Zero / Ambroise Maupate * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace League\CommonMark\Extension\Footnote\Renderer; use League\CommonMark\Extension\Footnote\Node\FootnoteRef; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class FootnoteRefRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { private ConfigurationInterface $config; /** * @param FootnoteRef $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { FootnoteRef::assertInstanceOf($node); $attrs = $node->data->getData('attributes'); $attrs->append('class', $this->config->get('footnote/ref_class')); $attrs->set('href', \mb_strtolower($node->getReference()->getDestination(), 'UTF-8')); $attrs->set('role', 'doc-noteref'); $idPrefix = $this->config->get('footnote/ref_id_prefix'); return new HtmlElement( 'sup', [ 'id' => $idPrefix . \mb_strtolower($node->getReference()->getLabel(), 'UTF-8'), ], new HtmlElement( 'a', $attrs->export(), $node->getReference()->getTitle() ), true ); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'footnote_ref'; } /** * @param FootnoteRef $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { FootnoteRef::assertInstanceOf($node); return [ 'reference' => $node->getReference()->getLabel(), ]; } } PKI.Z/ڰAAFootnoteContainerRenderer.phpnuW+A * (c) Rezo Zero / Ambroise Maupate * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace League\CommonMark\Extension\Footnote\Renderer; use League\CommonMark\Extension\Footnote\Node\FootnoteContainer; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class FootnoteContainerRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { private ConfigurationInterface $config; /** * @param FootnoteContainer $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { FootnoteContainer::assertInstanceOf($node); $attrs = $node->data->getData('attributes'); $attrs->append('class', $this->config->get('footnote/container_class')); $attrs->set('role', 'doc-endnotes'); $contents = new HtmlElement('ol', [], $childRenderer->renderNodes($node->children())); if ($this->config->get('footnote/container_add_hr')) { $contents = [new HtmlElement('hr', [], null, true), $contents]; } return new HtmlElement('div', $attrs->export(), $contents); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'footnote_container'; } /** * @return array */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z&t++Block/HtmlBlockRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlFilter; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class HtmlBlockRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { /** @psalm-readonly-allow-private-mutation */ private ConfigurationInterface $config; /** * @param HtmlBlock $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { HtmlBlock::assertInstanceOf($node); $htmlInput = $this->config->get('html_input'); return HtmlFilter::filter($node->getLiteral(), $htmlInput); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'html_block'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z|Block/ListItemRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\ListItem; use League\CommonMark\Node\Block\AbstractBlock; use League\CommonMark\Node\Block\Paragraph; use League\CommonMark\Node\Block\TightBlockInterface; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class ListItemRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param ListItem $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { ListItem::assertInstanceOf($node); $contents = $childRenderer->renderNodes($node->children()); $inTightList = ($parent = $node->parent()) && $parent instanceof TightBlockInterface && $parent->isTight(); if ($this->needsBlockSeparator($node->firstChild(), $inTightList)) { $contents = "\n" . $contents; } if ($this->needsBlockSeparator($node->lastChild(), $inTightList)) { $contents .= "\n"; } $attrs = $node->data->get('attributes'); return new HtmlElement('li', $attrs, $contents); } public function getXmlTagName(Node $node): string { return 'item'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } private function needsBlockSeparator(?Node $child, bool $inTightList): bool { if ($child instanceof Paragraph && $inTightList) { return false; } return $child instanceof AbstractBlock; } } PKQ^ZBlock/FencedCodeRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Util\Xml; use League\CommonMark\Xml\XmlNodeRendererInterface; final class FencedCodeRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param FencedCode $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { FencedCode::assertInstanceOf($node); $attrs = $node->data->getData('attributes'); $infoWords = $node->getInfoWords(); if (\count($infoWords) !== 0 && $infoWords[0] !== '') { $class = $infoWords[0]; if (! \str_starts_with($class, 'language-')) { $class = 'language-' . $class; } $attrs->append('class', $class); } return new HtmlElement( 'pre', [], new HtmlElement('code', $attrs->export(), Xml::escape($node->getLiteral())) ); } public function getXmlTagName(Node $node): string { return 'code_block'; } /** * @param FencedCode $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { FencedCode::assertInstanceOf($node); if (($info = $node->getInfo()) === null || $info === '') { return []; } return ['info' => $info]; } } PKQ^ZBlock/ThematicBreakRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\ThematicBreak; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class ThematicBreakRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param ThematicBreak $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { ThematicBreak::assertInstanceOf($node); $attrs = $node->data->get('attributes'); return new HtmlElement('hr', $attrs, '', true); } public function getXmlTagName(Node $node): string { return 'thematic_break'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z>9@ Block/ListBlockRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class ListBlockRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param ListBlock $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { ListBlock::assertInstanceOf($node); $listData = $node->getListData(); $tag = $listData->type === ListBlock::TYPE_BULLET ? 'ul' : 'ol'; $attrs = $node->data->get('attributes'); if ($listData->start !== null && $listData->start !== 1) { $attrs['start'] = (string) $listData->start; } $innerSeparator = $childRenderer->getInnerSeparator(); return new HtmlElement($tag, $attrs, $innerSeparator . $childRenderer->renderNodes($node->children()) . $innerSeparator); } public function getXmlTagName(Node $node): string { return 'list'; } /** * @param ListBlock $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { ListBlock::assertInstanceOf($node); $data = $node->getListData(); if ($data->type === ListBlock::TYPE_BULLET) { return [ 'type' => $data->type, 'tight' => $node->isTight() ? 'true' : 'false', ]; } return [ 'type' => $data->type, 'start' => $data->start ?? 1, 'tight' => $node->isTight(), 'delimiter' => $data->delimiter ?? ListBlock::DELIM_PERIOD, ]; } } PKQ^Z@ %Block/BlockQuoteRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\BlockQuote; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class BlockQuoteRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param BlockQuote $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { BlockQuote::assertInstanceOf($node); $attrs = $node->data->get('attributes'); $filling = $childRenderer->renderNodes($node->children()); $innerSeparator = $childRenderer->getInnerSeparator(); if ($filling === '') { return new HtmlElement('blockquote', $attrs, $innerSeparator); } return new HtmlElement( 'blockquote', $attrs, $innerSeparator . $filling . $innerSeparator ); } public function getXmlTagName(Node $node): string { return 'block_quote'; } /** * @param BlockQuote $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^ZBlock/HeadingRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\Heading; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class HeadingRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Heading $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Heading::assertInstanceOf($node); $tag = 'h' . $node->getLevel(); $attrs = $node->data->get('attributes'); return new HtmlElement($tag, $attrs, $childRenderer->renderNodes($node->children())); } public function getXmlTagName(Node $node): string { return 'heading'; } /** * @param Heading $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { Heading::assertInstanceOf($node); return ['level' => $node->getLevel()]; } } PKQ^Zn3`ccBlock/IndentedCodeRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Block; use League\CommonMark\Extension\CommonMark\Node\Block\IndentedCode; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Util\Xml; use League\CommonMark\Xml\XmlNodeRendererInterface; final class IndentedCodeRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param IndentedCode $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { IndentedCode::assertInstanceOf($node); $attrs = $node->data->get('attributes'); return new HtmlElement( 'pre', [], new HtmlElement('code', $attrs, Xml::escape($node->getLiteral())) ); } public function getXmlTagName(Node $node): string { return 'code_block'; } /** * @return array */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^ZS>qL9 9 Inline/LinkRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\Link; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Util\RegexHelper; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class LinkRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { /** @psalm-readonly-allow-private-mutation */ private ConfigurationInterface $config; /** * @param Link $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Link::assertInstanceOf($node); $attrs = $node->data->get('attributes'); $forbidUnsafeLinks = ! $this->config->get('allow_unsafe_links'); if (! ($forbidUnsafeLinks && RegexHelper::isLinkPotentiallyUnsafe($node->getUrl()))) { $attrs['href'] = $node->getUrl(); } if (($title = $node->getTitle()) !== null) { $attrs['title'] = $title; } if (isset($attrs['target']) && $attrs['target'] === '_blank' && ! isset($attrs['rel'])) { $attrs['rel'] = 'noopener noreferrer'; } return new HtmlElement('a', $attrs, $childRenderer->renderNodes($node->children())); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'link'; } /** * @param Link $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { Link::assertInstanceOf($node); return [ 'destination' => $node->getUrl(), 'title' => $node->getTitle() ?? '', ]; } } PKQ^ZyZ'Inline/StrongRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\Strong; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class StrongRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Strong $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Strong::assertInstanceOf($node); $attrs = $node->data->get('attributes'); return new HtmlElement('strong', $attrs, $childRenderer->renderNodes($node->children())); } public function getXmlTagName(Node $node): string { return 'strong'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z(Inline/CodeRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\Code; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Util\Xml; use League\CommonMark\Xml\XmlNodeRendererInterface; final class CodeRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Code $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Code::assertInstanceOf($node); $attrs = $node->data->get('attributes'); return new HtmlElement('code', $attrs, Xml::escape($node->getLiteral())); } public function getXmlTagName(Node $node): string { return 'code'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z ?Inline/EmphasisRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\Emphasis; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Xml\XmlNodeRendererInterface; final class EmphasisRenderer implements NodeRendererInterface, XmlNodeRendererInterface { /** * @param Emphasis $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Emphasis::assertInstanceOf($node); $attrs = $node->data->get('attributes'); return new HtmlElement('em', $attrs, $childRenderer->renderNodes($node->children())); } public function getXmlTagName(Node $node): string { return 'emph'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PKQ^Z] Inline/ImageRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\Image; use League\CommonMark\Node\Inline\Newline; use League\CommonMark\Node\Node; use League\CommonMark\Node\NodeIterator; use League\CommonMark\Node\StringContainerInterface; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; use League\CommonMark\Util\RegexHelper; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class ImageRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { /** @psalm-readonly-allow-private-mutation */ private ConfigurationInterface $config; /** * @param Image $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Image::assertInstanceOf($node); $attrs = $node->data->get('attributes'); $forbidUnsafeLinks = ! $this->config->get('allow_unsafe_links'); if ($forbidUnsafeLinks && RegexHelper::isLinkPotentiallyUnsafe($node->getUrl())) { $attrs['src'] = ''; } else { $attrs['src'] = $node->getUrl(); } $attrs['alt'] = $this->getAltText($node); if (($title = $node->getTitle()) !== null) { $attrs['title'] = $title; } return new HtmlElement('img', $attrs, '', true); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'image'; } /** * @param Image $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { Image::assertInstanceOf($node); return [ 'destination' => $node->getUrl(), 'title' => $node->getTitle() ?? '', ]; } private function getAltText(Image $node): string { $altText = ''; foreach ((new NodeIterator($node)) as $n) { if ($n instanceof StringContainerInterface) { $altText .= $n->getLiteral(); } elseif ($n instanceof Newline) { $altText .= "\n"; } } return $altText; } } PKQ^Z 22Inline/HtmlInlineRenderer.phpnuW+A * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\CommonMark\Renderer\Inline; use League\CommonMark\Extension\CommonMark\Node\Inline\HtmlInline; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlFilter; use League\CommonMark\Xml\XmlNodeRendererInterface; use League\Config\ConfigurationAwareInterface; use League\Config\ConfigurationInterface; final class HtmlInlineRenderer implements NodeRendererInterface, XmlNodeRendererInterface, ConfigurationAwareInterface { /** @psalm-readonly-allow-private-mutation */ private ConfigurationInterface $config; /** * @param HtmlInline $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): string { HtmlInline::assertInstanceOf($node); $htmlInput = $this->config->get('html_input'); return HtmlFilter::filter($node->getLiteral(), $htmlInput); } public function setConfiguration(ConfigurationInterface $configuration): void { $this->config = $configuration; } public function getXmlTagName(Node $node): string { return 'html_inline'; } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { return []; } } PK|ZV""DescriptionTermRenderer.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\DescriptionList\Renderer; use League\CommonMark\Extension\DescriptionList\Node\DescriptionTerm; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; final class DescriptionTermRenderer implements NodeRendererInterface { /** * @param DescriptionTerm $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { DescriptionTerm::assertInstanceOf($node); return new HtmlElement('dt', [], $childRenderer->renderNodes($node->children())); } } PK|ZH!DescriptionRenderer.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\DescriptionList\Renderer; use League\CommonMark\Extension\DescriptionList\Node\Description; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; final class DescriptionRenderer implements NodeRendererInterface { /** * @param Description $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { Description::assertInstanceOf($node); return new HtmlElement('dd', [], $childRenderer->renderNodes($node->children())); } } PK|ZZpwwDescriptionListRenderer.phpnuW+A * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Extension\DescriptionList\Renderer; use League\CommonMark\Extension\DescriptionList\Node\DescriptionList; use League\CommonMark\Node\Node; use League\CommonMark\Renderer\ChildNodeRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface; use League\CommonMark\Util\HtmlElement; final class DescriptionListRenderer implements NodeRendererInterface { /** * @param DescriptionList $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): HtmlElement { DescriptionList::assertInstanceOf($node); $separator = $childRenderer->getBlockSeparator(); return new HtmlElement('dl', [], $separator . $childRenderer->renderNodes($node->children()) . $separator); } } PK&Zf*ChildNodeRendererInterface.phpnuW+APK&Z5OV5 5  HtmlRenderer.phpnuW+APK&ZMarkdownRendererInterface.phpnuW+APK&Zv|Block/DocumentRenderer.phpnuW+APK&ZBlock/ParagraphRenderer.phpnuW+APK&Z쓲HtmlDecorator.phpnuW+APK&Z@ɥ$NoMatchingRendererException.phpnuW+APK&Z:Qd&DocumentRendererInterface.phpnuW+APK&Zw)Inline/NewlineRenderer.phpnuW+APK&Z=;;1Inline/TextRenderer.phpnuW+APK&Z{5w7NodeRendererInterface.phpnuW+APKZ'ݣ V:inline.phpnuW+APKI.Z)v@(PFootnoteRenderer.phpnuW+APKI.ZaX X MYFootnoteBackrefRenderer.phpnuW+APKI.Zf bFootnoteRefRenderer.phpnuW+APKI.Z/ڰAAlFootnoteContainerRenderer.phpnuW+APKQ^Z&t++uBlock/HtmlBlockRenderer.phpnuW+APKQ^Z||Block/ListItemRenderer.phpnuW+APKQ^Z1Block/FencedCodeRenderer.phpnuW+APKQ^Z.Block/ThematicBreakRenderer.phpnuW+APKQ^Z>9@ TBlock/ListBlockRenderer.phpnuW+APKQ^Z@ %=Block/BlockQuoteRenderer.phpnuW+APKQ^ZBlock/HeadingRenderer.phpnuW+APKQ^Zn3`cc'Block/IndentedCodeRenderer.phpnuW+APKQ^ZS>qL9 9 شInline/LinkRenderer.phpnuW+APKQ^ZyZ'XInline/StrongRenderer.phpnuW+APKQ^Z(Inline/CodeRenderer.phpnuW+APKQ^Z ?Inline/EmphasisRenderer.phpnuW+APKQ^Z] Inline/ImageRenderer.phpnuW+APKQ^Z 22Inline/HtmlInlineRenderer.phpnuW+APK|ZV""|DescriptionTermRenderer.phpnuW+APK|ZH!DescriptionRenderer.phpnuW+APK|ZZpwwBDescriptionListRenderer.phpnuW+APK!!