From 6a6dd58a814eddf5d81f2a8c2803abfdab668bd0 Mon Sep 17 00:00:00 2001 From: tg666 Date: Thu, 24 Nov 2022 01:49:44 +0100 Subject: [PATCH] Added latte functions `asset` and `asset_version` instead of filters --- README.md | 12 +++---- src/DI/AssetExtension.php | 6 ++-- src/Latte/AssetExtension.php | 2 +- ....phpt => AssetMacrosAndFunctionsTest.phpt} | 36 +++++-------------- 4 files changed, 17 insertions(+), 39 deletions(-) rename tests/Latte/{AssetMacrosAndFiltersTest.phpt => AssetMacrosAndFunctionsTest.phpt} (64%) diff --git a/README.md b/README.md index ac130b0..1d6a03b 100644 --- a/README.md +++ b/README.md @@ -45,16 +45,14 @@ Configuration options are described in official [Symfony documentation](https://

Version: {asset_version 'my/awesome/image.png', 'foo'}

``` -You can also use Filter/Helper equivalent. For example if you want to store result in variable: +You can also use a function equivalent. For example if you want to store result in variable: ```latte -{var $filename = 'my/awesome/image.png'} +{var $asset = asset('my/awesome/image.png')} +{var $asset = asset('my/awesome/image.png', 'foo')} -{$filename|asset} -{$filename|asset: foo} - -{$filename|asset_version} -{$filename|asset_version: foo} +{var $version = asset_version('my/awesome/image.png')} +{var $version = asset_version('my/awesome/image.png', 'foo')} ``` ## Contributing diff --git a/src/DI/AssetExtension.php b/src/DI/AssetExtension.php index 5030ace..36e7e7d 100644 --- a/src/DI/AssetExtension.php +++ b/src/DI/AssetExtension.php @@ -113,13 +113,13 @@ public function beforeCompile(): void $resultDefinition = $latteFactory->getResultDefinition(); if (version_compare(Engine::VERSION, '3', '<')) { - # asset filters - $resultDefinition->addSetup('addFilter', [ + # asset functions + $resultDefinition->addSetup('addFunction', [ 'name' => 'asset', 'callback' => [$this->prefix('@packages'), 'getUrl'], ]); - $resultDefinition->addSetup('addFilter', [ + $resultDefinition->addSetup('addFunction', [ 'name' => 'asset_version', 'callback' => [$this->prefix('@packages'), 'getVersion'], ]); diff --git a/src/Latte/AssetExtension.php b/src/Latte/AssetExtension.php index 44fb4c3..78111d3 100644 --- a/src/Latte/AssetExtension.php +++ b/src/Latte/AssetExtension.php @@ -34,7 +34,7 @@ public function getTags(): array /** * @return array{asset: callable, asset_version: callable} */ - public function getFilters(): array + public function getFunctions(): array { return [ 'asset' => [$this->packages, 'getUrl'], diff --git a/tests/Latte/AssetMacrosAndFiltersTest.phpt b/tests/Latte/AssetMacrosAndFunctionsTest.phpt similarity index 64% rename from tests/Latte/AssetMacrosAndFiltersTest.phpt rename to tests/Latte/AssetMacrosAndFunctionsTest.phpt index 70aa51d..6dd311f 100644 --- a/tests/Latte/AssetMacrosAndFiltersTest.phpt +++ b/tests/Latte/AssetMacrosAndFunctionsTest.phpt @@ -14,7 +14,7 @@ use function assert; require __DIR__ . '/../bootstrap.php'; -final class AssetMacrosAndFiltersTest extends TestCase +final class AssetMacrosAndFunctionsTest extends TestCase { private Engine $engine; @@ -46,39 +46,19 @@ final class AssetMacrosAndFiltersTest extends TestCase ]); } - public function testAssetFilter(): void + public function testAssetFunction(): void { - $defaultPackage = <<< LATTE -{var \$file = "my/file.json"} -{\$file|asset} -LATTE; - - $nestedPackage = <<< LATTE -{var \$file = "my/nested/file.json"} -{\$file|asset: json_manifest_strategy} -LATTE; - $this->assertLatte([ - [$defaultPackage, 'https://cdn.example.com/my/file.json?version=2.1'], - [$nestedPackage, '/my/nested/file.abc123.json'], + ['{asset("my/file.json")}', 'https://cdn.example.com/my/file.json?version=2.1'], + ['{asset("my/nested/file.json", "json_manifest_strategy")}', '/my/nested/file.abc123.json'], ]); } - public function testAssetVersionFilter(): void + public function testAssetVersionFunction(): void { - $defaultPackage = <<< LATTE -{var \$file = "my/file.json"} -{\$file|asset_version} -LATTE; - - $nestedPackage = <<< LATTE -{var \$file = "my/nested/file.json"} -{\$file|asset_version: json_manifest_strategy} -LATTE; - $this->assertLatte([ - [$defaultPackage, '2.1'], - [$nestedPackage, '/my/nested/file.abc123.json'], + ['{asset_version("my/file.json")}', '2.1'], + ['{asset_version("my/nested/file.json", "json_manifest_strategy")}', '/my/nested/file.abc123.json'], ]); } @@ -92,4 +72,4 @@ LATTE; } } -(new AssetMacrosAndFiltersTest())->run(); +(new AssetMacrosAndFunctionsTest())->run();