]> git.mxchange.org Git - friendica.git/commitdiff
[pre] blocks now preserve spaces
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 23 Jun 2020 11:53:18 +0000 (07:53 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 23 Jun 2020 11:53:18 +0000 (07:53 -0400)
- Added test case
- Added English documentation

doc/BBCode.md
src/Content/Text/BBCode.php
tests/src/Content/Text/BBCodeTest.php

index 59f74144917e17cb908d8efefc3061bc505a43a8..08c43636f88ccd1ce66cc37f7ae8f94b26e8a83e 100644 (file)
@@ -633,6 +633,14 @@ On Mastodon this field is used for the content warning.
   </td>
   <td>@user@domain.tld #hashtag</td>
 </tr>
+<tr>
+  <td>Additionally, [pre] blocks preserve spaces:
+    <ul>
+      <li>[pre]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spaces[/pre]</li>
+    </ul>
+  </td>
+  <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spaces</td>
+</tr>
 <tr>
   <td>[nosmile] is used to disable smilies on a post by post basis<br>
     <br>
index 95484de720c5a31331ad3f614e5f8463e4d4ac43..ba5bde045dd6575a425586e328a5f5628deafe17 100644 (file)
@@ -1878,7 +1878,11 @@ class BBCode
                        // Remove escaping tags
                        $text = preg_replace("/\[noparse\](.*?)\[\/noparse\]/ism", '\1', $text);
                        $text = preg_replace("/\[nobb\](.*?)\[\/nobb\]/ism", '\1', $text);
-                       $text = preg_replace("/\[pre\](.*?)\[\/pre\]/ism", '\1', $text);
+
+                       // Additionally, [pre] tags preserve spaces
+                       $text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", function ($match) {
+                               return str_replace(' ', '&nbsp;', $match[1]);
+                       }, $text);
 
                        return $text;
                }); // Escaped code
index 82e2853e7145a5be3f0e6cdf85aedd2eacc4801e..77613e891ac24aed4ab6fe29569c13e6cb5ff4c5 100644 (file)
@@ -241,6 +241,10 @@ class BBCodeTest extends MockedTest
                                'expectedHtml' => '[test] Space',
                                'text' => '[test] Space',
                        ],
+                       'task-8800-pre-spaces' => [
+                               'expectedHtml' => '&nbsp;&nbsp;&nbsp;&nbsp;Spaces',
+                               'text' => '[pre]    Spaces[/pre]',
+                       ],
                ];
        }