1
0
mirror of https://github.com/erusev/parsedown.git synced 2023-08-10 21:13:06 +03:00

Add breaks configurable

This commit is contained in:
Aidan Woods 2019-01-25 21:20:58 +00:00
parent fce09a702a
commit b89bd0e3c2
No known key found for this signature in database
GPG Key ID: 9A6A8EFAA512BBB9
6 changed files with 35 additions and 2 deletions

View File

@ -31,6 +31,7 @@
<referencedMethod name="Erusev\Parsedown\Configurables\BlockTypes::settingMarked" />
<referencedMethod name="Erusev\Parsedown\Configurables\BlockTypes::settingUnmarked" />
<referencedMethod name="Erusev\Parsedown\Configurables\BlockTypes::removing" />
<referencedMethod name="Erusev\Parsedown\Configurables\Breaks::enabled" />
</errorLevel>
</PossiblyUnusedMethod>
</issueHandlers>

View File

@ -2,8 +2,12 @@
namespace Erusev\Parsedown\Components\Inlines;
use Erusev\Parsedown\AST\Handler;
use Erusev\Parsedown\AST\StateRenderable;
use Erusev\Parsedown\Components\Inline;
use Erusev\Parsedown\Configurables\Breaks;
use Erusev\Parsedown\Html\Renderables\Container;
use Erusev\Parsedown\Html\Renderables\Element;
use Erusev\Parsedown\Html\Renderables\Text;
use Erusev\Parsedown\Parsedown;
use Erusev\Parsedown\Parsing\Excerpt;
@ -59,11 +63,23 @@ final class SoftBreak implements Inline
}
/**
* @return Text
* @return Handler<Text|Container>
*/
public function stateRenderable(Parsedown $_)
{
return new Text("\n");
return new Handler(
/** @return Text|Container */
function (State $State) {
if ($State->get(Breaks::class)->isEnabled()) {
return new Container([
Element::selfClosing('br', []),
new Text("\n")
]);
}
return new Text("\n");
}
);
}
/**

View File

@ -0,0 +1,10 @@
<?php
namespace Erusev\Parsedown\Configurables;
use Erusev\Parsedown\Configurable;
final class Breaks implements Configurable
{
use BooleanConfigurable;
}

View File

@ -2,6 +2,7 @@
namespace Erusev\Parsedown\Tests;
use Erusev\Parsedown\Configurables\Breaks;
use Erusev\Parsedown\Configurables\SafeMode;
use Erusev\Parsedown\Configurables\StrictMode;
use Erusev\Parsedown\Parsedown;
@ -47,6 +48,7 @@ class ParsedownTest extends TestCase
$Parsedown = new Parsedown(new State([
new SafeMode(\substr($test, 0, 3) === 'xss'),
new StrictMode(\substr($test, 0, 6) === 'strict'),
new Breaks(\substr($test, 0, 14) === 'breaks_enabled'),
]));
$actualMarkup = $Parsedown->text($markdown);

View File

@ -0,0 +1,2 @@
<p>line<br />
anotherline</p>

View File

@ -0,0 +1,2 @@
line
anotherline