Add TalkExtension as a Twig extension

This commit is contained in:
Oliver Davies 2021-08-25 00:59:26 +01:00
parent d22c35c090
commit 5048781ae3
3 changed files with 17 additions and 3 deletions

View file

@ -6,3 +6,8 @@ sculpin_content_types:
taxonomies: [tags] taxonomies: [tags]
talks: talks:
permalink: talks/:basename/ permalink: talks/:basename/
services:
App\TwigExtension\TalkExtension:
tags:
- { name: twig.extension }

View file

@ -5,10 +5,19 @@ declare(strict_types=1);
namespace App\TwigExtension; namespace App\TwigExtension;
use Illuminate\Support\Collection; 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); $talkCollection = new Collection($talks);

View file

@ -10,6 +10,6 @@ final class TalkExtensionTest extends TestCase
/** @test */ /** @test */
public function it_returns_zero_if_there_are_no_talks(): void public function it_returns_zero_if_there_are_no_talks(): void
{ {
$this->assertSame(0, (new TalkExtension())->getPastTalksCount([])); $this->assertSame(0, (new TalkExtension())->getPastTalkCount([]));
} }
} }