contrib_todo_list-1.1.1/src/TwigExtension/ContribTodoListTwigExtension.php
src/TwigExtension/ContribTodoListTwigExtension.php
<?php
namespace Drupal\contrib_todo_list\TwigExtension;
use Drupal\contrib_todo_list\data\TodoState;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
/**
* Custom Twig extension.
*/
class ContribTodoListTwigExtension extends AbstractExtension {
/**
* {@inheritdoc}
*/
public function getName() {
return 'contrib_todo_list.twig.extension';
}
/**
* {@inheritdoc}
*/
public function getFunctions() {
return [
new TwigFunction('get_available_todo_state', [$this, 'getAvailableStates']),
new TwigFunction('get_available_todo_state_keys', [$this, 'getAvailableKeys']),
new TwigFunction('get_available_todo_state_labels', [$this, 'getAvailableLabels']),
new TwigFunction('get_todo_state_key_by_label', [$this, 'getKeyByLabel']),
];
}
/**
* Get available state.
*
* @return string[]
*/
public function getAvailableStates(): array {
return TodoState::getStates();
}
/**
* Get available state keys.
*
* @return string[]
*/
public function getAvailableKeys(): array {
return TodoState::getStateKeys();
}
/**
* Get available state labels.
*
* @return string[]
*/
public function getAvailableLabels(): array {
return TodoState::getStateLabels();
}
/**
* Get key by label
*
* @param string $label
*
* @return string
*/
public function getKeyByLabel(string $label): string {
return TodoState::getKeyByLabel($label);
}
}
