private function extract($file, TwigFileExtractor $extractor = null) { if (!is_file($file = __DIR__ . '/Fixture/' . $file)) { throw new RuntimeException(sprintf('The file "%s" does not exist.', $file)); } $env = new \Twig_Environment(); $env->addExtension(new SymfonyTranslationExtension($translator = new IdentityTranslator(new MessageSelector()))); $env->addExtension(new TranslationExtension($translator, true)); $env->addExtension(new RoutingExtension(new UrlGenerator(new RouteCollection(), new RequestContext()))); $env->addExtension(new FormExtension(new TwigRenderer(new TwigRendererEngine()))); foreach ($env->getNodeVisitors() as $visitor) { if ($visitor instanceof DefaultApplyingNodeVisitor) { $visitor->setEnabled(false); } if ($visitor instanceof RemovingNodeVisitor) { $visitor->setEnabled(false); } } if (null === $extractor) { $extractor = new TwigFileExtractor($env); } $ast = $env->parse($env->tokenize(file_get_contents($file), $file)); $catalogue = new MessageCatalogue(); $extractor->visitTwigFile(new \SplFileInfo($file), $catalogue, $ast); return $catalogue; }
public function __construct(\Twig_Environment $twig, TwitalLoader $twitalLoader) { parent::__construct($twig); $this->twig = $twig; $this->twitalLoader = $twitalLoader; }