src/Robo/Commands/Validate/TwigCommand.php
protected function createTwigLintCommand() {
    $twig = new Environment(new FilesystemLoader());

    $repo_root = $this->getConfigValue('repo.root');
    $extension_file_contents = file_get_contents($repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigExtension.php');

    // Get any custom defined Twig filters to be ignored by linter.
    $twig_filters = (array) $this->getConfigValue('validate.twig.filters');

    // Add Twig filters from Drupal TwigExtension to be ignored.
    $drupal_filters = [];
    if ($matches_count = preg_match_all("#new \\\\Twig_SimpleFilter\('([^']+)',#", $extension_file_contents, $matches)) {
      $drupal_filters = $matches[1];
    }
    $twig_filters = array_merge($twig_filters, $drupal_filters);
    foreach ($twig_filters as $filter) {
      // Add two default arguments and set to variadic so that filters with
      // named arguments will be whitelisted.
      // @see \TwigNode_Expression_Call::getArguments
      // @see \TwigNode_Expression_Call::call()
      $twig->addFilter(new \Twig_SimpleFilter($filter, function ($node = '', array $args = []) {}, [
        'is_variadic' => TRUE,
      ]));
    }

    // Get any custom defined Twig functions to be ignored by linter.
    $twig_functions = (array) $this->getConfigValue('validate.twig.functions');

    // Add Twig functions from Drupal TwigExtension to be ignored.
    $drupal_functions = [];
    if ($matches_count = preg_match_all("#new \\\\Twig_SimpleFunction\('([^']+)',#", $extension_file_contents, $matches)) {
      $drupal_functions = $matches[1];
    }
    $twig_functions = array_merge($twig_functions, $drupal_functions);
    foreach ($twig_functions as $function) {
      // Add default argument and set to variadic so that functions with named
      // arguments will be whitelisted.
      // @see \TwigNode_Expression_Call::getArguments
      // @see \TwigNode_Expression_Call::call()
      $twig->addFunction(new \Twig_SimpleFunction($function, function (array $args = []) {}, [
        'is_variadic' => TRUE,
      ]));
    }

    // Add Drupal Twig parser to include trans tag.
    $token_parser_filename = $repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigTransTokenParser.php';
    if (file_exists($token_parser_filename)) {
      require_once $token_parser_filename;
      $twig->addTokenParser(new TwigTransTokenParser());
    }

    $command = new TwigLintCommand();
    $command->setTwigEnvironment($twig);

    return $command;
  }
protected function createTwigLintCommand() {
    $twig = new Environment(new FilesystemLoader());

    $repo_root = $this->getConfigValue('repo.root');
    $extension_file_contents = file_get_contents($repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigExtension.php');

    // Get any custom defined Twig filters to be ignored by linter.
    $twig_filters = (array) $this->getConfigValue('validate.twig.filters');

    // Add Twig filters from Drupal TwigExtension to be ignored.
    $drupal_filters = [];
    if ($matches_count = preg_match_all("#new \\\\Twig_SimpleFilter\('([^']+)',#", $extension_file_contents, $matches)) {
      $drupal_filters = $matches[1];
    }
    $twig_filters = array_merge($twig_filters, $drupal_filters);
    foreach ($twig_filters as $filter) {
      // Add two default arguments and set to variadic so that filters with
      // named arguments will be whitelisted.
      // @see \TwigNode_Expression_Call::getArguments
      // @see \TwigNode_Expression_Call::call()
      $twig->addFilter(new \Twig_SimpleFilter($filter, function ($node = '', array $args = []) {}, [
        'is_variadic' => TRUE,
      ]));
    }

    // Get any custom defined Twig functions to be ignored by linter.
    $twig_functions = (array) $this->getConfigValue('validate.twig.functions');

    // Add Twig functions from Drupal TwigExtension to be ignored.
    $drupal_functions = [];
    if ($matches_count = preg_match_all("#new \\\\Twig_SimpleFunction\('([^']+)',#", $extension_file_contents, $matches)) {
      $drupal_functions = $matches[1];
    }
    $twig_functions = array_merge($twig_functions, $drupal_functions);
    foreach ($twig_functions as $function) {
      // Add default argument and set to variadic so that functions with named
      // arguments will be whitelisted.
      // @see \TwigNode_Expression_Call::getArguments
      // @see \TwigNode_Expression_Call::call()
      $twig->addFunction(new \Twig_SimpleFunction($function, function (array $args = []) {}, [
        'is_variadic' => TRUE,
      ]));
    }

    // Add Drupal Twig parser to include trans tag.
    $token_parser_filename = $repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigTransTokenParser.php';
    if (file_exists($token_parser_filename)) {
      require_once $token_parser_filename;
      $twig->addTokenParser(new TwigTransTokenParser());
    }

    $command = new TwigLintCommand();
    $command->setTwigEnvironment($twig);

    return $command;
  }
protected function createTwigLintCommand ( ) { $ twig = new Environment ( new FilesystemLoader ( ) ) ; $ repo_root = $ this -> getConfigValue ( 'repo.root' ) ; $ extension_file_contents = file_get_contents ( $ repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigExtension.php' ) ; // Get any custom defined Twig filters to be ignored by linter. $ twig_filters = ( array ) $ this -> getConfigValue ( 'validate.twig.filters' ) ; // Add Twig filters from Drupal TwigExtension to be ignored. $ drupal_filters = [ ] ; if ( $ matches_count = preg_match_all ( "#new \\\\Twig_SimpleFilter\('([^']+)',#" , $ extension_file_contents , $ matches ) ) { $ drupal_filters = $ matches [ 1 ] ; } $ twig_filters = array_merge ( $ twig_filters , $ drupal_filters ) ; foreach ( $ twig_filters as $ filter ) { // Add two default arguments and set to variadic so that filters with // named arguments will be whitelisted. // @see \TwigNode_Expression_Call::getArguments // @see \TwigNode_Expression_Call::call() $ twig -> addFilter ( new \ Twig_SimpleFilter ( $ filter , function ( $ node = '' , array $ args = [ ] ) { } , [ 'is_variadic' => TRUE , ] ) ) ; } // Get any custom defined Twig functions to be ignored by linter. $ twig_functions = ( array ) $ this -> getConfigValue ( 'validate.twig.functions' ) ; // Add Twig functions from Drupal TwigExtension to be ignored. $ drupal_functions = [ ] ; if ( $ matches_count = preg_match_all ( "#new \\\\Twig_SimpleFunction\('([^']+)',#" , $ extension_file_contents , $ matches ) ) { $ drupal_functions = $ matches [ 1 ] ; } $ twig_functions = array_merge ( $ twig_functions , $ drupal_functions ) ; foreach ( $ twig_functions as $ function ) { // Add default argument and set to variadic so that functions with named // arguments will be whitelisted. // @see \TwigNode_Expression_Call::getArguments // @see \TwigNode_Expression_Call::call() $ twig -> addFunction ( new \ Twig_SimpleFunction ( $ function , function ( array $ args = [ ] ) { } , [ 'is_variadic' => TRUE , ] ) ) ; } // Add Drupal Twig parser to include trans tag. $ token_parser_filename = $ repo_root . '/docroot/core/lib/Drupal/Core/Template/TwigTransTokenParser.php' ; if ( file_exists ( $ token_parser_filename ) ) { require_once $ token_parser_filename ; $ twig -> addTokenParser ( new TwigTransTokenParser ( ) ) ; } $ command = new TwigLintCommand ( ) ; $ command -> setTwigEnvironment ( $ twig ) ; return $ command ; }
Creates the Twig lint command.

@return \Symfony\Bridge\Twig\Command\LintCommand
Creates the Twig lint command .