]> git.mxchange.org Git - friendica.git/commitdiff
Add inline spans to code block extraction in BBCode::convert
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 14 Mar 2019 13:03:31 +0000 (09:03 -0400)
committerGitHub <noreply@github.com>
Thu, 14 Mar 2019 13:03:31 +0000 (09:03 -0400)
- Fixes autolinker replacing URLs inside of code spans

src/Content/Text/BBCode.php

index 5474be98d837565673622c1c1caf7a088c408874..e417b38a467b8cbb8ed096a8f9d153e3cb5ce10a 100644 (file)
@@ -1180,17 +1180,18 @@ class BBCode extends BaseObject
                        return $return;
                };
 
-               // Extracting multi-line code blocks before the whitespace processing
+               // Extracting code blocks before the whitespace processing and the autolinker
                $codeblocks = [];
 
                $text = preg_replace_callback("#\[code(?:=([^\]]*))?\](.*?)\[\/code\]#ism",
                        function ($matches) use (&$codeblocks) {
-                               $return = $matches[0];
+                               $return = '#codeblock-' . count($codeblocks) . '#';
                                if (strpos($matches[2], "\n") !== false) {
-                                       $return = '#codeblock-' . count($codeblocks) . '#';
-
-                                       $codeblocks[] =  '<pre><code class="language-' . trim($matches[1]) . '">' . trim($matches[2], "\n\r") . '</code></pre>';
+                                       $codeblocks[] = '<pre><code class="language-' . trim($matches[1]) . '">' . trim($matches[2], "\n\r") . '</code></pre>';
+                               } else {
+                                       $codeblocks[] = '<code>' . $matches[2] . '</code>';
                                }
+
                                return $return;
                        },
                        $text
@@ -1502,12 +1503,6 @@ class BBCode extends BaseObject
                // Check for font change text
                $text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/sm", "<span style=\"font-family: $1;\">$2</span>", $text);
 
-               // Declare the format for [code] layout
-
-               $CodeLayout = '<code>$1</code>';
-               // Check for [code] text
-               $text = preg_replace("/\[code\](.*?)\[\/code\]/ism", "$CodeLayout", $text);
-
                // Declare the format for [spoiler] layout
                $SpoilerLayout = '<blockquote class="spoiler">$1</blockquote>';