Skip to content

Commit

Permalink
dev: Provide a HoursFormatter Twig extension
Browse files Browse the repository at this point in the history
  • Loading branch information
marien-probesys committed Nov 7, 2023
1 parent 4433f4d commit c35caec
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/Twig/HoursFormatterExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

// This file is part of Bileto.
// Copyright 2022-2023 Probesys
// SPDX-License-Identifier: AGPL-3.0-or-later

namespace App\Twig;

use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class HoursFormatterExtension extends AbstractExtension
{
public function __construct(
private TranslatorInterface $translator,
) {
}

public function getFilters(): array
{
return [
new TwigFilter('formatMinutes', [$this, 'formatMinutes']),
];
}

/**
* Return the given minutes formatted as hours and minutes.
*/
public function formatMinutes(int $minutes): string
{
$hours = intdiv($minutes, 60);
$remainingMinutes = $minutes % 60;

if ($remainingMinutes === 0) {
return $this->translator->trans('hours_formatter.hours', [
'hours' => $hours,
]);
} elseif ($hours === 0) {
return $this->translator->trans('hours_formatter.minutes', [
'minutes' => $remainingMinutes,
]);
} else {
return $this->translator->trans('hours_formatter.hours_and_minutes', [
'hours' => $hours,
'minutes' => $remainingMinutes,
]);
}
}
}
3 changes: 3 additions & 0 deletions translations/messages+intl-icu.en_GB.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ home.no_tickets: 'No tickets'
home.title: 'Welcome to Bileto'
home.your_organizations: '{count, plural, one {Your organization} other {Your organizations}}'
home.your_tickets: 'Your tickets'
hours_formatter.hours: '{hours}h'
hours_formatter.hours_and_minutes: "{hours}h\_{minutes}m"
hours_formatter.minutes: '{minutes}m'
layout.activate_javascript: 'You need to activate the JavaScript in order to use Bileto.'
layout.home: Home
layout.logout: Logout
Expand Down
3 changes: 3 additions & 0 deletions translations/messages+intl-icu.fr_FR.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ home.no_tickets: 'Aucun ticket'
home.title: 'Bienvenue sur Bileto'
home.your_organizations: '{count, plural, one {Votre organisation} other {Vos organisations}}'
home.your_tickets: 'Vos tickets'
hours_formatter.hours: '{hours}h'
hours_formatter.hours_and_minutes: "{hours}h\_{minutes}m"
hours_formatter.minutes: '{minutes}m'
layout.activate_javascript: 'Vous devez activer le JavaScript pour utiliser Bileto.'
layout.home: Accueil
layout.logout: 'Se déconnecter'
Expand Down

0 comments on commit c35caec

Please sign in to comment.