Mercurial > hg > cmmr2012-drupal-site
view vendor/chi-teck/drupal-code-generator/src/Twig/TwigEnvironment.php @ 5:12f9dff5fda9 tip
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:34:47 +0100 |
parents | a9cd425dd02b |
children |
line wrap: on
line source
<?php namespace DrupalCodeGenerator\Twig; use DrupalCodeGenerator\Utils; use Twig_Environment; use Twig_LoaderInterface; use Twig_SimpleFilter; /** * Stores the Twig configuration. */ class TwigEnvironment extends Twig_Environment { /** * Constructs Twig environment object. * * @param \Twig_LoaderInterface $loader * The Twig loader. */ public function __construct(Twig_LoaderInterface $loader) { parent::__construct($loader); $this->addFilter(new Twig_SimpleFilter('plural', [Utils::class, 'pluralize']), ['deprecated' => TRUE]); $this->addFilter(new Twig_SimpleFilter('pluralize', [Utils::class, 'pluralize'])); $this->addFilter(new Twig_SimpleFilter('article', function ($string) { $article = in_array(strtolower($string[0]), ['a', 'e', 'i', 'o', 'u']) ? 'an' : 'a'; return $article . ' ' . $string; })); $this->addFilter(new Twig_SimpleFilter('underscore2hyphen', function ($string) { // @codeCoverageIgnoreStart return str_replace('_', '-', $string); // @codeCoverageIgnoreEnd }, ['deprecated' => TRUE])); $this->addFilter(new Twig_SimpleFilter('hyphen2underscore', function ($string) { // @codeCoverageIgnoreStart return str_replace('-', '_', $string); // @codeCoverageIgnoreEnd }, ['deprecated' => TRUE])); $this->addFilter(new Twig_SimpleFilter('u2h', function ($string) { return str_replace('_', '-', $string); })); $this->addFilter(new Twig_SimpleFilter('h2u', function ($string) { return str_replace('-', '_', $string); })); $this->addFilter(new Twig_SimpleFilter('camelize', function ($string, $upper_mode = TRUE) { return Utils::camelize($string, $upper_mode); })); $this->addTokenParser(new TwigSortTokenParser()); } /** * {@inheritdoc} */ public function tokenize($source, $name = NULL) { if (!$source instanceof \Twig_Source) { $source = new \Twig_Source($source, $name); } // Remove leading whitespaces to preserve indentation. // @see https://github.com/twigphp/Twig/issues/1423 $code = $source->getCode(); if (strpos($code, '{% verbatim %}') === FALSE) { $code = preg_replace("/\n +\{%/", "\n{%", $source->getCode()); } // Twig source has no setters. $source = new \Twig_Source($code, $source->getName(), $source->getPath()); return parent::tokenize($source, $name); } }