Skip to content

Commit 77d8a5b

Browse files
author
Genert Org
committed
release: 1.1.0
1 parent 66c4f47 commit 77d8a5b

File tree

7 files changed

+81
-11
lines changed

7 files changed

+81
-11
lines changed

CHANGELOG.MD

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file.
33

44
The project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
55

6+
## [1.1.0] - 2018-03-04
7+
### Added
8+
- `addLinebreakParser` adds linebreak parser to support changing newlines to `<br />`.
9+
10+
### Changed
11+
- Removed linebreak parser from BBCode default parsers list.
12+
613
## [1.0.3] - 2017-07-18
714
### Added
815
- Newline parser

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ $bbCode->addParser(
119119
$bbCode->convertToHtml('[link target=www.yourlinkhere.com]Text to be displayed[/link].');
120120
```
121121

122+
### `addLinebreakParser()`
123+
124+
Adds linebreak parser to BBCode parsers list to convert newlines to `<br />` in HTML.
122125

123126
## Laravel installation
124127

src/BBCode.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
use Genert\BBCode\Parser\BBCodeParser;
1212
use Genert\BBCode\Parser\HTMLParser;
1313

14-
final class BBCode {
14+
final class BBCode
15+
{
1516
private $htmlParser;
1617
private $bbCodeParser;
1718

@@ -60,4 +61,9 @@ public function addParser(string $name, string $pattern, string $replace, string
6061

6162
return $this;
6263
}
64+
65+
public function addLinebreakParser()
66+
{
67+
return $this->addParser('linebreak', '/[\r\n]/', '<br />', '');
68+
}
6369
}

src/Parser/BBCodeParser.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
namespace Genert\BBCode\Parser;
1010

11-
final class BBCodeParser extends Parser {
11+
final class BBCodeParser extends Parser
12+
{
1213
protected $parsers = [
1314
'bold' => [
1415
'pattern' => '/\[b\](.*?)\[\/b\]/s',
@@ -110,11 +111,6 @@ final class BBCodeParser extends Parser {
110111
'replace' => '<td>$1</td>',
111112
'content' => '$1',
112113
],
113-
'linebreak' => [
114-
'pattern' => '/\r\n/',
115-
'replace' => '<br />',
116-
'content' => '',
117-
],
118114
];
119115

120116
public function stripTags(string $source): string

src/Parser/HTMLParser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
namespace Genert\BBCode\Parser;
1010

11-
final class HTMLParser extends Parser {
11+
final class HTMLParser extends Parser
12+
{
1213
protected $parsers = [
1314
'bold' => [
1415
'pattern' => '/<strong>(.*?)<\/strong>|<b>(.*?)<\/b>/s',

src/Parser/Parser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
namespace Genert\BBCode\Parser;
1010

11-
class Parser {
11+
class Parser
12+
{
1213
/**
1314
* Static case insensitive flag to enable
1415
* case insensitivity when parsing BBCode.

tests/ParserTest.php

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
use PHPUnit\Framework\TestCase;
1010
use Genert\BBCode\BBCode;
1111

12-
class ParserTest extends TestCase {
13-
public function testParser() {
12+
class ParserTest extends TestCase
13+
{
14+
public function testParser()
15+
{
1416
$bbCode = new BBCode();
1517

1618
$this->assertNotNull($bbCode);
@@ -160,6 +162,60 @@ public function testBBCodeReturnsCorrectHtml() {
160162
$this->assertEquals($output, $bbCode->convertToHtml($input));
161163
}
162164

165+
// https://github.com/Genert/bbcode/issues/2
166+
public function testCustomBulletsListBBCodeConversion()
167+
{
168+
$bbCode = new BBCode();
169+
170+
$input = '
171+
[ul]
172+
[li]List item 1[/li]
173+
[li]List item 2[/li]
174+
[li]List item 3[/li]
175+
[/ul]
176+
';
177+
178+
$bbCode->addParser(
179+
'bullet_list',
180+
'/\[ul\](.*?)\[\/ul\]/s',
181+
'<ul>$1</ul>',
182+
'$1'
183+
);
184+
185+
$bbCode->addParser(
186+
'list_item',
187+
'/\[li\](.*?)\[\/li\]/',
188+
'<li>$1</li>',
189+
'$1'
190+
);
191+
192+
$output = '
193+
<ul>
194+
<li>List item 1</li>
195+
<li>List item 2</li>
196+
<li>List item 3</li>
197+
</ul>
198+
';
199+
200+
$this->assertEquals($output, $bbCode->convertToHtml($input));
201+
}
202+
203+
public function testAddNewLineBBCodeConversion()
204+
{
205+
$bbCode = new BBCode();
206+
207+
$bbCode->addNewlineParser();
208+
209+
$input = '[b]bold[/b]
210+
[i]italic[/i]
211+
[u]underline[/u]
212+
[s]line through[/s]';
213+
214+
$output = trim('<b>bold</b><br /> <i>italic</i><br /> <u>underline</u><br /> <s>line through</s>');
215+
216+
$this->assertEquals($output, $bbCode->convertToHtml($input));
217+
}
218+
163219
public function testCaseSensitivity()
164220
{
165221
$bbCode = new BBCode();

0 commit comments

Comments
 (0)