Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace DrupalCodeGenerator\Twig;
|
Chris@0
|
4
|
Chris@0
|
5 use DrupalCodeGenerator\Utils;
|
Chris@0
|
6 use Twig_Environment;
|
Chris@0
|
7 use Twig_LoaderInterface;
|
Chris@0
|
8 use Twig_SimpleFilter;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Stores the Twig configuration.
|
Chris@0
|
12 */
|
Chris@0
|
13 class TwigEnvironment extends Twig_Environment {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * Constructs Twig environment object.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @param \Twig_LoaderInterface $loader
|
Chris@0
|
19 * The Twig loader.
|
Chris@0
|
20 */
|
Chris@0
|
21 public function __construct(Twig_LoaderInterface $loader) {
|
Chris@0
|
22 parent::__construct($loader);
|
Chris@0
|
23
|
Chris@0
|
24 $this->addFilter(new Twig_SimpleFilter('plural', function ($string) {
|
Chris@0
|
25 switch (substr($string, -1)) {
|
Chris@0
|
26 case 'y':
|
Chris@0
|
27 return substr($string, 0, -1) . 'ies';
|
Chris@0
|
28
|
Chris@0
|
29 case 's':
|
Chris@0
|
30 return $string . 'es';
|
Chris@0
|
31
|
Chris@0
|
32 default:
|
Chris@0
|
33 return $string . 's';
|
Chris@0
|
34 }
|
Chris@0
|
35 }));
|
Chris@0
|
36
|
Chris@0
|
37 $this->addFilter(new Twig_SimpleFilter('article', function ($string) {
|
Chris@0
|
38 $article = in_array(strtolower($string[0]), ['a', 'e', 'i', 'o', 'u']) ? 'an' : 'a';
|
Chris@0
|
39 return $article . ' ' . $string;
|
Chris@0
|
40 }));
|
Chris@0
|
41
|
Chris@0
|
42 $this->addFilter(new Twig_SimpleFilter('underscore2hyphen', function ($string) {
|
Chris@0
|
43 // @codeCoverageIgnoreStart
|
Chris@0
|
44 return str_replace('_', '-', $string);
|
Chris@0
|
45 // @codeCoverageIgnoreEnd
|
Chris@0
|
46 }, ['deprecated' => TRUE]));
|
Chris@0
|
47
|
Chris@0
|
48 $this->addFilter(new Twig_SimpleFilter('hyphen2underscore', function ($string) {
|
Chris@0
|
49 // @codeCoverageIgnoreStart
|
Chris@0
|
50 return str_replace('-', '_', $string);
|
Chris@0
|
51 // @codeCoverageIgnoreEnd
|
Chris@0
|
52 }, ['deprecated' => TRUE]));
|
Chris@0
|
53
|
Chris@0
|
54 $this->addFilter(new Twig_SimpleFilter('u2h', function ($string) {
|
Chris@0
|
55 return str_replace('_', '-', $string);
|
Chris@0
|
56 }));
|
Chris@0
|
57
|
Chris@0
|
58 $this->addFilter(new Twig_SimpleFilter('h2u', function ($string) {
|
Chris@0
|
59 return str_replace('-', '_', $string);
|
Chris@0
|
60 }));
|
Chris@0
|
61
|
Chris@0
|
62 $this->addFilter(new Twig_SimpleFilter('camelize', function ($string, $upper_mode = TRUE) {
|
Chris@0
|
63 return Utils::camelize($string, $upper_mode);
|
Chris@0
|
64 }));
|
Chris@0
|
65
|
Chris@0
|
66 $this->addTokenParser(new TwigSortTokenParser());
|
Chris@0
|
67 }
|
Chris@0
|
68
|
Chris@0
|
69 }
|