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