Chris@0: addFilter(new Twig_SimpleFilter('plural', [Utils::class, 'pluralize']), ['deprecated' => TRUE]); Chris@0: Chris@4: $this->addFilter(new Twig_SimpleFilter('pluralize', [Utils::class, 'pluralize'])); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('article', function ($string) { Chris@0: $article = in_array(strtolower($string[0]), ['a', 'e', 'i', 'o', 'u']) ? 'an' : 'a'; Chris@0: return $article . ' ' . $string; Chris@0: })); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('underscore2hyphen', function ($string) { Chris@0: // @codeCoverageIgnoreStart Chris@0: return str_replace('_', '-', $string); Chris@0: // @codeCoverageIgnoreEnd Chris@0: }, ['deprecated' => TRUE])); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('hyphen2underscore', function ($string) { Chris@0: // @codeCoverageIgnoreStart Chris@0: return str_replace('-', '_', $string); Chris@0: // @codeCoverageIgnoreEnd Chris@0: }, ['deprecated' => TRUE])); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('u2h', function ($string) { Chris@0: return str_replace('_', '-', $string); Chris@0: })); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('h2u', function ($string) { Chris@0: return str_replace('-', '_', $string); Chris@0: })); Chris@0: Chris@0: $this->addFilter(new Twig_SimpleFilter('camelize', function ($string, $upper_mode = TRUE) { Chris@0: return Utils::camelize($string, $upper_mode); Chris@0: })); Chris@0: Chris@0: $this->addTokenParser(new TwigSortTokenParser()); Chris@0: } Chris@0: Chris@4: /** Chris@4: * {@inheritdoc} Chris@4: */ Chris@4: public function tokenize($source, $name = NULL) { Chris@4: if (!$source instanceof \Twig_Source) { Chris@4: $source = new \Twig_Source($source, $name); Chris@4: } Chris@4: // Remove leading whitespaces to preserve indentation. Chris@4: // @see https://github.com/twigphp/Twig/issues/1423 Chris@4: $code = $source->getCode(); Chris@4: if (strpos($code, '{% verbatim %}') === FALSE) { Chris@4: $code = preg_replace("/\n +\{%/", "\n{%", $source->getCode()); Chris@4: } Chris@4: // Twig source has no setters. Chris@4: $source = new \Twig_Source($code, $source->getName(), $source->getPath()); Chris@4: return parent::tokenize($source, $name); Chris@4: } Chris@4: Chris@0: }