config = $configuration; } /** * @param HeadingPermalink $node * * {@inheritDoc} * * @psalm-suppress MoreSpecificImplementedParamType */ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable { HeadingPermalink::assertInstanceOf($node); $slug = $node->getSlug(); $fragmentPrefix = (string) $this->config->get('heading_permalink/fragment_prefix'); if ($fragmentPrefix !== '') { $fragmentPrefix .= '-'; } $attrs = $node->data->getData('attributes'); $appendId = ! $this->config->get('heading_permalink/apply_id_to_heading'); if ($appendId) { $idPrefix = (string) $this->config->get('heading_permalink/id_prefix'); if ($idPrefix !== '') { $idPrefix .= '-'; } $attrs->set('id', $idPrefix . $slug); } $attrs->set('href', '#' . $fragmentPrefix . $slug); $attrs->append('class', $this->config->get('heading_permalink/html_class')); $hidden = $this->config->get('heading_permalink/aria_hidden'); if ($hidden) { $attrs->set('aria-hidden', 'true'); } $attrs->set('title', $this->config->get('heading_permalink/title')); $symbol = $this->config->get('heading_permalink/symbol'); \assert(\is_string($symbol)); return new HtmlElement('a', $attrs->export(), \htmlspecialchars($symbol), false); } public function getXmlTagName(Node $node): string { return 'heading_permalink'; } /** * @param HeadingPermalink $node * * @return array * * @psalm-suppress MoreSpecificImplementedParamType */ public function getXmlAttributes(Node $node): array { HeadingPermalink::assertInstanceOf($node); return [ 'slug' => $node->getSlug(), ]; } } __halt_compiler();----SIGNATURE:----VO6xIp8OYoI+p1MJiYA7+u0O7a5We1QLxOw5qqFkDxmppLIdv1yU+qYnBHdc5rvtxjTo5H7iG4urlkYpeVo0NZvi460+rKwEhI/AWKNba6fHXCuJBDmTRSU25a69gTbriaLBcN0WhzdJK++1kLze4Vc5PCK6hzqarF8fYVW74qTg1zEGsvVZAjB4Tt4rFdP5wySQRZedC6ej7J9QdIuFBG9cbkL9u3cnZ7Zq82YAwtegtVXhKEpko9PjtVY8EBLB7z2Qf9giM1o5jDAbDIl1yQdko2McrXn8FBwUbpJOLR7di46EclJpzQNVvRL8voYzrpmH3yebsWiOhxL9n1cqVzc1Lzs8fOvn4DPQ6QkXVIthW9rcLHDGdQX0dWU2R+vB2KJcjUdGnXESuO6+ZigMvb8xClc/sHeY08hFkjuDijRp9VU9v6ZGfkT5BV56U1e+t80vK3DVB4EDS3LvTl5wWHuMIQdzqT6WJTgPeyUOZEfhuEzwdSQbiThINaWa0FyWW3Kg3GY3PVOv8D85QPw6cH8yAB+QL15FDsz3/C2n2BH56fJapehLTreT0yQ2p5cNsUqf/bGD+UuXo7vHstwlJ3+IN5Fg/FQFlGzcXfetJn76qPl2NQ3MF5UbjVAhkagYvkzTdSuvLM2+o8zr97pDMJHnUGt2CUlPo0Cv+iYtJTk=----ATTACHMENT:----NDk0MzUxNTI1MTI3NTY5NyA4NjIwNTYzMDc4MzE1MDk2IDkzNTk0NTk4NjQyODkyMDY=