diff --git a/Command/GenerateBundleCommand.php b/Command/GenerateBundleCommand.php new file mode 100644 index 0000000..73e5b9d --- /dev/null +++ b/Command/GenerateBundleCommand.php @@ -0,0 +1,76 @@ +setName('profideo:generate-bundle'); + } + + /** + * @throws \RuntimeException When bundle can't be executed or not bundle is registered + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $container = $this->getContainer(); + + $bundle = $container->getParameter('profideo.generator_bundle'); + + if (empty($bundle)) { + throw new \RuntimeException('There is not bundle registered.'); + } + + $bundleName = $bundle['class_prefix'].ucfirst($bundle['name']).'Bundle'; + $namespace = $bundle['base_namespace'].'\\'.ucfirst($bundle['name']).'Bundle'; + + $generator = $this->getGenerator(); + $generator->setSkeletonDirs([__DIR__.'/../Resources/skeleton']); + $generator->generate($namespace, $bundleName, 'src', null, null, ['parent' => $bundle['parent']]); + + $output->writeln("Generating the bundle '$namespace\\$bundleName'". + (!empty($bundle['parent']) ? " as child of '{$bundle['parent']}'" : ''). + ' : OK'); + + $this->updateKernel($container->get('kernel'), $bundle['name'], "$namespace\\$bundleName"); + + $output->writeln("Enabling bundle '$namespace\\$bundleName' in AppKernel and disabling others that are". + " included in '{$bundle['base_namespace']}' : OK"); + } + + /** + * Add bundle in kernel class. + * + * @param KernelInterface $kernel + * @param string $bundle + */ + protected function updateKernel(KernelInterface $kernel, $name, $bundle) + { + $kernelManipulator = new KernelManipulator($kernel); + $kernelManipulator->addBundle($name, $bundle); + } + + /** + * Returns an instance of BundleGenerator. + * + * @return BundleGenerator + */ + protected function createGenerator() + { + return new BundleGenerator($this->getContainer()->get('filesystem')); + } +} diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php new file mode 100644 index 0000000..a4e8e89 --- /dev/null +++ b/DependencyInjection/Configuration.php @@ -0,0 +1,31 @@ +root('profideo_generator'); + + $rootNode + ->children() + ->scalarNode('name')->isRequired()->end() + ->scalarNode('base_namespace')->isRequired()->end() + ->scalarNode('parent')->defaultNull()->end() + ->scalarNode('class_prefix')->defaultNull()->end() + ->end(); + + return $treeBuilder; + } +} diff --git a/DependencyInjection/ProfideoGeneratorExtension.php b/DependencyInjection/ProfideoGeneratorExtension.php new file mode 100644 index 0000000..2b0b28e --- /dev/null +++ b/DependencyInjection/ProfideoGeneratorExtension.php @@ -0,0 +1,24 @@ +processConfiguration($configuration, $configs); + + $container->setParameter('profideo.generator_bundle', $config); + } +} diff --git a/Generator/BundleGenerator.php b/Generator/BundleGenerator.php new file mode 100644 index 0000000..0d3a5f2 --- /dev/null +++ b/Generator/BundleGenerator.php @@ -0,0 +1,34 @@ + $namespace, 'bundle' => $bundle, 'parent' => null]; + + $this->renderFile('Bundle.php.twig', $dir.'/'.$bundle.'.php', $parameters); + } +} diff --git a/Manipulator/KernelManipulator.php b/Manipulator/KernelManipulator.php new file mode 100644 index 0000000..dbf0097 --- /dev/null +++ b/Manipulator/KernelManipulator.php @@ -0,0 +1,115 @@ +kernel = $kernel; + $this->reflected = new \ReflectionObject($kernel); + } + + /** + * Add bundle in method getGeneratedBundle of kernel. If method getGeneratedBundle does not exist, it is created. + */ + public function addBundle($name, $class) + { + if (!$this->reflected->getFilename()) { + return false; + } + + try { + $method = $this->reflected->getMethod('getGeneratedBundle'); + } catch (\ReflectionException $e) { + // getGeneratedBundle method does not exist, creates it and adds new bundle in it + file_put_contents( + $this->reflected->getFilename(), + str_replace( + ' public function registerBundles()', + ' private function getGeneratedBundle($name)'.PHP_EOL. + ' {'.PHP_EOL. + ' $bundles = array('.PHP_EOL. + " '$name' => new $class(),".PHP_EOL. + ' );'.PHP_EOL. + PHP_EOL. + ' return isset($bundles[$name]) ? $bundles[$name] : null;'.PHP_EOL. + ' }'.PHP_EOL. + PHP_EOL. + ' public function registerBundles()', + file_get_contents($this->reflected->getFilename()) + ) + ); + + return true; + } + + // Adds new bundle in getGeneratedBundle method + + $src = file($this->reflected->getFilename()); + $lines = array_slice($src, $method->getStartLine() - 1, $method->getEndLine() - $method->getStartLine() + 1); + + // Don't add same bundle twice + if (false !== strpos(implode('', $lines), $class)) { + throw new \RuntimeException(sprintf('Bundle "%s" is already defined in "AppKernel::getGeneratedBundle()".', $class)); + } + + $this->setCode(token_get_all('getStartLine()); + while ($token = $this->next()) { + // $bundles + if (T_VARIABLE !== $token[0] || '$bundles' !== $token[1]) { + continue; + } + + // = + $this->next(); + + // array start with traditional or short syntax + $token = $this->next(); + if (T_ARRAY !== $token[0] && '[' !== $this->value($token)) { + return false; + } + + // add the bundle at the end of the array + while ($token = $this->next()) { + // look for ); or ]; + if (')' !== $this->value($token) && ']' !== $this->value($token)) { + continue; + } + + if (';' !== $this->value($this->peek())) { + continue; + } + + // ; + $this->next(); + + $lines = array_merge( + array_slice($src, 0, $this->line - 2), + // Appends a separator comma to the current last position of the array + array(rtrim(rtrim($src[$this->line - 2]), ',').','.PHP_EOL), + array(sprintf(" '$name' => new %s(),".PHP_EOL, $class)), + array_slice($src, $this->line - 1) + ); + + file_put_contents($this->reflected->getFilename(), implode('', $lines)); + + return true; + } + } + } +} diff --git a/ProfideoGeneratorBundle.php b/ProfideoGeneratorBundle.php new file mode 100644 index 0000000..9582a52 --- /dev/null +++ b/ProfideoGeneratorBundle.php @@ -0,0 +1,13 @@ +getContainer(); + $container->setParameter('profideo.generator_bundle', $configs); + + list($namespace, $bundle, $dir, $format, $structure, $parameters) = $expected; + + $generator = $this + ->getMockBuilder('Profideo\GeneratorBundle\Generator\BundleGenerator') + ->disableOriginalConstructor() + ->setMethods(array('generate')) + ->getMock() + ; + $generator + ->expects($this->once()) + ->method('generate') + ->with($namespace, $bundle, $dir, $format, $structure, $parameters) + ; + + $command = $this + ->getMockBuilder('Profideo\GeneratorBundle\Command\GenerateBundleCommand') + ->setMethods(['updateKernel']) + ->getMock() + ; + + $command->setGenerator($generator); + $command->setContainer($container); + + (new CommandTester($command))->execute([]); + } + + public function getTestGenerateBundleCommandData() + { + return [ + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => null, + 'class_prefix' => 'PrefixTest', + ], + [ + 'TestNameSpace\BundleTestBundle', + 'PrefixTestBundleTestBundle', + 'src', + null, + null, + ['parent' => null], + ], + ], + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => 'ParentBundleTest', + 'class_prefix' => null, + ], + [ + 'TestNameSpace\BundleTestBundle', + 'BundleTestBundle', + 'src', + null, + null, + ['parent' => 'ParentBundleTest'], + ], + ], + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => 'ParentBundleTest', + 'class_prefix' => 'PrefixTest', + ], + [ + 'TestNameSpace\BundleTestBundle', + 'PrefixTestBundleTestBundle', + 'src', + null, + null, + ['parent' => 'ParentBundleTest'], + ], + ], + ]; + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage There is not bundle registered. + */ + public function testGenerateBundleCommandException() + { + $container = $this->getContainer(); + $container->setParameter('profideo.generator_bundle', []); + + $command = new GenerateBundleCommand(); + $command->setContainer($container); + + (new CommandTester($command))->execute([]); + } +} diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php new file mode 100644 index 0000000..3403862 --- /dev/null +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -0,0 +1,113 @@ +getContainer(); + $container->setParameter('profideo.generator_bundle', $configs); + + list($namespace, $bundle, $dir, $format, $structure, $parameters) = $expected; + + $generator = $this + ->getMockBuilder('Profideo\GeneratorBundle\Generator\BundleGenerator') + ->disableOriginalConstructor() + ->setMethods(array('generate')) + ->getMock() + ; + $generator + ->expects($this->once()) + ->method('generate') + ->with($namespace, $bundle, $dir, $format, $structure, $parameters) + ; + + $command = $this + ->getMockBuilder('Profideo\GeneratorBundle\Command\GenerateBundleCommand') + ->setMethods(['updateKernel']) + ->getMock() + ; + + $command->setGenerator($generator); + $command->setContainer($container); + + (new CommandTester($command))->execute([]); + } + + public function getGenerateBundleCommandData() + { + return [ + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => null, + 'class_prefix' => 'PrefixTest', + ], + [ + 'TestNameSpace\BundleTestBundle', + 'PrefixTestBundleTestBundle', + 'src', + null, + null, + ['parent' => null], + ], + ], + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => 'ParentBundleTest', + 'class_prefix' => null, + ], + [ + 'TestNameSpace\BundleTestBundle', + 'BundleTestBundle', + 'src', + null, + null, + ['parent' => 'ParentBundleTest'], + ], + ], + [ + [ + 'name' => 'bundleTest', + 'base_namespace' => 'TestNameSpace', + 'parent' => 'ParentBundleTest', + 'class_prefix' => 'PrefixTest', + ], + [ + 'TestNameSpace\BundleTestBundle', + 'PrefixTestBundleTestBundle', + 'src', + null, + null, + ['parent' => 'ParentBundleTest'], + ], + ], + ]; + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage There is not bundle registered. + */ + public function testGenerateBundleCommandException() + { + $container = $this->getContainer(); + $container->setParameter('profideo.generator_bundle', []); + + $command = new GenerateBundleCommand(); + $command->setContainer($container); + + (new CommandTester($command))->execute([]); + } +} diff --git a/Tests/Generator/BundleGeneratorTest.php b/Tests/Generator/BundleGeneratorTest.php new file mode 100644 index 0000000..b593b85 --- /dev/null +++ b/Tests/Generator/BundleGeneratorTest.php @@ -0,0 +1,98 @@ +tmpDir = sys_get_temp_dir().'/bundle-generator-tests'; + $this->filesystem = new Filesystem(); + $this->filesystem->remove($this->tmpDir); + } + + public function tearDown() + { + $this->filesystem->remove($this->tmpDir); + } + + public function testGenerateWithoutParent() + { + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null); + $this->assertTrue(file_exists($this->tmpDir.'/Foo/BarBundle/FooBarBundle.php'), 'FooBarBundle.php has been generated'); + + $content = file_get_contents($this->tmpDir.'/Foo/BarBundle/FooBarBundle.php'); + $this->assertContains('namespace Foo\\BarBundle', $content); + $this->assertNotContains('public function getParent()', $content); + } + + public function testGenerateWithParent() + { + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null, ['parent' => 'Baz']); + $this->assertTrue(file_exists($this->tmpDir.'/Foo/BarBundle/FooBarBundle.php'), 'FooBarBundle.php has been generated'); + + $content = file_get_contents($this->tmpDir.'/Foo/BarBundle/FooBarBundle.php'); + $this->assertContains('public function getParent()', $content); + } + + public function testDirIsFile() + { + $this->filesystem->mkdir($this->tmpDir.'/Foo'); + $this->filesystem->touch($this->tmpDir.'/Foo/BarBundle'); + + try { + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null); + $this->fail('An exception was expected!'); + } catch (\RuntimeException $e) { + $this->assertEquals('Unable to generate the bundle as the target directory "'.realpath($this->tmpDir.'/Foo/BarBundle').'" exists but is a file.', $e->getMessage()); + } + } + + public function testIsNotWritableDir() + { + $this->filesystem->mkdir($this->tmpDir.'/Foo/BarBundle'); + $this->filesystem->chmod($this->tmpDir.'/Foo/BarBundle', 0444); + + try { + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null); + $this->fail('An exception was expected!'); + } catch (\RuntimeException $e) { + $this->filesystem->chmod($this->tmpDir.'/Foo/BarBundle', 0777); + $this->assertEquals('Unable to generate the bundle as the target directory "'.realpath($this->tmpDir.'/Foo/BarBundle').'" is not writable.', $e->getMessage()); + } + } + + public function testIsNotEmptyDir() + { + $this->filesystem->mkdir($this->tmpDir.'/Foo/BarBundle'); + $this->filesystem->touch($this->tmpDir.'/Foo/BarBundle/somefile'); + + try { + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null); + $this->fail('An exception was expected!'); + } catch (\RuntimeException $e) { + $this->filesystem->chmod($this->tmpDir.'/Foo/BarBundle', 0777); + $this->assertEquals('Unable to generate the bundle as the target directory "'.realpath($this->tmpDir.'/Foo/BarBundle').'" is not empty.', $e->getMessage()); + } + } + + public function testExistingEmptyDirIsFine() + { + $this->filesystem->mkdir($this->tmpDir.'/Foo/BarBundle'); + + $this->getGenerator()->generate('Foo\BarBundle', 'FooBarBundle', $this->tmpDir, null, null); + } + + protected function getGenerator() + { + $generator = new BundleGenerator($this->filesystem); + $generator->setSkeletonDirs(__DIR__.'/../../Resources/skeleton'); + + return $generator; + } +} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..a5777ad --- /dev/null +++ b/composer.json @@ -0,0 +1,20 @@ +{ + "name": "profideo/generator-bundle", + "require": { + "php": ">=5.4", + "sensio/generator-bundle": "~2.3" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*", + "twig/twig": "~1.11" + }, + "autoload": { + "psr-0": { + "Profideo\\GeneratorBundle": "" + } + }, + "target-dir": "Profideo/GeneratorBundle", + "config": { + "bin-dir": "bin" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..1e23f90 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2191 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "200946129d63a6a493eae14de95b7fe5", + "packages": [ + { + "name": "doctrine/annotations", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-08-31 12:32:49" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09 13:34:57" + }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" + }, + { + "name": "sensio/generator-bundle", + "version": "v2.5.3", + "target-dir": "Sensio/Bundle/GeneratorBundle", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", + "reference": "e50108c2133ee5c9c484555faed50c17a61221d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/e50108c2133ee5c9c484555faed50c17a61221d3", + "reference": "e50108c2133ee5c9c484555faed50c17a61221d3", + "shasum": "" + }, + "require": { + "symfony/console": "~2.5", + "symfony/framework-bundle": "~2.2" + }, + "require-dev": { + "doctrine/orm": "~2.2,>=2.2.3", + "symfony/doctrine-bridge": "~2.2", + "twig/twig": "~1.11" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Sensio\\Bundle\\GeneratorBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle generates code for you", + "time": "2015-03-17 06:36:52" + }, + { + "name": "symfony/asset", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "290cc813d01532de9a04884f32f300b67eb3b84d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/290cc813d01532de9a04884f32f300b67eb3b84d", + "reference": "290cc813d01532de9a04884f32f300b67eb3b84d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/http-foundation": "~2.4", + "symfony/phpunit-bridge": "~2.7" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Asset Component", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:13:45" + }, + { + "name": "symfony/config", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Config.git", + "reference": "5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Config/zipball/5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8", + "reference": "5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2015-08-27 06:45:45" + }, + { + "name": "symfony/console", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Console.git", + "reference": "9ff9032151186bd66ecee727d728f1319f52d1d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Console/zipball/9ff9032151186bd66ecee727d728f1319f52d1d8", + "reference": "9ff9032151186bd66ecee727d728f1319f52d1d8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.1" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2015-09-03 11:40:38" + }, + { + "name": "symfony/debug", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Debug.git", + "reference": "726bf9651d29f53243281d0b6418cfaa5e318281" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Debug/zipball/726bf9651d29f53243281d0b6418cfaa5e318281", + "reference": "726bf9651d29f53243281d0b6418cfaa5e318281", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.2", + "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2", + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2015-08-29 11:12:16" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/DependencyInjection.git", + "reference": "c0a3a97b9450d77cd8eff81c5825efb3624c255b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/c0a3a97b9450d77cd8eff81c5825efb3624c255b", + "reference": "c0a3a97b9450d77cd8eff81c5825efb3624c255b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2", + "symfony/expression-language": "~2.6", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.1" + }, + "suggest": { + "symfony/config": "", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:16:32" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "b58c916f1db03a611b72dd702564f30ad8fe83fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/b58c916f1db03a611b72dd702564f30ad8fe83fa", + "reference": "b58c916f1db03a611b72dd702564f30ad8fe83fa", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5", + "symfony/dependency-injection": "~2.6", + "symfony/expression-language": "~2.6", + "symfony/phpunit-bridge": "~2.7", + "symfony/stopwatch": "~2.3" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:13:45" + }, + { + "name": "symfony/filesystem", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Filesystem.git", + "reference": "f079e9933799929584200b9a926f72f29e291654" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/f079e9933799929584200b9a926f72f29e291654", + "reference": "f079e9933799929584200b9a926f72f29e291654", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2015-08-27 07:03:44" + }, + { + "name": "symfony/framework-bundle", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/FrameworkBundle.git", + "reference": "5c2a5e8bf1f47a917714877eb17bb5b5add2796f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/FrameworkBundle/zipball/5c2a5e8bf1f47a917714877eb17bb5b5add2796f", + "reference": "5c2a5e8bf1f47a917714877eb17bb5b5add2796f", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.0", + "php": ">=5.3.9", + "symfony/asset": "~2.7", + "symfony/config": "~2.4", + "symfony/dependency-injection": "~2.6,>=2.6.2", + "symfony/event-dispatcher": "~2.5", + "symfony/filesystem": "~2.3", + "symfony/http-foundation": "~2.4.9|~2.5,>=2.5.4", + "symfony/http-kernel": "~2.7", + "symfony/routing": "~2.6,>2.6.4", + "symfony/security-core": "~2.6", + "symfony/security-csrf": "~2.6", + "symfony/stopwatch": "~2.3", + "symfony/templating": "~2.1", + "symfony/translation": "~2.7" + }, + "require-dev": { + "symfony/browser-kit": "~2.4", + "symfony/class-loader": "~2.1", + "symfony/console": "~2.7", + "symfony/css-selector": "~2.0,>=2.0.5", + "symfony/dom-crawler": "~2.0,>=2.0.5", + "symfony/expression-language": "~2.6", + "symfony/finder": "~2.0,>=2.0.5", + "symfony/form": "~2.7,>=2.7.2", + "symfony/intl": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.0,>=2.0.5", + "symfony/security": "~2.6", + "symfony/validator": "~2.5", + "symfony/yaml": "~2.0,>=2.0.5" + }, + "suggest": { + "doctrine/cache": "For using alternative cache drivers", + "symfony/console": "For using the console commands", + "symfony/finder": "For using the translation loader and cache warmer", + "symfony/form": "For using forms", + "symfony/validator": "For using validation", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony FrameworkBundle", + "homepage": "https://symfony.com", + "time": "2015-09-03 11:40:38" + }, + { + "name": "symfony/http-foundation", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpFoundation.git", + "reference": "7253c2041652353e71560bbd300d6256d170ddaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/7253c2041652353e71560bbd300d6256d170ddaf", + "reference": "7253c2041652353e71560bbd300d6256d170ddaf", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/expression-language": "~2.4", + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2015-08-27 06:45:45" + }, + { + "name": "symfony/http-kernel", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpKernel.git", + "reference": "fd9c7af92c9e3ade1327cc3af10b17731eebc4a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/fd9c7af92c9e3ade1327cc3af10b17731eebc4a7", + "reference": "fd9c7af92c9e3ade1327cc3af10b17731eebc4a7", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/debug": "~2.6,>=2.6.2", + "symfony/event-dispatcher": "~2.6,>=2.6.7", + "symfony/http-foundation": "~2.5,>=2.5.4" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "symfony/browser-kit": "~2.3", + "symfony/class-loader": "~2.1", + "symfony/config": "~2.7", + "symfony/console": "~2.3", + "symfony/css-selector": "~2.0,>=2.0.5", + "symfony/dependency-injection": "~2.2", + "symfony/dom-crawler": "~2.0,>=2.0.5", + "symfony/expression-language": "~2.4", + "symfony/finder": "~2.0,>=2.0.5", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.0,>=2.0.5", + "symfony/routing": "~2.2", + "symfony/stopwatch": "~2.3", + "symfony/templating": "~2.2", + "symfony/translation": "~2.0,>=2.0.5", + "symfony/var-dumper": "~2.6" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2015-09-08 14:26:39" + }, + { + "name": "symfony/routing", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Routing.git", + "reference": "20b1378cb6efffb77ea0608232f18c8f0dd25109" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Routing/zipball/20b1378cb6efffb77ea0608232f18c8f0dd25109", + "reference": "20b1378cb6efffb77ea0608232f18c8f0dd25109", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.0,>=2.0.5" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2015-08-24 07:13:45" + }, + { + "name": "symfony/security-core", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "fba105731ce43dcb512ace74c82b72d042b6938c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fba105731ce43dcb512ace74c82b72d042b6938c", + "reference": "fba105731ce43dcb512ace74c82b72d042b6938c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "ircmaxell/password-compat": "1.0.*", + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/expression-language": "~2.6", + "symfony/http-foundation": "~2.4", + "symfony/phpunit-bridge": "~2.7", + "symfony/translation": "~2.0,>=2.0.5", + "symfony/validator": "~2.5,>=2.5.5" + }, + "suggest": { + "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "time": "2015-08-30 11:26:29" + }, + { + "name": "symfony/security-csrf", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "238d6aea56008bfeae16cb9703d52b123582288b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/238d6aea56008bfeae16cb9703d52b123582288b", + "reference": "238d6aea56008bfeae16cb9703d52b123582288b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/security-core": "~2.4" + }, + "require-dev": { + "symfony/http-foundation": "~2.1", + "symfony/phpunit-bridge": "~2.7" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:13:45" + }, + { + "name": "symfony/stopwatch", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Stopwatch.git", + "reference": "abc61bac76fb10ffa2c6373d7932bc35190dbf3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/abc61bac76fb10ffa2c6373d7932bc35190dbf3b", + "reference": "abc61bac76fb10ffa2c6373d7932bc35190dbf3b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:13:45" + }, + { + "name": "symfony/templating", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Templating.git", + "reference": "cb1b7421c53642bc515bc10caa81cc097775d6a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Templating/zipball/cb1b7421c53642bc515bc10caa81cc097775d6a1", + "reference": "cb1b7421c53642bc515bc10caa81cc097775d6a1", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/phpunit-bridge": "~2.7" + }, + "suggest": { + "psr/log": "For using debug logging in loaders" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Templating\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Templating Component", + "homepage": "https://symfony.com", + "time": "2015-08-30 11:26:29" + }, + { + "name": "symfony/translation", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "485877661835e188cd78345c6d4eef1290d17571" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/485877661835e188cd78345c6d4eef1290d17571", + "reference": "485877661835e188cd78345c6d4eef1290d17571", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/intl": "~2.4", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.2" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2015-09-06 08:36:38" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03 12:10:50" + }, + { + "name": "phpspec/prophecy", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2015-08-13 10:07:40" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef1ca6835468857944d5c3b48fa503d5554cff2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef1ca6835468857944d5c3b48fa503d5554cff2f", + "reference": "ef1ca6835468857944d5c3b48fa503d5554cff2f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-09-14 06:51:16" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2015-06-21 13:08:43" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2015-06-21 08:01:12" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-09-15 10:49:45" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "521720279261e5b14799cf1bb895d4b55e516f26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/521720279261e5b14799cf1bb895d4b55e516f26", + "reference": "521720279261e5b14799cf1bb895d4b55e516f26", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": ">=1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-09-19 05:44:37" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "5e2645ad49d196e020b85598d7c97e482725786a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5e2645ad49d196e020b85598d7c97e482725786a", + "reference": "5e2645ad49d196e020b85598d7c97e482725786a", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-08-19 09:14:08" + }, + { + "name": "sebastian/comparator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-07-26 15:48:44" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44", + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2015-08-03 06:14:51" + }, + { + "name": "sebastian/exporter", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-06-21 07:55:53" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-06-21 08:04:50" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21 13:59:46" + }, + { + "name": "symfony/yaml", + "version": "v2.7.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "2dc7b06c065df96cc686c66da2705e5e18aef661" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/2dc7b06c065df96cc686c66da2705e5e18aef661", + "reference": "2dc7b06c065df96cc686c66da2705e5e18aef661", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2015-08-24 07:13:45" + }, + { + "name": "twig/twig", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "b7fc2469fa009897871fb95b68237286fc54a5ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b7fc2469fa009897871fb95b68237286fc54a5ad", + "reference": "b7fc2469fa009897871fb95b68237286fc54a5ad", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.22-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2015-09-15 06:50:16" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/composer.phar b/composer.phar new file mode 100755 index 0000000..61b8202 Binary files /dev/null and b/composer.phar differ diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..6c37a74 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,20 @@ + + + + + + ./Tests + + + + + + ./ + + ./Resources + ./Tests + ./vendor + + + +