diff --git a/README.md b/README.md index 6c07d9b..66ff371 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,19 @@ This library is the heart of the popular [Graphgen web application](http://graph ### Download the library : ```bash -git clone https://github.com/neoxygen/neogen +git clone https://github.com/graphaware/neo4j-neogen cd neogen ``` +### Define your graph model in Cypher, refer to Graphgen for documentation reference : + +```cypher +(p:Person:User {uuid: uuid, dob:{dateTimeBetween:["-65years","-18 years"]}} *10) +(c:Company {name: company, slogan: catchPhrase} *5) +(p)-[:WORKS_AT *n..1]->(c) +``` + ### Define your graph model in YAML : ```yaml diff --git a/composer.json b/composer.json index 73084ec..848a7e3 100644 --- a/composer.json +++ b/composer.json @@ -1,29 +1,30 @@ { - "name": "neoxygen/neogen", + "name": "graphaware/neo4j-neogen", "type": "library", - "description": "Neo4j Graph generator for PHP5.4+", + "description": "Neo4j Graph generation engine", "keywords": [ "graph", "neo4j", - "generator" + "generation", + "faker" ], - "homepage": "http://neoxygen.io", + "homepage": "http://graphaware.com", "license": "MIT", "authors": [ { "name": "Christophe Willemsen", - "email": "chris@neoxygen.io" + "email": "christophe@graphaware.com" } ], "require": { "php": ">=5.4", "fzaninotto/faker": "~1.4", - "symfony/console": "~2.5", - "symfony/yaml": "~2.5", - "symfony/finder": "~2.5", - "symfony/dependency-injection": "~2.5", + "symfony/console": "~2.7", + "symfony/yaml": "~2.7", + "symfony/finder": "~2.7", + "symfony/dependency-injection": "~2.7", "doctrine/collections": "~1.2", - "neoxygen/neoclient": "~2.1", + "neoxygen/neoclient": "~3.0", "ikwattro/faker-extra": "~0.3", "jms/serializer": "~0.16" }, @@ -33,17 +34,14 @@ }, "autoload": { "psr-4": { - "Neoxygen\\Neogen\\": "src" + "Neoxygen\\Neogen\\": "src/", + "GraphAware\\Neogen\\": "src/" } }, "autoload-dev": { "psr-4": { - "Neoxygen\\Neogen\\Tests\\": "tests/Neoxygen/Neogen/Tests" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "Neoxygen\\Neogen\\Tests\\": "tests/Neoxygen/Neogen/Tests", + "GraphAware\\Neogen\\Tests\\": "tests/" } }, "bin": ["bin/neogen"] diff --git a/composer.lock b/composer.lock index 9443733..786c99c 100644 --- a/composer.lock +++ b/composer.lock @@ -1,23 +1,23 @@ { "_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", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "4de7deb4e887a530315a7b7a57297a8f", + "hash": "3e2b7e4af81d0432e8830ea0fc5340c4", "packages": [ { "name": "doctrine/annotations", - "version": "v1.2.4", + "version": "v1.2.7", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "b5202eb9e83f8db52e0e58867e0a46e63be8332e" + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/b5202eb9e83f8db52e0e58867e0a46e63be8332e", - "reference": "b5202eb9e83f8db52e0e58867e0a46e63be8332e", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", "shasum": "" }, "require": { @@ -72,7 +72,7 @@ "docblock", "parser" ], - "time": "2014-12-23 22:40:37" + "time": "2015-08-31 12:32:49" }, { "name": "doctrine/collections", @@ -196,16 +196,16 @@ }, { "name": "fzaninotto/faker", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "010c7efedd88bf31141a02719f51fb44c732d5a0" + "reference": "d0190b156bcca848d401fb80f31f504f37141c8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/010c7efedd88bf31141a02719f51fb44c732d5a0", - "reference": "010c7efedd88bf31141a02719f51fb44c732d5a0", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d", + "reference": "d0190b156bcca848d401fb80f31f504f37141c8d", "shasum": "" }, "require": { @@ -215,14 +215,18 @@ "phpunit/phpunit": "~4.0", "squizlabs/php_codesniffer": "~1.5" }, + "suggest": { + "ext-intl": "*" + }, "type": "library", "extra": { - "branch-alias": [] + "branch-alias": { + "dev-master": "1.5.x-dev" + } }, "autoload": { - "psr-0": { - "Faker": "src/", - "Faker\\PHPUnit": "test/" + "psr-4": { + "Faker\\": "src/Faker/" } }, "notification-url": "https://packagist.org/downloads/", @@ -240,48 +244,86 @@ "faker", "fixtures" ], - "time": "2014-06-04 14:43:02" + "time": "2015-05-29 06:29:14" + }, + { + "name": "graphaware/neo4j-response-formatter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/graphaware/neo4j-php-response-formatter.git", + "reference": "a1a1bbbd445163c5dc06e5e47a8fec07b344f903" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/graphaware/neo4j-php-response-formatter/zipball/a1a1bbbd445163c5dc06e5e47a8fec07b344f903", + "reference": "a1a1bbbd445163c5dc06e5e47a8fec07b344f903", + "shasum": "" + }, + "require": { + "psr/http-message": "^1.0" + }, + "require-dev": { + "neoxygen/neoclient": "^3.2", + "phpspec/prophecy": "^1.4", + "phpunit/phpunit": "^4.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GraphAware\\NeoClient\\Formatter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Willemsen", + "email": "christophe@graphaware.com" + } + ], + "description": "Response Formatter for NeoClient", + "time": "2015-08-06 21:11:14" }, { "name": "guzzlehttp/guzzle", - "version": "4.2.3", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "66fd916e9f9130bc22c51450476823391cb2f67c" + "reference": "a8dfeff00eb84616a17fea7a4d72af35e750410f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd916e9f9130bc22c51450476823391cb2f67c", - "reference": "66fd916e9f9130bc22c51450476823391cb2f67c", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a8dfeff00eb84616a17fea7a4d72af35e750410f", + "reference": "a8dfeff00eb84616a17fea7a4d72af35e750410f", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/streams": "~2.1", - "php": ">=5.4.0" + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "~1.1", + "php": ">=5.5.0" }, "require-dev": { "ext-curl": "*", "phpunit/phpunit": "~4.0", "psr/log": "~1.0" }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "6.0-dev" } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -294,7 +336,7 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", + "description": "Guzzle is a PHP HTTP client library", "homepage": "http://guzzlephp.org/", "keywords": [ "client", @@ -305,24 +347,24 @@ "rest", "web service" ], - "time": "2014-10-05 19:29:14" + "time": "2015-07-04 20:09:24" }, { - "name": "guzzlehttp/streams", - "version": "2.1.0", + "name": "guzzlehttp/promises", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/guzzle/streams.git", - "reference": "f91b721d73f0e561410903b3b3c90a5d0e40b534" + "url": "https://github.com/guzzle/promises.git", + "reference": "97fe7210def29451ec74923b27e552238defd75a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/f91b721d73f0e561410903b3b3c90a5d0e40b534", - "reference": "f91b721d73f0e561410903b3b3c90a5d0e40b534", + "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a", + "reference": "97fe7210def29451ec74923b27e552238defd75a", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.5.0" }, "require-dev": { "phpunit/phpunit": "~4.0" @@ -330,15 +372,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Stream\\": "src/" + "GuzzleHttp\\Promise\\": "src/" }, "files": [ - "src/functions.php" + "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -352,13 +394,69 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Provides a simple abstraction over streams of data (Guzzle 4+)", - "homepage": "http://guzzlephp.org/", + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2015-08-15 19:37:21" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", + "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", "keywords": [ - "Guzzle", - "stream" + "http", + "message", + "stream", + "uri" ], - "time": "2014-08-17 21:15:53" + "time": "2015-08-15 19:32:36" }, { "name": "ikwattro/faker-extra", @@ -564,16 +662,16 @@ }, { "name": "monolog/monolog", - "version": "1.13.1", + "version": "1.17.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac" + "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c31a2c4e8db5da8b46c74cf275d7f109c0f249ac", - "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0524c87587ab85bc4c2d6f5b41253ccb930a5422", + "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422", "shasum": "" }, "require": { @@ -584,12 +682,14 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "aws/aws-sdk-php": "~2.4, >2.4.8", + "aws/aws-sdk-php": "^2.4.9", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", - "phpunit/phpunit": "~4.0", - "raven/raven": "~0.5", - "ruflin/elastica": "0.90.*", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "raven/raven": "~0.11", + "ruflin/elastica": ">=0.90 <3.0", "swiftmailer/swiftmailer": "~5.3", "videlalvaro/php-amqplib": "~2.4" }, @@ -599,6 +699,7 @@ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", "ext-mongo": "Allow sending log messages to a MongoDB server", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "php-console/php-console": "Allow sending log messages to Google Chrome", "raven/raven": "Allow sending log messages to a Sentry server", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server", @@ -607,7 +708,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13.x-dev" + "dev-master": "1.16.x-dev" } }, "autoload": { @@ -633,31 +734,31 @@ "logging", "psr-3" ], - "time": "2015-03-09 09:58:04" + "time": "2015-08-31 09:17:37" }, { "name": "neoxygen/neoclient", - "version": "2.1.13", + "version": "3.3.10", "source": { "type": "git", "url": "https://github.com/neoxygen/neo4j-neoclient.git", - "reference": "6ec845e536dd9409f7b4ead836fe73369198ff29" + "reference": "57fbd2ab5b35c3e387eafe39d43ff95478b35f23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/neoxygen/neo4j-neoclient/zipball/6ec845e536dd9409f7b4ead836fe73369198ff29", - "reference": "6ec845e536dd9409f7b4ead836fe73369198ff29", + "url": "https://api.github.com/repos/neoxygen/neo4j-neoclient/zipball/57fbd2ab5b35c3e387eafe39d43ff95478b35f23", + "reference": "57fbd2ab5b35c3e387eafe39d43ff95478b35f23", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "4.*", + "graphaware/neo4j-response-formatter": "^1.0", + "guzzlehttp/guzzle": "^6.0", "monolog/monolog": "~1.1", - "php": ">= 5.4", - "symfony/config": "~2.5", - "symfony/console": "~2.5", - "symfony/dependency-injection": "~2.5", - "symfony/event-dispatcher": "~2.5", - "symfony/yaml": "~2.5" + "php": ">= 5.5", + "symfony/config": "^2.7", + "symfony/dependency-injection": "^2.7", + "symfony/event-dispatcher": "^2.7", + "symfony/yaml": "^2.7" }, "require-dev": { "behat/behat": "~3.0", @@ -668,7 +769,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -695,7 +796,7 @@ "high-availibility", "neo4j" ], - "time": "2015-04-25 20:25:46" + "time": "2015-08-04 23:37:18" }, { "name": "phpcollection/phpcollection", @@ -749,21 +850,24 @@ }, { "name": "phpoption/phpoption", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5" + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5d099bcf0393908bf4ad69cc47dafb785d51f7f5", - "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", "shasum": "" }, "require": { "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, "type": "library", "extra": { "branch-alias": { @@ -781,10 +885,8 @@ ], "authors": [ { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" } ], "description": "Option Type for PHP", @@ -794,7 +896,56 @@ "php", "type" ], - "time": "2014-01-09 22:37:17" + "time": "2015-07-25 16:39:46" + }, + { + "name": "psr/http-message", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2015-05-04 20:22:00" }, { "name": "psr/log", @@ -836,21 +987,20 @@ }, { "name": "symfony/config", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Config", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Config.git", - "reference": "d91be01336605db8da21b79bc771e46a7276d1bc" + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/d91be01336605db8da21b79bc771e46a7276d1bc", - "reference": "d91be01336605db8da21b79bc771e46a7276d1bc", + "url": "https://api.github.com/repos/symfony/Config/zipball/6c905bbed1e728226de656e4c07d620dfe9e80d9", + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9", "shasum": "" }, "require": { - "php": ">=5.3.3", + "php": ">=5.3.9", "symfony/filesystem": "~2.3" }, "require-dev": { @@ -859,11 +1009,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Config\\": "" } }, @@ -872,36 +1022,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Config Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" }, { "name": "symfony/console", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Console", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667" + "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/5b91dc4ed5eb08553f57f6df04c4730a73992667", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667", + "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e", + "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "psr/log": "~1.0", @@ -917,11 +1066,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Console\\": "" } }, @@ -930,36 +1079,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-28 15:18:12" }, { "name": "symfony/dependency-injection", - "version": "v2.6.6", - "target-dir": "Symfony/Component/DependencyInjection", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "8e9007012226b4bd41f8afed855c452cf5edc3a6" + "reference": "851e3ffe8a366b1590bdaf3df2c1395f2d27d8a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/8e9007012226b4bd41f8afed855c452cf5edc3a6", - "reference": "8e9007012226b4bd41f8afed855c452cf5edc3a6", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/851e3ffe8a366b1590bdaf3df2c1395f2d27d8a6", + "reference": "851e3ffe8a366b1590bdaf3df2c1395f2d27d8a6", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "conflict": { "symfony/expression-language": "<2.6" @@ -978,11 +1126,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" } }, @@ -991,36 +1139,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DependencyInjection Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-28 14:07:07" }, { "name": "symfony/event-dispatcher", - "version": "v2.6.6", - "target-dir": "Symfony/Component/EventDispatcher", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284" + "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/70f7c8478739ad21e3deef0d977b38c77f1fb284", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", + "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "psr/log": "~1.0", @@ -1037,11 +1184,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" } }, @@ -1050,36 +1197,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2015-03-13 17:37:22" + "homepage": "https://symfony.com", + "time": "2015-06-18 19:21:56" }, { "name": "symfony/filesystem", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Filesystem", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Filesystem.git", - "reference": "4983964b3693e4f13449cb3800c64a9112c301b4" + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/4983964b3693e4f13449cb3800c64a9112c301b4", - "reference": "4983964b3693e4f13449cb3800c64a9112c301b4", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "symfony/phpunit-bridge": "~2.7" @@ -1087,11 +1233,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Filesystem\\": "" } }, @@ -1100,36 +1246,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Filesystem Component", - "homepage": "http://symfony.com", - "time": "2015-03-22 16:55:57" + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" }, { "name": "symfony/finder", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Finder", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Finder.git", - "reference": "5dbe2e73a580618f5b4880fda93406eed25de251" + "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/5dbe2e73a580618f5b4880fda93406eed25de251", - "reference": "5dbe2e73a580618f5b4880fda93406eed25de251", + "url": "https://api.github.com/repos/symfony/Finder/zipball/ae0f363277485094edc04c9f3cbe595b183b78e4", + "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "symfony/phpunit-bridge": "~2.7" @@ -1137,11 +1282,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Finder\\": "" } }, @@ -1150,36 +1295,35 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Finder Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" }, { "name": "symfony/yaml", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Yaml", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4" + "reference": "71340e996171474a53f3d29111d046be4ad8a0ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/174f009ed36379a801109955fc5a71a49fe62dd4", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff", + "reference": "71340e996171474a53f3d29111d046be4ad8a0ff", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "symfony/phpunit-bridge": "~2.7" @@ -1187,11 +1331,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Yaml\\": "" } }, @@ -1200,33 +1344,33 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-28 14:07:07" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.0.4", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { @@ -1237,7 +1381,7 @@ "ext-pdo": "*", "ext-phar": "*", "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.*@ALPHA" + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { @@ -1246,8 +1390,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Instantiator\\": "src" + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1267,7 +1411,7 @@ "constructor", "instantiate" ], - "time": "2014-10-13 12:58:55" + "time": "2015-06-14 21:17:01" }, { "name": "phpdocumentor/reflection-docblock", @@ -1354,16 +1498,16 @@ }, { "name": "phpspec/phpspec", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "9727d75919a00455433e867565bc022f0b985a39" + "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/9727d75919a00455433e867565bc022f0b985a39", - "reference": "9727d75919a00455433e867565bc022f0b985a39", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/e9a40577323e67f1de2e214abf32976a0352d8f8", + "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8", "shasum": "" }, "require": { @@ -1428,20 +1572,20 @@ "testing", "tests" ], - "time": "2015-04-18 16:22:51" + "time": "2015-05-30 15:21:40" }, { "name": "phpspec/prophecy", - "version": "v1.4.1", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373" + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", - "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", "shasum": "" }, "require": { @@ -1488,20 +1632,20 @@ "spy", "stub" ], - "time": "2015-04-27 22:15:08" + "time": "2015-08-13 10:07:40" }, { "name": "phpunit/php-code-coverage", - "version": "2.0.16", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c" + "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/934fd03eb6840508231a7f73eb8940cf32c3b66c", - "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2d7c03c0e4e080901b8f33b2897b0577be18a13c", + "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c", "shasum": "" }, "require": { @@ -1509,7 +1653,7 @@ "phpunit/php-file-iterator": "~1.3", "phpunit/php-text-template": "~1.2", "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "~1.0", + "sebastian/environment": "^1.3.2", "sebastian/version": "~1.0" }, "require-dev": { @@ -1524,7 +1668,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { @@ -1550,20 +1694,20 @@ "testing", "xunit" ], - "time": "2015-04-11 04:35:00" + "time": "2015-08-04 03:42:39" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb" + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb", - "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", "shasum": "" }, "require": { @@ -1597,20 +1741,20 @@ "filesystem", "iterator" ], - "time": "2015-04-02 05:19:05" + "time": "2015-06-21 13:08:43" }, { "name": "phpunit/php-text-template", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { @@ -1619,20 +1763,17 @@ "type": "library", "autoload": { "classmap": [ - "Text/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1641,20 +1782,20 @@ "keywords": [ "template" ], - "time": "2014-01-30 17:20:04" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", - "version": "1.0.5", + "version": "1.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", "shasum": "" }, "require": { @@ -1663,13 +1804,10 @@ "type": "library", "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1685,20 +1823,20 @@ "keywords": [ "timer" ], - "time": "2013-08-02 07:42:54" + "time": "2015-06-21 08:01:12" }, { "name": "phpunit/php-token-stream", - "version": "1.4.1", + "version": "1.4.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "eab81d02569310739373308137284e0158424330" + "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330", - "reference": "eab81d02569310739373308137284e0158424330", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b", + "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b", "shasum": "" }, "require": { @@ -1734,20 +1872,20 @@ "keywords": [ "tokenizer" ], - "time": "2015-04-08 04:46:07" + "time": "2015-08-16 08:51:00" }, { "name": "phpunit/phpunit", - "version": "4.6.4", + "version": "4.8.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "163232991e652e6efed2f8470326fffa61e848e2" + "reference": "2246830f4a1a551c67933e4171bf2126dc29d357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/163232991e652e6efed2f8470326fffa61e848e2", - "reference": "163232991e652e6efed2f8470326fffa61e848e2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2246830f4a1a551c67933e4171bf2126dc29d357", + "reference": "2246830f4a1a551c67933e4171bf2126dc29d357", "shasum": "" }, "require": { @@ -1757,15 +1895,15 @@ "ext-reflection": "*", "ext-spl": "*", "php": ">=5.3.3", - "phpspec/prophecy": "~1.3,>=1.3.1", - "phpunit/php-code-coverage": "~2.0,>=2.0.11", + "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", + "phpunit/php-timer": ">=1.0.6", "phpunit/phpunit-mock-objects": "~2.3", "sebastian/comparator": "~1.1", "sebastian/diff": "~1.2", - "sebastian/environment": "~1.2", + "sebastian/environment": "~1.3", "sebastian/exporter": "~1.2", "sebastian/global-state": "~1.0", "sebastian/version": "~1.0", @@ -1780,7 +1918,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.6.x-dev" + "dev-master": "4.8.x-dev" } }, "autoload": { @@ -1806,26 +1944,27 @@ "testing", "xunit" ], - "time": "2015-04-11 05:23:21" + "time": "2015-08-24 04:09:38" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.3.1", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c" + "reference": "5e2645ad49d196e020b85598d7c97e482725786a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5e2645ad49d196e020b85598d7c97e482725786a", + "reference": "5e2645ad49d196e020b85598d7c97e482725786a", "shasum": "" }, "require": { - "doctrine/instantiator": "~1.0,>=1.0.2", + "doctrine/instantiator": "^1.0.2", "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" }, "require-dev": { "phpunit/phpunit": "~4.4" @@ -1861,20 +2000,20 @@ "mock", "xunit" ], - "time": "2015-04-02 05:36:41" + "time": "2015-08-19 09:14:08" }, { "name": "sebastian/comparator", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", "shasum": "" }, "require": { @@ -1888,7 +2027,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1925,7 +2064,7 @@ "compare", "equality" ], - "time": "2015-01-29 16:28:08" + "time": "2015-07-26 15:48:44" }, { "name": "sebastian/diff", @@ -1981,16 +2120,16 @@ }, { "name": "sebastian/environment", - "version": "1.2.2", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44", + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44", "shasum": "" }, "require": { @@ -2027,20 +2166,20 @@ "environment", "hhvm" ], - "time": "2015-01-01 10:01:08" + "time": "2015-08-03 06:14:51" }, { "name": "sebastian/exporter", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "84839970d05254c73cde183a721c7af13aede943" + "reference": "7ae5513327cb536431847bcc0c10edba2701064e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", - "reference": "84839970d05254c73cde183a721c7af13aede943", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e", "shasum": "" }, "require": { @@ -2093,7 +2232,7 @@ "export", "exporter" ], - "time": "2015-01-27 07:23:06" + "time": "2015-06-21 07:55:53" }, { "name": "sebastian/global-state", @@ -2148,16 +2287,16 @@ }, { "name": "sebastian/recursion-context", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", "shasum": "" }, "require": { @@ -2197,20 +2336,20 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-01-24 09:48:32" + "time": "2015-06-21 08:04:50" }, { "name": "sebastian/version", - "version": "1.0.5", + "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", "shasum": "" }, "type": "library", @@ -2232,25 +2371,24 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-02-24 06:35:25" + "time": "2015-06-21 13:59:46" }, { "name": "symfony/process", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Process", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/symfony/Process.git", - "reference": "a8bebaec1a9dc6cde53e0250e32917579b0be552" + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/a8bebaec1a9dc6cde53e0250e32917579b0be552", - "reference": "a8bebaec1a9dc6cde53e0250e32917579b0be552", + "url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3", + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "symfony/phpunit-bridge": "~2.7" @@ -2258,11 +2396,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Process\\": "" } }, @@ -2271,18 +2409,18 @@ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Process Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "homepage": "https://symfony.com", + "time": "2015-07-01 11:25:50" } ], "aliases": [], diff --git a/phpunit.xml b/phpunit.xml index 881a102..557d5fe 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -3,7 +3,7 @@ - ./tests/Neoxygen/Neogen + ./tests diff --git a/src/Exception/GenerationExceptionInterface.php b/src/Exception/GenerationExceptionInterface.php new file mode 100644 index 0000000..01dc6b2 --- /dev/null +++ b/src/Exception/GenerationExceptionInterface.php @@ -0,0 +1,5 @@ + $v) { + if ("" === $v) { + unset($array[$k]); + } + } + + return $array; + } +} \ No newline at end of file diff --git a/src/Parser/CypherDefinition.php b/src/Parser/CypherDefinition.php new file mode 100644 index 0000000..6784b98 --- /dev/null +++ b/src/Parser/CypherDefinition.php @@ -0,0 +1,38 @@ +parts; + } + + /** + * @return mixed + */ + public function getNodes() + { + return $this->nodes; + } + + /** + * @return mixed + */ + public function getEdges() + { + return $this->edges; + } + + +} \ No newline at end of file diff --git a/src/Parser/CypherPattern.php b/src/Parser/CypherPattern.php index c6f9659..c42fe51 100644 --- a/src/Parser/CypherPattern.php +++ b/src/Parser/CypherPattern.php @@ -1,17 +1,21 @@ ?)(?:\\[[^<^>.]*\\*[a-z0-9]+\\.\\.[a-z0-9]+\\])(?:?))/"; + /** + * + */ + const PROPERTY_KEY_VALIDATION_PATTERN = "/^[!\\?]?[a-z]+_?[a-z0-9]*$/"; + /** * */ @@ -137,6 +146,83 @@ public function parseLine($cypherLineText) return $parts; } + public function matchPattern($pattern) + { + if (preg_match(self::NODE_PATTERN, $pattern, $output)) { + return $this->getNodePatternDefintion($output, $pattern); + } elseif (preg_match(self::EDGE_PATTERN, $pattern, $output)) { + // + } + + throw new ParseException(sprintf('Unable to parse part "%s"', $pattern)); + + } + + public function getNodePatternDefintion(array $pregMatchOutput, $patternPart) + { + if (!array_key_exists(1, $pregMatchOutput) || empty($pregMatchOutput[1])) { + throw new ParseException(sprintf('A node identifier is mandatory, none given in "%s"', $patternPart)); + } + + $identifier = trim((string) $pregMatchOutput[1]); + + if (!array_key_exists(2, $pregMatchOutput) || empty($pregMatchOutput[2])) { + throw new ParseException(sprintf('At least one label is required in the pattern, none given in "%s"', $patternPart)); + } + + $defintion = new NodeDefinition($identifier); + + $labels = ArrayUtils::cleanEmptyStrings(explode(':', trim($pregMatchOutput[2]))); + foreach ($labels as $k => $label) { + $label = trim($label); + $model = null; + if (0 === strpos($label, '#')) { + $label = substr($label, 1); + $model = $label; + } + + $defintion->addLabel($label); + $defintion->addModel($model); + } + + if (array_key_exists(3, $pregMatchOutput)) { + $properties = Yaml::parse(trim($pregMatchOutput[3])); + foreach ($properties as $k => $v) { + if (!preg_match(self::PROPERTY_KEY_VALIDATION_PATTERN, $k, $out)) { + throw new ParseException(sprintf('The property key "%s" is not valid in part "%s"', $k, $patternPart)); + } + + if ($defintion->hasProperty($k)) { + throw new ParseException(sprintf('The property key "%s" can only be defined once in part "%s"', $k, $patternPart)); + } + + $defintion->addProperty($this->getPropertyDefinition($k, $v)); + } + } + + return $defintion; + } + + public function getPropertyDefinition($key, $generator) + { + $u = false; + $i = false; + if (0 === strpos($key, '!')) { + $u = true; + $key = substr($key, 1); + } elseif (0 === strpos($key, '?')) { + $i = true; + $key = substr($key, 1); + } + + return new PropertyDefinition($key, $generator, $i, $u); + } + + public function getEdgePatternDefinition(array $pregMatchOutput, $patternPart) + { + + } + /** * @param array $nodeInfo * @param null $part diff --git a/src/Parser/Definition/GraphDefinition.php b/src/Parser/Definition/GraphDefinition.php new file mode 100644 index 0000000..fef7b7f --- /dev/null +++ b/src/Parser/Definition/GraphDefinition.php @@ -0,0 +1,10 @@ +identifier = (string) $identifier; + } + + /** + * @param string $label + */ + public function addLabel($label) + { + $this->labels[] = $label; + } + + /** + * @param string $label + * @return bool + */ + public function hasLabel($label) + { + return in_array($label, $this->labels); + } + + /** + * @param string $model + */ + public function addModel($model) + { + if (null === $model) { return; } + $this->models[] = $model; + } + + /** + * @param \GraphAware\Neogen\Parser\Definition\PropertyDefinition $propertyDefinition + */ + public function addProperty(PropertyDefinition $propertyDefinition) + { + $this->properties[] = $propertyDefinition; + } + + /** + * @param string $key + * @return bool + */ + public function hasProperty($key) + { + foreach ($this->properties as $property) { + if ($key === $property->getKey()) { + return true; + } + } + + return false; + } + + /** + * @return string + */ + public function getIdentifier() + { + return $this->identifier; + } + + /** + * @return array + */ + public function getLabels() + { + return $this->labels; + } + + /** + * @return array + */ + public function getModels() + { + return $this->models; + } + + /** + * @return \GraphAware\Neogen\Parser\Definition\PropertyDefinition[] + */ + public function getProperties() + { + return $this->properties; + } + + +} \ No newline at end of file diff --git a/src/Parser/Definition/PropertyDefinition.php b/src/Parser/Definition/PropertyDefinition.php new file mode 100644 index 0000000..71fddbe --- /dev/null +++ b/src/Parser/Definition/PropertyDefinition.php @@ -0,0 +1,48 @@ +key = $key; + $this->generator = $generator; + $this->indexed = $indexed; + $this->unique = $unique; + } + + /** + * @return mixed + */ + public function getKey() + { + return $this->key; + } + + /** + * @return mixed + */ + public function getGenerator() + { + return $this->generator; + } + + public function isIndexed() + { + return $this->indexed; + } + + public function isUnique() + { + return $this->unique; + } +} \ No newline at end of file diff --git a/src/Parser/ParserInterface.php b/src/Parser/ParserInterface.php index 9190bd0..d7b092c 100644 --- a/src/Parser/ParserInterface.php +++ b/src/Parser/ParserInterface.php @@ -1,6 +1,6 @@ preFormatPattern($pattern); + $this->assertEquals("(a:Node)\n(b:Node)", $cleaned); + } + + public function testCommentedLinesAreStriped() + { + $parser = new CypherPattern(); + $pattern = "//(a:Node)-[:RELATES_TO]->(b)\n(b:Node)"; + $this->assertEquals("(b:Node)", $parser->preFormatPattern($pattern)); + } + + public function testLineIsParsedAndSplitted() + { + $parser = new CypherPattern(); + $pattern = "(a:Node)-[:RELATES_TO *n..n]->(b:Node)"; + $extract = $parser->parseLine($pattern); + $this->assertCount(3, $extract); + } + + public function testMatchNodePattern() + { + $parser = new CypherPattern(); + $str = '(a:Node:#SuperNode:Person {uuid: {randomNumber:[0,20]}} *100)'; + $definition = $parser->matchPattern($str); + + $this->assertEquals("a", $definition->getIdentifier()); + $this->assertCount(3, $definition->getLabels()); + $this->assertCount(1, $definition->getModels()); + } + + public function testIdentifierIsRequired() + { + $this->setExpectedException(ParseException::class); + $parser = new CypherPattern(); + $str = '(:Node *1)'; + $parser->matchPattern($str); + } + + public function testAtLeastOneLabelIsRequired() + { + $this->setExpectedException(ParseException::class); + $parser = new CypherPattern(); + $str = '(a *1)'; + $parser->matchPattern($str); + } + + public function testIndexMarkIsTaken() + { + $parser = new CypherPattern(); + $str = '(a:Node {?uuid: uuid})'; + $definition = $parser->matchPattern($str); + + $this->assertCount(1, $definition->getProperties()); + foreach ($definition->getProperties() as $prop) { + $this->assertTrue($prop->isIndexed()); + } + } + + public function testUniqueConstraintMarkIsTaken() + { + $parser = new CypherPattern(); + $str = '(a:Node {!uuid: uuid})'; + $definition = $parser->matchPattern($str); + + $this->assertCount(1, $definition->getProperties()); + foreach ($definition->getProperties() as $prop) { + $this->assertTrue($prop->isUnique()); + } + } + + public function testOtherMarkersThrowErrors() + { + $str = '(w:Node {;uuid: uuid})'; + $parser = new CypherPattern(); + $this->setExpectedException(ParseException::class); + $parser->matchPattern($str); + } + + public function testTacksAreNotAllowedInPropertyKeys() + { + $str = '(w:Node {uuid-v1: uuid})'; + $parser = new CypherPattern(); + $this->setExpectedException(ParseException::class); + $parser->matchPattern($str); + } + + public function testMarkersAreRemovedInPropertyKeys() + { + $str = '(w:Node {!uuid: uuid, ?name: word})'; + $parser = new CypherPattern(); + $definition = $parser->matchPattern($str); + $this->assertEquals('uuid', $definition->getProperties()[0]->getKey()); + $this->assertEquals('name', $definition->getProperties()[1]->getKey()); + } +} \ No newline at end of file