Skip to content

Commit 5caf767

Browse files
Str: Add extension support for inline markdown (#53033)
1 parent 5106bd5 commit 5caf767

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

src/Illuminate/Support/Str.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,15 +730,20 @@ public static function markdown($string, array $options = [], array $extensions
730730
*
731731
* @param string $string
732732
* @param array $options
733+
* @param array $extensions
733734
* @return string
734735
*/
735-
public static function inlineMarkdown($string, array $options = [])
736+
public static function inlineMarkdown($string, array $options = [], array $extensions = [])
736737
{
737738
$environment = new Environment($options);
738739

739740
$environment->addExtension(new GithubFlavoredMarkdownExtension());
740741
$environment->addExtension(new InlinesOnlyExtension());
741742

743+
foreach ($extensions as $extension) {
744+
$environment->addExtension($extension);
745+
}
746+
742747
$converter = new MarkdownConverter($environment);
743748

744749
return (string) $converter->convert($string);

src/Illuminate/Support/Stringable.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,11 +478,12 @@ public function markdown(array $options = [], array $extensions = [])
478478
* Convert inline Markdown into HTML.
479479
*
480480
* @param array $options
481+
* @param array $extensions
481482
* @return static
482483
*/
483-
public function inlineMarkdown(array $options = [])
484+
public function inlineMarkdown(array $options = [], array $extensions = [])
484485
{
485-
return new static(Str::inlineMarkdown($this->value, $options));
486+
return new static(Str::inlineMarkdown($this->value, $options, $extensions));
486487
}
487488

488489
/**

tests/Support/SupportStringableTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,6 +1158,19 @@ public function testInlineMarkdown()
11581158
{
11591159
$this->assertEquals("<em>hello world</em>\n", $this->stringable('*hello world*')->inlineMarkdown());
11601160
$this->assertEquals("<a href=\"https://laravel.com\"><strong>Laravel</strong></a>\n", $this->stringable('[**Laravel**](https://laravel.com)')->inlineMarkdown());
1161+
1162+
$extension = new class implements ExtensionInterface
1163+
{
1164+
public bool $configured = false;
1165+
1166+
public function register(EnvironmentBuilderInterface $environment): void
1167+
{
1168+
$this->configured = true;
1169+
}
1170+
};
1171+
1172+
$this->stringable('# hello world')->inlineMarkdown([], [$extension]);
1173+
$this->assertTrue($extension->configured);
11611174
}
11621175

11631176
public function testMask()

0 commit comments

Comments
 (0)