Bladeren bron

Merge pull request #380 from schlessera/fix/trim-php-8.1

Avoid using trim() on null
Justin Hileman 4 jaren geleden
bovenliggende
commit
63616440f7
2 gewijzigde bestanden met toevoegingen van 51 en 3 verwijderingen
  1. 3 3
      src/Mustache/Tokenizer.php
  2. 48 0
      test/Mustache/Test/TokenizerTest.php

+ 3 - 3
src/Mustache/Tokenizer.php

@@ -88,11 +88,11 @@ class Mustache_Tokenizer
      * @throws Mustache_Exception_InvalidArgumentException when $delimiters string is invalid
      *
      * @param string $text       Mustache template source to tokenize
-     * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: null)
+     * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: empty string)
      *
      * @return array Set of Mustache tokens
      */
-    public function scan($text, $delimiters = null)
+    public function scan($text, $delimiters = '')
     {
         // Setting mbstring.func_overload makes things *really* slow.
         // Let's do everyone a favor and scan this string as ASCII instead.
@@ -107,7 +107,7 @@ class Mustache_Tokenizer
 
         $this->reset();
 
-        if ($delimiters = trim($delimiters)) {
+        if (is_string($delimiters) && $delimiters = trim($delimiters)) {
             $this->setDelimiters($delimiters);
         }
 

+ 48 - 0
test/Mustache/Test/TokenizerTest.php

@@ -301,6 +301,54 @@ class Mustache_Test_TokenizerTest extends PHPUnit_Framework_TestCase
                     ),
                 ),
             ),
+
+            // Delimiters are trimmed
+            array(
+                '<% name %>',
+                ' <% %> ',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'name',
+                        Mustache_Tokenizer::OTAG  => '<%',
+                        Mustache_Tokenizer::CTAG  => '%>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 10,
+                    ),
+                ),
+            ),
+
+            // An empty string makes delimiters fall back to default
+            array(
+                '{{ name }}',
+                '',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'name',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 10,
+                    ),
+                ),
+            ),
+
+            // A bad delimiter type makes delimiters fall back to default
+            array(
+                '{{ name }}',
+                42,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'name',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 10,
+                    ),
+                ),
+            ),
         );
     }
 }