From ae2650c518240dae1b81a2f029a0d73907f9552a Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Mon, 13 Nov 2023 06:25:29 +1300 Subject: [PATCH] Render fenced block how it wants to be rendered (#9) The `FencedCode` class stores information about what delimiter character should be used, how many should be used, and what the indent offset is for the block. --- src/Renderer/Block/FencedCodeRenderer.php | 8 ++-- .../Renderer/Block/FencedCodeRendererTest.php | 42 +++++++++++++++---- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/Renderer/Block/FencedCodeRenderer.php b/src/Renderer/Block/FencedCodeRenderer.php index 62b8868..fca7a0a 100644 --- a/src/Renderer/Block/FencedCodeRenderer.php +++ b/src/Renderer/Block/FencedCodeRenderer.php @@ -32,11 +32,13 @@ public function render(Node $node, ChildNodeRendererInterface $childRenderer): s } $content = $node->getLiteral(); + $delimiter = str_repeat($node->getChar(), $node->getLength()); + $offset = str_repeat(' ', $node->getOffset()); return <<setInfo('php'); $block->setLiteral('echo "hello world!";'); $block->data->set('attributes', ['id' => 'foo', 'class' => 'bar']); @@ -36,10 +38,36 @@ public function it_renders_fenced_code(): void $result = $this->renderer->render($block, $fakeRenderer); - $this->assertEquals(<<assertEquals($expected, $result); + } + + public function provide_fenced_code(): array + { + return [ + 'tilde as char' => [ + 'fencedArgs' => [3, '~', 0], + 'expected' => << [ + 'fencedArgs' => [3, '`', 0], + 'expected' => <<3 chars' => [ + 'fencedArgs' => [5, '`', 2], + 'expected' => <<