diff --git a/src/Renderer/Inline/EmphasisRenderer.php b/src/Renderer/Inline/EmphasisRenderer.php index 7255574..9504495 100644 --- a/src/Renderer/Inline/EmphasisRenderer.php +++ b/src/Renderer/Inline/EmphasisRenderer.php @@ -38,6 +38,13 @@ public function render(Node $node, ChildNodeRendererInterface $childRenderer): s return "*{$content}*"; } - return "_{$content}_"; + if ($this->config->get('commonmark/use_underscore')) { + return "_{$content}_"; + } + + $openingDelimiter = $node->getOpeningDelimiter(); + $closingDelimiter = $node->getClosingDelimiter(); + + return "$openingDelimiter{$content}$closingDelimiter"; } } diff --git a/tests/Renderer/Inline/EmphasisRendererTest.php b/tests/Renderer/Inline/EmphasisRendererTest.php index 5e300dd..8943afb 100644 --- a/tests/Renderer/Inline/EmphasisRendererTest.php +++ b/tests/Renderer/Inline/EmphasisRendererTest.php @@ -24,7 +24,7 @@ protected function setUp(): void } #[Test] - public function it_renders_emphasis(): void + public function it_renders_emphasis_using_asterisk(): void { $block = new Emphasis(); $fakeRenderer = new FakeChildNodeRenderer(); @@ -36,6 +36,45 @@ public function it_renders_emphasis(): void $this->assertEquals('*::children::*', $result); } + #[Test] + public function it_renders_emphasis_using_underscore(): void + { + $block = new Emphasis('_'); + $fakeRenderer = new FakeChildNodeRenderer(); + $fakeRenderer->pretendChildrenExist(); + + $this->renderer->setConfiguration($this->createConfiguration([ + 'commonmark' => [ + 'use_asterisk' => false, + ], + ])); + + $result = $this->renderer->render($block, $fakeRenderer); + + $this->assertIsString($result); + $this->assertEquals('_::children::_', $result); + } + + #[Test] + public function it_renders_emphasis_with_whatever_delimiter_used(): void + { + $block = new Emphasis('$'); + $fakeRenderer = new FakeChildNodeRenderer(); + $fakeRenderer->pretendChildrenExist(); + + $this->renderer->setConfiguration($this->createConfiguration([ + 'commonmark' => [ + 'use_asterisk' => false, + 'use_underscore' => false, + ], + ])); + + $result = $this->renderer->render($block, $fakeRenderer); + + $this->assertIsString($result); + $this->assertEquals('$::children::$', $result); + } + /** * @param array $values */