abstract protected function renderLinkReferenceDefinition()

in src/render/Renderer.php [45:179]


  abstract protected function renderLinkReferenceDefinition(
    Blocks\LinkReferenceDefinition $node
  ): T;
  abstract protected function renderListOfItems(Blocks\ListOfItems $node): T;
  abstract protected function renderParagraph(Blocks\Paragraph $node): T;
  abstract protected function renderTableExtension(Blocks\TableExtension $node): T;
  abstract protected function renderThematicBreak(): T;

  ///// inlines ////

  abstract protected function renderAutoLink(Inlines\AutoLink $node): T;
  abstract protected function renderCodeSpan(Inlines\CodeSpan $node): T;
  abstract protected function renderEmphasis(Inlines\Emphasis $node): T;
  abstract protected function renderHardLineBreak(): T;
  abstract protected function renderImage(Inlines\Image $node): T;
  abstract protected function renderInlineWithPlainTextContent(
    Inlines\InlineWithPlainTextContent $node,
  ): T;
  abstract protected function renderLink(Inlines\Link $node): T;
  abstract protected function renderRawHTML(Inlines\RawHTML $node): T;
  abstract protected function renderSoftLineBreak(): T;
  abstract protected function renderStrikethroughExtension(
    Inlines\StrikethroughExtension $node,
  ): T;

  protected function renderResolvedNode(
    ASTNode $node,
  ): T {
    if ($node is Blocks\BlankLine) {
      return $this->renderBlankLine();
    }

    if ($node is Blocks\BlockQuote) {
      return $this->renderBlockQuote($node);
    }

    if ($node is Blocks\BlockSequence) {
      return $this->renderNodes($node->getChildren());
    }

    if ($node is Blocks\Document) {
      return $this->renderDocument($node);
    }

    // Blocks\FencedCodeBlock
    // Blocks\IndentedCodeBlock
    if ($node is Blocks\CodeBlock) {
      return $this->renderCodeBlock($node);
    }

    if ($node is Blocks\Heading) {
      return $this->renderHeading($node);
    }

    if ($node is Blocks\HTMLBlock) {
      return $this->renderHTMLBlock($node);
    }

    if ($node is Blocks\InlineSequenceBlock) {
      return $this->renderNodes($node->getChildren());
    }

    if ($node is Blocks\LinkReferenceDefinition) {
      return $this->renderLinkReferenceDefinition($node);
    }

    if ($node is Blocks\ListOfItems) {
      return $this->renderListOfItems($node);
    }

    if ($node is Blocks\Paragraph) {
      return $this->renderParagraph($node);
    }

    if ($node is Blocks\TableExtension) {
      return $this->renderTableExtension($node);
    }

    if ($node is Blocks\ThematicBreak) {
      return $this->renderThematicBreak();
    }

    if ($node is Inlines\AutoLink) {
      return $this->renderAutoLink($node);
    }

    // Inlines\BackslashEscape
    // Inlines\DisallowedRawHTML
    // Inlines\EntityReference
    // Inlines\TextualContent
    if ($node is Inlines\InlineWithPlainTextContent) {
      return $this->renderInlineWithPlainTextContent($node);
    }

    if ($node is Inlines\CodeSpan) {
      return $this->renderCodeSpan($node);
    }

    if ($node is Inlines\Emphasis) {
      return $this->renderEmphasis($node);
    }

    if ($node is Inlines\HardLineBreak) {
      return $this->renderHardLineBreak();
    }

    if ($node is Inlines\Image) {
      return $this->renderImage($node);
    }

    if ($node is Inlines\InlineSequence) {
      return $this->renderNodes($node->getChildren());
    }

    if ($node is Inlines\Link) {
      return $this->renderLink($node);
    }

    if ($node is Inlines\RawHTML) {
      return $this->renderRawHTML($node);
    }

    if ($node is Inlines\SoftLineBreak) {
      return $this->renderSoftLineBreak();
    }

    if ($node is Inlines\StrikethroughExtension) {
      return $this->renderStrikethroughExtension($node);
    }

    invariant_violation(
      "Unhandled node type: %s",
      \get_class($node),
    );
  }