diff --git a/src/flextype/core/Entries/Expressions/ConstExpression.php b/src/flextype/core/Entries/Expressions/ConstExpression.php new file mode 100644 index 00000000..6b0e32d2 --- /dev/null +++ b/src/flextype/core/Entries/Expressions/ConstExpression.php @@ -0,0 +1,30 @@ + "defined($const) ? constant($const) : ''", fn($arguments, string $const) => defined($const) ? constant($const) : '') + ]; + } +} \ No newline at end of file diff --git a/src/flextype/settings.yaml b/src/flextype/settings.yaml index 9c8123f4..f895c819 100644 --- a/src/flextype/settings.yaml +++ b/src/flextype/settings.yaml @@ -116,6 +116,9 @@ entries: field: enabled: true class: "Flextype\\Entries\\Expressions\\FieldExpression" + const: + enabled: true + class: "Flextype\\Entries\\Expressions\\ConstExpression" directives: expressions: enabled: true diff --git a/tests/fixtures/settings/settings.yaml b/tests/fixtures/settings/settings.yaml index efde83dc..9c92c2c2 100644 --- a/tests/fixtures/settings/settings.yaml +++ b/tests/fixtures/settings/settings.yaml @@ -112,6 +112,9 @@ entries: field: enabled: true class: "Flextype\\Entries\\Expressions\\FieldExpression" + const: + enabled: true + class: "Flextype\\Entries\\Expressions\\ConstExpression" directives: expressions: enabled: true diff --git a/tests/src/flextype/core/Entries/Expressions/ConstExpressionTest.php b/tests/src/flextype/core/Entries/Expressions/ConstExpressionTest.php new file mode 100644 index 00000000..bcda5e1c --- /dev/null +++ b/tests/src/flextype/core/Entries/Expressions/ConstExpressionTest.php @@ -0,0 +1,17 @@ +directory(PATH['project'] . '/entries')->create(); +}); + +afterEach(function (): void { + filesystem()->directory(PATH['project'] . '/entries')->delete(); +}); + +test('const expression', function () { + define('test-expression-const', 'Foo'); + entries()->create('const', ['test' => '[[ const("test-expression-const") ]]']); + expect(entries()->fetch('const')['test'])->toBe('Foo'); +}); \ No newline at end of file