From 045ef1737272c6fc4a7464151fba29dea7c1221e Mon Sep 17 00:00:00 2001 From: Awilum Date: Fri, 27 May 2022 19:55:09 +0300 Subject: [PATCH] feat(directives): add ability to customize tags for expressions directive --- .../core/Entries/Directives/ExpressionsDirective.php | 6 +++++- src/flextype/settings.yaml | 2 ++ tests/fixtures/settings/settings.yaml | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/flextype/core/Entries/Directives/ExpressionsDirective.php b/src/flextype/core/Entries/Directives/ExpressionsDirective.php index fe311851..0938009a 100644 --- a/src/flextype/core/Entries/Directives/ExpressionsDirective.php +++ b/src/flextype/core/Entries/Directives/ExpressionsDirective.php @@ -27,10 +27,14 @@ emitter()->addListener('onEntriesFetchSingleField', static function (): void { return; } + $selfQuote = fn ($text) => preg_replace('/(.)/us', '\\\\$0', $text); + $openingTag = registry()->get('flextype.settings.entries.directives.expressions.opening_tag'); + $closingTag = registry()->get('flextype.settings.entries.directives.expressions.closing_tag'); + $field = entries()->registry()->get('methods.fetch.field'); if (is_string($field['value'])) { - $field['value'] = preg_replace_callback('/\[\[ (.*?) \]\]/s', function($matches) { + $field['value'] = preg_replace_callback('/' . $selfQuote($openingTag) . ' (.*?) ' . $selfQuote($closingTag) . '/s', function($matches) { return expression()->evaluate($matches[1]); }, $field['value']); } diff --git a/src/flextype/settings.yaml b/src/flextype/settings.yaml index d2404da5..19fb5da2 100644 --- a/src/flextype/settings.yaml +++ b/src/flextype/settings.yaml @@ -81,6 +81,8 @@ entries: enabled: true enabled_globally: true path: "/src/flextype/core/Entries/Directives/ExpressionsDirective.php" + opening_tag: "[[" + closing_tag: "]]" shortcodes: enabled: true enabled_globally: true diff --git a/tests/fixtures/settings/settings.yaml b/tests/fixtures/settings/settings.yaml index 390cbb8d..46c40576 100644 --- a/tests/fixtures/settings/settings.yaml +++ b/tests/fixtures/settings/settings.yaml @@ -77,6 +77,8 @@ entries: enabled: true enabled_globally: true path: "/src/flextype/core/Entries/Directives/ExpressionsDirective.php" + opening_tag: "[[" + closing_tag: "]]" shortcodes: enabled: true enabled_globally: true