diff --git a/src/StringParser.php b/src/StringParser.php index bca4175..2fea4b8 100644 --- a/src/StringParser.php +++ b/src/StringParser.php @@ -5,8 +5,9 @@ namespace Codefog\HasteBundle; use Contao\ArrayUtil; +use Contao\CoreBundle\InsertTag\InsertTagParser; +use Contao\CoreBundle\String\SimpleTokenParser; use Contao\StringUtil; -use Contao\System; class StringParser { @@ -23,6 +24,12 @@ class StringParser public const NO_ENTITIES = 16; + public function __construct( + private SimpleTokenParser $simpleTokenParser, + private InsertTagParser $insertTagParser, + ) { + } + /** * Recursively replace simple tokens and insert tags. */ @@ -36,13 +43,13 @@ public function recursiveReplaceTokensAndTags(string $text, array $tokens, int $ $text = StringUtil::decodeEntities($text); // first parse the tokens as they might have if-else clauses - $buffer = System::getContainer()->get('contao.string.simple_token_parser')->parse($text, $tokens); + $buffer = $this->simpleTokenParser->parse($text, $tokens); // then replace the insert tags - $buffer = System::getContainer()->get('contao.insert_tag.parser')->replaceInline($buffer); + $buffer = $this->insertTagParser->replaceInline($buffer); // check if the insert tags have returned a simple token - if (str_contains((string) $buffer, '##') && $buffer !== $text) { + if (str_contains($buffer, '##') && $buffer !== $text) { $buffer = $this->recursiveReplaceTokensAndTags($buffer, $tokens, $textFlags); } diff --git a/tests/StringParserTest.php b/tests/StringParserTest.php index 2ba0761..9eb5442 100644 --- a/tests/StringParserTest.php +++ b/tests/StringParserTest.php @@ -5,6 +5,8 @@ namespace Codefog\HasteBundle\Tests; use Codefog\HasteBundle\StringParser; +use Contao\CoreBundle\InsertTag\InsertTagParser; +use Contao\CoreBundle\String\SimpleTokenParser; use PHPUnit\Framework\TestCase; class StringParserTest extends TestCase @@ -14,7 +16,7 @@ class StringParserTest extends TestCase */ public function testFlatten(mixed $value, string $key, array $data, array $expected): void { - $parser = new StringParser(); + $parser = new StringParser($this->createMock(SimpleTokenParser::class), $this->createMock(InsertTagParser::class)); $parser->flatten($value, $key, $data); $this->assertSame($expected, $data);