From b89bd0e3c2943eb0858b7f61ca4eeff6dd6e737d Mon Sep 17 00:00:00 2001 From: Aidan Woods Date: Fri, 25 Jan 2019 21:20:58 +0000 Subject: [PATCH] Add breaks configurable --- psalm.xml | 1 + src/Components/Inlines/SoftBreak.php | 20 ++++++++++++++++++-- src/Configurables/Breaks.php | 10 ++++++++++ tests/ParsedownTest.php | 2 ++ tests/data/breaks_enabled.html | 2 ++ tests/data/breaks_enabled.md | 2 ++ 6 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/Configurables/Breaks.php create mode 100644 tests/data/breaks_enabled.html create mode 100644 tests/data/breaks_enabled.md diff --git a/psalm.xml b/psalm.xml index d3d69ec..c6e1935 100644 --- a/psalm.xml +++ b/psalm.xml @@ -31,6 +31,7 @@ + diff --git a/src/Components/Inlines/SoftBreak.php b/src/Components/Inlines/SoftBreak.php index 45b6a20..a0eee33 100644 --- a/src/Components/Inlines/SoftBreak.php +++ b/src/Components/Inlines/SoftBreak.php @@ -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 */ 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"); + } + ); } /** diff --git a/src/Configurables/Breaks.php b/src/Configurables/Breaks.php new file mode 100644 index 0000000..c0faf84 --- /dev/null +++ b/src/Configurables/Breaks.php @@ -0,0 +1,10 @@ +text($markdown); diff --git a/tests/data/breaks_enabled.html b/tests/data/breaks_enabled.html new file mode 100644 index 0000000..e9d1972 --- /dev/null +++ b/tests/data/breaks_enabled.html @@ -0,0 +1,2 @@ +

line
+anotherline

\ No newline at end of file diff --git a/tests/data/breaks_enabled.md b/tests/data/breaks_enabled.md new file mode 100644 index 0000000..1033e6e --- /dev/null +++ b/tests/data/breaks_enabled.md @@ -0,0 +1,2 @@ +line +anotherline \ No newline at end of file