From 0733ddf5186256f9bc0bc21b4da11820ea369864 Mon Sep 17 00:00:00 2001 From: Peter Karakas Date: Sun, 4 Sep 2016 17:16:06 +0200 Subject: [PATCH] Fix parseBold function if we have multiple bold strings By default the preg_replace function is un-greedy. I used the U flag to make it greedy. I added a new test case to cover this case. --- part-09/tests/MarkdownParserTest.php | 8 ++++++++ part-10/src/Example/MarkdownParser.php | 2 +- part-10/tests/MarkdownParserTest.php | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/part-09/tests/MarkdownParserTest.php b/part-09/tests/MarkdownParserTest.php index 29b4f9f..d3fb057 100644 --- a/part-09/tests/MarkdownParserTest.php +++ b/part-09/tests/MarkdownParserTest.php @@ -27,4 +27,12 @@ public function testBoldTextCanBeParsed() $r = $m->parseBold($e); $this->assertEquals('foobarbaz', $r); } + + public function testDoubleBoldTextCanBeParsed() + { + $m = new MarkdownParser; + $e = 'foo**bar**baz**boo**'; + $r = $m->parseBold($e); + $this->assertEquals('foobarbazboo', $r); + } } diff --git a/part-10/src/Example/MarkdownParser.php b/part-10/src/Example/MarkdownParser.php index 4506691..345d55a 100644 --- a/part-10/src/Example/MarkdownParser.php +++ b/part-10/src/Example/MarkdownParser.php @@ -12,7 +12,7 @@ class MarkdownParser */ public function parseBold($source) { - $pattern = '/\*\*(.*)\*\*/'; + $pattern = '/\*\*(.*)\*\*/U'; $replace = '$1'; return preg_replace($pattern, $replace, $source); } diff --git a/part-10/tests/MarkdownParserTest.php b/part-10/tests/MarkdownParserTest.php index 7f15711..a867228 100644 --- a/part-10/tests/MarkdownParserTest.php +++ b/part-10/tests/MarkdownParserTest.php @@ -27,4 +27,12 @@ public function testBoldTextCanBeParsed() $r = $m->parseBold($e); $this->assertEquals('foobarbaz', $r); } + + public function testDoubleBoldTextCanBeParsed() + { + $m = new MarkdownParser; + $e = 'foo**bar**baz**boo**'; + $r = $m->parseBold($e); + $this->assertEquals('foobarbazboo', $r); + } }