From 5048781ae3afd7a1f0be74ecc67281fff055e2be Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 25 Aug 2021 00:59:26 +0100 Subject: [PATCH] Add TalkExtension as a Twig extension --- app/config/sculpin_kernel.yml | 5 +++++ src/TwigExtension/TalkExtension.php | 13 +++++++++++-- tests/TalkExtensionTest.php | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/config/sculpin_kernel.yml b/app/config/sculpin_kernel.yml index e25e22dc..795279d0 100644 --- a/app/config/sculpin_kernel.yml +++ b/app/config/sculpin_kernel.yml @@ -6,3 +6,8 @@ sculpin_content_types: taxonomies: [tags] talks: permalink: talks/:basename/ + +services: + App\TwigExtension\TalkExtension: + tags: + - { name: twig.extension } diff --git a/src/TwigExtension/TalkExtension.php b/src/TwigExtension/TalkExtension.php index cba73864..6511ec6f 100644 --- a/src/TwigExtension/TalkExtension.php +++ b/src/TwigExtension/TalkExtension.php @@ -5,10 +5,19 @@ declare(strict_types=1); namespace App\TwigExtension; use Illuminate\Support\Collection; +use Twig\Extension\AbstractExtension; +use Twig\TwigFunction; -final class TalkExtension +final class TalkExtension extends AbstractExtension { - public function getPastTalksCount(array $talks = []): int + public function getFunctions() + { + return [ + new TwigFunction('get_past_talk_count', [$this, 'getPastTalkCount']), + ]; + } + + public function getPastTalkCount(array $talks = []): int { $talkCollection = new Collection($talks); diff --git a/tests/TalkExtensionTest.php b/tests/TalkExtensionTest.php index c707752d..d6d33a56 100644 --- a/tests/TalkExtensionTest.php +++ b/tests/TalkExtensionTest.php @@ -10,6 +10,6 @@ final class TalkExtensionTest extends TestCase /** @test */ public function it_returns_zero_if_there_are_no_talks(): void { - $this->assertSame(0, (new TalkExtension())->getPastTalksCount([])); + $this->assertSame(0, (new TalkExtension())->getPastTalkCount([])); } }