laracoft's avatar

Why `markdown()` renders differently?

A

$html = <<<'HTML'
<x-markdown>{{ $variable->value }}</x-markdown>
HTML;
dd(Str::of($html)->markdown());

Illuminate\Support\Stringable^ {#444
  #value: "<p><x-markdown>{{ $variable-&gt;value }}</x-markdown></p>\n"
} // 

B

$html = <<<'HTML'
<x-markdown>{{ $variable->value }}
</x-markdown>
HTML;
dd(Str::of($html)->markdown());
Illuminate\Support\Stringable^ {#444
  #value: """
    <p><x-markdown>{{ $variable-&gt;value }}\n
    </x-markdown></p>\n
    """
} 

C

$html = <<<'HTML'
<x-markdown>
{{ $variable->value }}</x-markdown>
HTML;
dd(Str::of($html)->markdown());

Illuminate\Support\Stringable^ {#444
  #value: """
    <x-markdown>\n
    {{ $variable->value }}</x-markdown>\n
    """
}

Can someone explain why C is so special and doesn't get the &gt; treatment?

0 likes
1 reply
DigitalArtisan's avatar

Because a newline directly after the opening <x-markdown> \n will force the markdown parser to treat the content as block-level and leave it as-is. When content is on the same line, it is treated as inline and wrapped in a <p> tag. This is by design to control how your output is processed.

Please or to participate in this conversation.