From f3b2db48c4dc5f1900c1bce91fb97eef1601a1bd Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 13 Jan 2017 12:34:10 -0500 Subject: [PATCH 1/3] - Add new dependency library used to parse CSS rules --- composer.json | 5 +- composer.lock | 606 ++++++++++++++++++++++++++++---------------------- 2 files changed, 338 insertions(+), 273 deletions(-) diff --git a/composer.json b/composer.json index 6a4e9da4bf..210f6d8677 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ "swiftmailer/swiftmailer": "^5.4", "mtdowling/cron-expression": "^1.1", "nesbot/carbon": "^1.21", - "soundasleep/html2text": "dev-master" + "soundasleep/html2text": "dev-master", + "sabberworm/php-css-parser": "^8.1" }, "require-dev": { "codeception/codeception": "*", @@ -37,4 +38,4 @@ "post-update-cmd": "rm -rf vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility; cp -rpd vendor/wimg/php-compatibility vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility", "post-install-cmd": "rm -rf vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility; cp -rpd vendor/wimg/php-compatibility vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility" } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index 3055bfe895..9581a87ed3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "e8223df05e8c7f0c75105abbe043ee94", - "content-hash": "e09f91e3cdca555795f3a5d0b781bc06", + "content-hash": "39dc3fd969f863f3889e4056c976476e", "packages": [ { "name": "cerdic/css-tidy", @@ -38,25 +37,28 @@ } ], "description": "CSSTidy is a CSS minifier", - "time": "2015-11-28 21:47:43" + "time": "2015-11-28T21:47:43+00:00" }, { "name": "j4mie/idiorm", - "version": "v1.5.1", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/j4mie/idiorm.git", - "reference": "b0922d8719a94e3a0e0e4a0ca3876f4f91475dcf" + "reference": "00b5fcd6e615a8572577eae401f80e41525efd5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j4mie/idiorm/zipball/b0922d8719a94e3a0e0e4a0ca3876f4f91475dcf", - "reference": "b0922d8719a94e3a0e0e4a0ca3876f4f91475dcf", + "url": "https://api.github.com/repos/j4mie/idiorm/zipball/00b5fcd6e615a8572577eae401f80e41525efd5e", + "reference": "00b5fcd6e615a8572577eae401f80e41525efd5e", "shasum": "" }, "require": { "php": ">=5.2.0" }, + "require-dev": { + "phpunit/phpunit": "^5.6" + }, "type": "library", "autoload": { "classmap": [ @@ -96,7 +98,7 @@ "orm", "query builder" ], - "time": "2014-06-23 13:08:57" + "time": "2016-12-14T06:28:26+00:00" }, { "name": "j4mie/paris", @@ -156,7 +158,7 @@ "orm", "paris" ], - "time": "2014-09-23 10:49:36" + "time": "2014-09-23T10:49:36+00:00" }, { "name": "mtdowling/cron-expression", @@ -200,7 +202,7 @@ "cron", "schedule" ], - "time": "2016-01-26 21:23:30" + "time": "2016-01-26T21:23:30+00:00" }, { "name": "nesbot/carbon", @@ -247,7 +249,51 @@ "datetime", "time" ], - "time": "2015-11-04 20:07:17" + "time": "2015-11-04T20:07:17+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "8.1.0", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Sabberworm\\CSS": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "time": "2016-07-19T19:14:21+00:00" }, { "name": "soundasleep/html2text", @@ -300,27 +346,28 @@ "email": "support@jevon.org", "source": "https://github.com/mailpoet/html2text/tree/master" }, - "time": "2016-07-28 01:09:53" + "time": "2016-07-28T01:09:53+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.3", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153" + "reference": "cd142238a339459b10da3d8234220963f392540c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/cd142238a339459b10da3d8234220963f392540c", + "reference": "cd142238a339459b10da3d8234220963f392540c", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "mockery/mockery": "~0.9.1" + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" }, "type": "library", "extra": { @@ -353,20 +400,20 @@ "mail", "mailer" ], - "time": "2016-07-08 11:51:25" + "time": "2016-12-29T10:02:40+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "dff51f72b0706335131b00a7f49606168c582594" + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", - "reference": "dff51f72b0706335131b00a7f49606168c582594", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", "shasum": "" }, "require": { @@ -378,7 +425,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -412,20 +459,20 @@ "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2016-11-14T01:06:16+00:00" }, { "name": "symfony/translation", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "cca6ff892355876534b01a927f789bac9601c935" + "reference": "b4ac4a393f6970cc157fba17be537380de396a86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/cca6ff892355876534b01a927f789bac9601c935", - "reference": "cca6ff892355876534b01a927f789bac9601c935", + "url": "https://api.github.com/repos/symfony/translation/zipball/b4ac4a393f6970cc157fba17be537380de396a86", + "reference": "b4ac4a393f6970cc157fba17be537380de396a86", "shasum": "" }, "require": { @@ -476,7 +523,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2016-10-18 04:28:30" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "tburry/pquery", @@ -528,20 +575,20 @@ "ganon", "php" ], - "time": "2016-01-14 20:55:00" + "time": "2016-01-14T20:55:00+00:00" }, { "name": "twig/twig", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3c6c0033fd3b5679c6e1cb60f4f9766c2b424d97" + "reference": "ddc9e3e20ee9c0b6908f401ac8353635b750eca7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3c6c0033fd3b5679c6e1cb60f4f9766c2b424d97", - "reference": "3c6c0033fd3b5679c6e1cb60f4f9766c2b424d97", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ddc9e3e20ee9c0b6908f401ac8353635b750eca7", + "reference": "ddc9e3e20ee9c0b6908f401ac8353635b750eca7", "shasum": "" }, "require": { @@ -549,12 +596,12 @@ }, "require-dev": { "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~2.7" + "symfony/phpunit-bridge": "~3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.27-dev" + "dev-master": "1.31-dev" } }, "autoload": { @@ -589,7 +636,7 @@ "keywords": [ "templating" ], - "time": "2016-10-25 19:17:17" + "time": "2017-01-11T19:36:15+00:00" } ], "packages-dev": [ @@ -650,20 +697,20 @@ "gherkin", "parser" ], - "time": "2016-10-30 11:50:56" + "time": "2016-10-30T11:50:56+00:00" }, { "name": "codeception/codeception", - "version": "2.2.6", + "version": "2.2.7", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "5fbe312c8138e71458ec1e715b0ce262331ca5a2" + "reference": "86770e89d266557c20dd0b1de5390e706f4770c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/5fbe312c8138e71458ec1e715b0ce262331ca5a2", - "reference": "5fbe312c8138e71458ec1e715b0ce262331ca5a2", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/86770e89d266557c20dd0b1de5390e706f4770c1", + "reference": "86770e89d266557c20dd0b1de5390e706f4770c1", "shasum": "" }, "require": { @@ -681,7 +728,7 @@ "symfony/browser-kit": ">=2.7 <4.0", "symfony/console": ">=2.7 <4.0", "symfony/css-selector": ">=2.7 <4.0", - "symfony/dom-crawler": ">=2.7 <4.0", + "symfony/dom-crawler": ">=2.7.5 <4.0", "symfony/event-dispatcher": ">=2.7 <4.0", "symfony/finder": ">=2.7 <4.0", "symfony/yaml": ">=2.7 <4.0" @@ -697,7 +744,8 @@ "pda/pheanstalk": "~3.0", "php-amqplib/php-amqplib": "~2.4", "predis/predis": "^1.0", - "squizlabs/php_codesniffer": "~2.0" + "squizlabs/php_codesniffer": "~2.0", + "vlucas/phpdotenv": "^2.4.0" }, "suggest": { "codeception/specify": "BDD-style code blocks", @@ -741,7 +789,7 @@ "functional testing", "unit testing" ], - "time": "2016-10-27 00:00:34" + "time": "2016-12-05T04:12:24+00:00" }, { "name": "codeception/verify", @@ -777,7 +825,7 @@ } ], "description": "BDD assertion library for PHPUnit", - "time": "2016-08-29 22:49:25" + "time": "2016-08-29T22:49:25+00:00" }, { "name": "codegyre/robo", @@ -832,7 +880,8 @@ } ], "description": "Modern task runner", - "time": "2016-04-13 20:14:17" + "abandoned": "consolidation/robo", + "time": "2016-04-13T20:14:17+00:00" }, { "name": "doctrine/instantiator", @@ -886,30 +935,32 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "facebook/webdriver", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/facebook/php-webdriver.git", - "reference": "af21de3ae5306a8ca0bcc02a19735dadc43e83f3" + "reference": "77300c4ab2025d4316635f592ec849ca7323bd8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/af21de3ae5306a8ca0bcc02a19735dadc43e83f3", - "reference": "af21de3ae5306a8ca0bcc02a19735dadc43e83f3", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/77300c4ab2025d4316635f592ec849ca7323bd8c", + "reference": "77300c4ab2025d4316635f592ec849ca7323bd8c", "shasum": "" }, "require": { "ext-curl": "*", - "php": "^5.5 || ~7.0" + "php": "^5.5 || ~7.0", + "symfony/process": "^2.8 || ^3.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "^1.11", "php-mock/php-mock-phpunit": "^1.1", "phpunit/phpunit": "4.6.* || ~5.0", + "satooshi/php-coveralls": "^1.0", "squizlabs/php_codesniffer": "^2.6" }, "suggest": { @@ -933,7 +984,7 @@ "selenium", "webdriver" ], - "time": "2016-10-14 15:16:51" + "time": "2017-01-13T15:48:08+00:00" }, { "name": "guzzlehttp/guzzle", @@ -995,32 +1046,32 @@ "rest", "web service" ], - "time": "2016-10-08 15:01:37" + "time": "2016-10-08T15:01:37+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.2.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", - "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", "shasum": "" }, "require": { "php": ">=5.5.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1046,7 +1097,7 @@ "keywords": [ "promise" ], - "time": "2016-05-18 16:56:05" + "time": "2016-12-20T10:07:11+00:00" }, { "name": "guzzlehttp/psr7", @@ -1104,7 +1155,7 @@ "stream", "uri" ], - "time": "2016-06-24 23:00:38" + "time": "2016-06-24T23:00:38+00:00" }, { "name": "henrikbjorn/lurker", @@ -1163,7 +1214,7 @@ "resource", "watching" ], - "time": "2016-03-16 15:22:20" + "time": "2016-03-16T15:22:20+00:00" }, { "name": "myclabs/deep-copy", @@ -1205,7 +1256,7 @@ "object", "object graph" ], - "time": "2016-10-31 17:19:45" + "time": "2016-10-31T17:19:45+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1259,7 +1310,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2015-12-27T11:43:31+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -1304,20 +1355,20 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" + "time": "2016-09-30T07:12:33+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2", + "version": "0.2.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", "shasum": "" }, "require": { @@ -1351,20 +1402,20 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-06-10 07:14:17" + "time": "2016-11-25T06:54:22+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.6.1", + "version": "v1.6.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "58a8137754bc24b25740d4281399a4a3596058e0" + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", - "reference": "58a8137754bc24b25740d4281399a4a3596058e0", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", "shasum": "" }, "require": { @@ -1372,10 +1423,11 @@ "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", "sebastian/comparator": "^1.1", - "sebastian/recursion-context": "^1.0" + "sebastian/recursion-context": "^1.0|^2.0" }, "require-dev": { - "phpspec/phpspec": "^2.0" + "phpspec/phpspec": "^2.0", + "phpunit/phpunit": "^4.8 || ^5.6.5" }, "type": "library", "extra": { @@ -1413,20 +1465,20 @@ "spy", "stub" ], - "time": "2016-06-07 08:13:47" + "time": "2016-11-21T14:58:47+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6cba06ff75a1a63a71033e1a01b89056f3af1e8d" + "reference": "c14196e64a78570034afd0b7a9f3757ba71c2a0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6cba06ff75a1a63a71033e1a01b89056f3af1e8d", - "reference": "6cba06ff75a1a63a71033e1a01b89056f3af1e8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c14196e64a78570034afd0b7a9f3757ba71c2a0a", + "reference": "c14196e64a78570034afd0b7a9f3757ba71c2a0a", "shasum": "" }, "require": { @@ -1476,20 +1528,20 @@ "testing", "xunit" ], - "time": "2016-11-01 05:06:24" + "time": "2016-12-20T15:22:42+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", "shasum": "" }, "require": { @@ -1523,7 +1575,7 @@ "filesystem", "iterator" ], - "time": "2015-06-21 13:08:43" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -1564,7 +1616,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -1608,20 +1660,20 @@ "keywords": [ "timer" ], - "time": "2016-05-12 18:03:57" + "time": "2016-05-12T18:03:57+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.8", + "version": "1.4.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", "shasum": "" }, "require": { @@ -1657,20 +1709,20 @@ "keywords": [ "tokenizer" ], - "time": "2015-09-15 10:49:45" + "time": "2016-11-15T14:06:22+00:00" }, { "name": "phpunit/phpunit", - "version": "5.6.2", + "version": "5.7.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "cd13b23ac5a519a4708e00736c26ee0bb28b2e01" + "reference": "50fd2be8f3e23e91da825f36f08e5f9633076ffe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cd13b23ac5a519a4708e00736c26ee0bb28b2e01", - "reference": "cd13b23ac5a519a4708e00736c26ee0bb28b2e01", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50fd2be8f3e23e91da825f36f08e5f9633076ffe", + "reference": "50fd2be8f3e23e91da825f36f08e5f9633076ffe", "shasum": "" }, "require": { @@ -1681,18 +1733,18 @@ "ext-xml": "*", "myclabs/deep-copy": "~1.3", "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "^4.0.1", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.3", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", "phpunit/php-timer": "^1.0.6", "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "~1.1", + "sebastian/comparator": "~1.2.2", "sebastian/diff": "~1.2", - "sebastian/environment": "^1.3 || ^2.0", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/object-enumerator": "~1.0", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.0 || ^2.0", + "sebastian/object-enumerator": "~2.0", "sebastian/resource-operations": "~1.0", "sebastian/version": "~1.0|~2.0", "symfony/yaml": "~2.1|~3.0" @@ -1713,7 +1765,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.6.x-dev" + "dev-master": "5.7.x-dev" } }, "autoload": { @@ -1739,27 +1791,27 @@ "testing", "xunit" ], - "time": "2016-10-25 07:40:25" + "time": "2016-12-28T07:18:51+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2" + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/238d7a2723bce689c79eeac9c7d5e1d623bb9dc2", - "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.6 || ^7.0", "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2" + "sebastian/exporter": "^1.2 || ^2.0" }, "conflict": { "phpunit/phpunit": "<5.4.0" @@ -1798,7 +1850,7 @@ "mock", "xunit" ], - "time": "2016-10-09 07:01:45" + "time": "2016-12-08T20:27:08+00:00" }, { "name": "psr/http-message", @@ -1848,7 +1900,7 @@ "request", "response" ], - "time": "2016-08-06 14:39:51" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", @@ -1895,7 +1947,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "raveren/kint", @@ -1946,7 +1998,7 @@ "kint", "php" ], - "time": "2015-09-16 14:09:00" + "time": "2015-09-16T14:09:00+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1991,26 +2043,26 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2016-02-13 06:45:14" + "time": "2016-02-13T06:45:14+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.0", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", + "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", "shasum": "" }, "require": { "php": ">=5.3.3", "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "sebastian/exporter": "~1.2 || ~2.0" }, "require-dev": { "phpunit/phpunit": "~4.4" @@ -2055,7 +2107,7 @@ "compare", "equality" ], - "time": "2015-07-26 15:48:44" + "time": "2016-11-19T09:18:40+00:00" }, { "name": "sebastian/diff", @@ -2107,32 +2159,32 @@ "keywords": [ "diff" ], - "time": "2015-12-08 07:14:41" + "time": "2015-12-08T07:14:41+00:00" }, { "name": "sebastian/environment", - "version": "1.3.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2157,25 +2209,25 @@ "environment", "hhvm" ], - "time": "2016-08-18 05:49:44" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "sebastian/recursion-context": "~2.0" }, "require-dev": { "ext-mbstring": "*", @@ -2184,7 +2236,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2224,7 +2276,7 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2016-11-19T08:54:04+00:00" }, { "name": "sebastian/global-state", @@ -2275,25 +2327,25 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/object-enumerator", - "version": "1.0.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" + "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", - "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35", + "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35", "shasum": "" }, "require": { "php": ">=5.6", - "sebastian/recursion-context": "~1.0" + "sebastian/recursion-context": "~2.0" }, "require-dev": { "phpunit/phpunit": "~5" @@ -2301,7 +2353,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2321,20 +2373,20 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2016-01-28 13:25:10" + "time": "2016-11-19T07:35:10+00:00" }, { "name": "sebastian/recursion-context", - "version": "1.0.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", - "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { @@ -2346,7 +2398,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2374,7 +2426,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11 19:50:13" + "time": "2016-11-19T07:33:16+00:00" }, { "name": "sebastian/resource-operations", @@ -2416,20 +2468,20 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5" + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", - "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { @@ -2459,7 +2511,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-02-04 12:56:52" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "simplyadmire/composer-plugins", @@ -2511,20 +2563,21 @@ "standards", "typo3" ], + "abandoned": true, "time": "2016-05-12 11:58:38" }, { "name": "squizlabs/php_codesniffer", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed" + "reference": "9b324f3a1132459a7274a0ace2e1b766ba80930f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", - "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9b324f3a1132459a7274a0ace2e1b766ba80930f", + "reference": "9b324f3a1132459a7274a0ace2e1b766ba80930f", "shasum": "" }, "require": { @@ -2589,20 +2642,20 @@ "phpcs", "standards" ], - "time": "2016-09-01 23:53:02" + "time": "2016-11-30T04:02:31+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc" + "reference": "548f8230bad9f77463b20b15993a008f03e96db5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/901319a31c9b3cee7857b4aeeb81b5d64dfa34fc", - "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/548f8230bad9f77463b20b15993a008f03e96db5", + "reference": "548f8230bad9f77463b20b15993a008f03e96db5", "shasum": "" }, "require": { @@ -2619,7 +2672,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2646,33 +2699,36 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2016-09-06 11:02:40" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/config", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "949e7e846743a7f9e46dc50eb639d5fde1f53341" + "reference": "c5ea878b5a7f6a01b9a2f182f905831711b9ff3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/949e7e846743a7f9e46dc50eb639d5fde1f53341", - "reference": "949e7e846743a7f9e46dc50eb639d5fde1f53341", + "url": "https://api.github.com/repos/symfony/config/zipball/c5ea878b5a7f6a01b9a2f182f905831711b9ff3f", + "reference": "c5ea878b5a7f6a01b9a2f182f905831711b9ff3f", "shasum": "" }, "require": { "php": ">=5.5.9", "symfony/filesystem": "~2.8|~3.0" }, + "require-dev": { + "symfony/yaml": "~3.0" + }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2699,20 +2755,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2016-09-25 08:27:07" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/console", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065" + "reference": "4f9e449e76996adf310498a8ca955c6deebe29dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c99da1119ae61e15de0e4829196b9fba6f73d065", - "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065", + "url": "https://api.github.com/repos/symfony/console/zipball/4f9e449e76996adf310498a8ca955c6deebe29dd", + "reference": "4f9e449e76996adf310498a8ca955c6deebe29dd", "shasum": "" }, "require": { @@ -2723,17 +2779,19 @@ "require-dev": { "psr/log": "~1.0", "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/filesystem": "~2.8|~3.0", "symfony/process": "~2.8|~3.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", + "symfony/filesystem": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2760,20 +2818,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-10-06 01:44:51" + "time": "2017-01-08T20:47:33+00:00" }, { "name": "symfony/css-selector", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac" + "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ca809c64072e0fe61c1c7fb3c76cdc32265042ac", - "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/f0e628f04fc055c934b3211cfabdb1c59eefbfaa", + "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa", "shasum": "" }, "require": { @@ -2782,7 +2840,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2813,20 +2871,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-09-06 11:02:40" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/debug", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8" + "reference": "810ba5c1c5352a4ddb15d4719e8936751dff0b05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", - "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", + "url": "https://api.github.com/repos/symfony/debug/zipball/810ba5c1c5352a4ddb15d4719e8936751dff0b05", + "reference": "810ba5c1c5352a4ddb15d4719e8936751dff0b05", "shasum": "" }, "require": { @@ -2843,7 +2901,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2870,20 +2928,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-09-06 11:02:40" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "59eee3c76eb89f21857798620ebdad7a05ad14f4" + "reference": "27d9790840a4efd3b7bb8f5f4f9efc27b36b7024" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/59eee3c76eb89f21857798620ebdad7a05ad14f4", - "reference": "59eee3c76eb89f21857798620ebdad7a05ad14f4", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/27d9790840a4efd3b7bb8f5f4f9efc27b36b7024", + "reference": "27d9790840a4efd3b7bb8f5f4f9efc27b36b7024", "shasum": "" }, "require": { @@ -2899,7 +2957,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2926,7 +2984,7 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-10-18 15:46:07" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/event-dispatcher", @@ -2986,20 +3044,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-07-19 10:44:15" + "time": "2016-07-19T10:44:15+00:00" }, { "name": "symfony/filesystem", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "a3784111af9f95f102b6411548376e1ae7c93898" + "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/a3784111af9f95f102b6411548376e1ae7c93898", - "reference": "a3784111af9f95f102b6411548376e1ae7c93898", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5b77d49ab76e5b12743b359ef4b4a712e6f5360d", + "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d", "shasum": "" }, "require": { @@ -3035,20 +3093,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2016-10-18 04:28:30" + "time": "2017-01-08T20:43:03+00:00" }, { "name": "symfony/finder", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f" + "reference": "8c71141cae8e2957946b403cc71a67213c0380d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", - "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", + "url": "https://api.github.com/repos/symfony/finder/zipball/8c71141cae8e2957946b403cc71a67213c0380d6", + "reference": "8c71141cae8e2957946b403cc71a67213c0380d6", "shasum": "" }, "require": { @@ -3057,7 +3115,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3084,20 +3142,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-09-28 00:11:12" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/form", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "eecd1ca8424542ef5dd094981ac6b36428bd6d46" + "reference": "361b0d2127f18829f9914df92ad9e967ac5f7f9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/eecd1ca8424542ef5dd094981ac6b36428bd6d46", - "reference": "eecd1ca8424542ef5dd094981ac6b36428bd6d46", + "url": "https://api.github.com/repos/symfony/form/zipball/361b0d2127f18829f9914df92ad9e967ac5f7f9f", + "reference": "361b0d2127f18829f9914df92ad9e967ac5f7f9f", "shasum": "" }, "require": { @@ -3158,7 +3216,7 @@ ], "description": "Symfony Form Component", "homepage": "https://symfony.com", - "time": "2016-10-18 04:28:30" + "time": "2017-01-12T19:24:25+00:00" }, { "name": "symfony/intl", @@ -3233,20 +3291,20 @@ "l10n", "localization" ], - "time": "2016-07-30 07:22:48" + "time": "2016-07-30T07:22:48+00:00" }, { "name": "symfony/options-resolver", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4820e0d73b95b788986a5a61434a75aa2f87eb87" + "reference": "cc343e8e30e0e9785a0871196af722665d8b970e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4820e0d73b95b788986a5a61434a75aa2f87eb87", - "reference": "4820e0d73b95b788986a5a61434a75aa2f87eb87", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc343e8e30e0e9785a0871196af722665d8b970e", + "reference": "cc343e8e30e0e9785a0871196af722665d8b970e", "shasum": "" }, "require": { @@ -3287,20 +3345,20 @@ "configuration", "options" ], - "time": "2016-10-18 04:28:30" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "0f8dc2c45f69f8672379e9210bca4a115cd5146f" + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/0f8dc2c45f69f8672379e9210bca4a115cd5146f", - "reference": "0f8dc2c45f69f8672379e9210bca4a115cd5146f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2d6e2b20d457603eefb6e614286c22efca30fdb4", + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4", "shasum": "" }, "require": { @@ -3313,7 +3371,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -3345,20 +3403,20 @@ "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2016-11-14T01:06:16+00:00" }, { "name": "symfony/process", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "66de154ae86b1a07001da9fbffd620206e4faf94" + "reference": "350e810019fc52dd06ae844b6a6d382f8a0e8893" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94", - "reference": "66de154ae86b1a07001da9fbffd620206e4faf94", + "url": "https://api.github.com/repos/symfony/process/zipball/350e810019fc52dd06ae844b6a6d382f8a0e8893", + "reference": "350e810019fc52dd06ae844b6a6d382f8a0e8893", "shasum": "" }, "require": { @@ -3367,7 +3425,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3394,7 +3452,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-09-29 14:13:09" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/property-access", @@ -3454,20 +3512,20 @@ "property path", "reflection" ], - "time": "2016-07-30 07:22:48" + "time": "2016-07-30T07:22:48+00:00" }, { "name": "symfony/routing", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "6cee3ed22c778a7410119a3d51a20f60252a156c" + "reference": "2a7e3e02bbfb0a4f722e6a3154489e4ac8b3a97f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/6cee3ed22c778a7410119a3d51a20f60252a156c", - "reference": "6cee3ed22c778a7410119a3d51a20f60252a156c", + "url": "https://api.github.com/repos/symfony/routing/zipball/2a7e3e02bbfb0a4f722e6a3154489e4ac8b3a97f", + "reference": "2a7e3e02bbfb0a4f722e6a3154489e4ac8b3a97f", "shasum": "" }, "require": { @@ -3529,32 +3587,32 @@ "uri", "url" ], - "time": "2016-08-16 14:56:08" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/twig-bridge", - "version": "v2.8.13", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "b9df700554a19c9c00c662f2cd9fb3f03c0d4bcf" + "reference": "fb43ce9f0dad4e816be4188b1eb310f0ae7d659b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/b9df700554a19c9c00c662f2cd9fb3f03c0d4bcf", - "reference": "b9df700554a19c9c00c662f2cd9fb3f03c0d4bcf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/fb43ce9f0dad4e816be4188b1eb310f0ae7d659b", + "reference": "fb43ce9f0dad4e816be4188b1eb310f0ae7d659b", "shasum": "" }, "require": { "php": ">=5.3.9", - "twig/twig": "~1.27|~2.0" + "twig/twig": "~1.28|~2.0" }, "require-dev": { "symfony/asset": "~2.7|~3.0.0", "symfony/console": "~2.8|~3.0.0", "symfony/expression-language": "~2.4|~3.0.0", "symfony/finder": "~2.3|~3.0.0", - "symfony/form": "~2.8.4", + "symfony/form": "~2.8.16", "symfony/http-kernel": "~2.8|~3.0.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/routing": "~2.2|~3.0.0", @@ -3610,29 +3668,35 @@ ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "time": "2016-10-24 15:52:36" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/yaml", - "version": "v3.1.6", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27" + "reference": "50eadbd7926e31842893c957eca362b21592a97d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/7ff51b06c6c3d5cc6686df69004a42c69df09e27", - "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27", + "url": "https://api.github.com/repos/symfony/yaml/zipball/50eadbd7926e31842893c957eca362b21592a97d", + "reference": "50eadbd7926e31842893c957eca362b21592a97d", "shasum": "" }, "require": { "php": ">=5.5.9" }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3659,7 +3723,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-10-24 18:41:13" + "time": "2017-01-03T13:51:32+00:00" }, { "name": "twig/extensions", @@ -3711,7 +3775,7 @@ "i18n", "text" ], - "time": "2016-10-25 17:34:14" + "time": "2016-10-25T17:34:14+00:00" }, { "name": "umpirsky/twig-gettext-extractor", @@ -3760,7 +3824,7 @@ } ], "description": "The Twig Gettext Extractor is Poedit friendly tool which extracts translations from twig templates.", - "time": "2015-02-25 14:41:10" + "time": "2015-02-25T14:41:10+00:00" }, { "name": "vlucas/phpdotenv", @@ -3810,24 +3874,24 @@ "env", "environment" ], - "time": "2016-09-01 10:05:43" + "time": "2016-09-01T10:05:43+00:00" }, { "name": "webmozart/assert", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308" + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", "shasum": "" }, "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -3836,7 +3900,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -3860,20 +3924,20 @@ "check", "validate" ], - "time": "2016-08-09 15:02:57" + "time": "2016-11-23T20:04:58+00:00" }, { "name": "wimg/php-compatibility", - "version": "7.0.8", + "version": "7.1.1", "source": { "type": "git", "url": "https://github.com/wimg/PHPCompatibility.git", - "reference": "a3263259daa3629d174d1ac25657466222d6607e" + "reference": "09733ac3d7ff9efbbe767097f24cf51996a3bbbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wimg/PHPCompatibility/zipball/a3263259daa3629d174d1ac25657466222d6607e", - "reference": "a3263259daa3629d174d1ac25657466222d6607e", + "url": "https://api.github.com/repos/wimg/PHPCompatibility/zipball/09733ac3d7ff9efbbe767097f24cf51996a3bbbb", + "reference": "09733ac3d7ff9efbbe767097f24cf51996a3bbbb", "shasum": "" }, "require": { @@ -3907,7 +3971,7 @@ "phpcs", "standards" ], - "time": "2016-10-30 14:34:26" + "time": "2016-12-14T00:45:04+00:00" } ], "aliases": [], From ed886280dea2bf7d8df4e01c721b3131e2caf24c Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 13 Jan 2017 12:54:16 -0500 Subject: [PATCH 2/3] - Rewrites the CSS styles processor/renderer class - Adds unit tests --- lib/Form/Renderer.php | 2 +- lib/Form/Util/Styles.php | 147 ++++------------------------ tests/unit/Form/Util/StylesTest.php | 28 ++++++ 3 files changed, 50 insertions(+), 127 deletions(-) create mode 100644 tests/unit/Form/Util/StylesTest.php diff --git a/lib/Form/Renderer.php b/lib/Form/Renderer.php index 71b73ff439..c9a24e0949 100644 --- a/lib/Form/Renderer.php +++ b/lib/Form/Renderer.php @@ -35,7 +35,7 @@ class Renderer { && strlen(trim($form['styles'])) > 0) { return strip_tags($form['styles']); } else { - return Util\Styles::$defaults; + return Util\Styles::$default_styles; } } diff --git a/lib/Form/Util/Styles.php b/lib/Form/Util/Styles.php index 3442e8ecbd..446f1280ee 100644 --- a/lib/Form/Util/Styles.php +++ b/lib/Form/Util/Styles.php @@ -1,11 +1,11 @@ setStylesheet($stylesheet); - - // extract rules/properties - $this->parseStyles(); - - return $this; + $this->stylesheet = $stylesheet; } function render($prefix = '') { - $styles = $this->getStyles(); - if(!empty($styles)) { - $output = array(); - - // add prefix on each selector - foreach($styles as $style) { - // check if selector is an array - if(is_array($style['selector'])) { - $selector = join(",\n", array_map(function($value) use ($prefix) { - return $prefix.' '.$value; - }, $style['selector'])); - } else { - $selector = $prefix.' '.$style['selector']; - } - - // format selector - $output[] = $selector . ' {'; - - // format rules - if(!empty($style['rules'])) { - $rules = join("\n", array_map(function($rule) { - return "\t".$rule['property'] . ': ' . $rule['value'].';'; - }, $style['rules'])); - - $output[] = $rules; - } - - $output[] = '}'; - } - - return join("\n", $output); + if(!$this->stylesheet) return; + $styles = new CSSParser($this->stylesheet); + $styles = $styles->parse(); + $formatted_styles = array(); + foreach($styles->getAllDeclarationBlocks() as $style_declaration) { + $selectors = array_map(function($selector) use ($prefix) { + return sprintf('%s %s', $prefix, $selector->__toString()); + }, $style_declaration->getSelectors()); + $selectors = implode(', ', $selectors); + $rules = array_map(function($rule) { + return $rule->__toString(); + }, $style_declaration->getRules()); + $rules = sprintf('{ %s }', implode(' ', $rules)); + $formatted_styles[] = sprintf('%s %s', $selectors, $rules); } + return implode(PHP_EOL, $formatted_styles); } - - private function setStylesheet($stylesheet) { - $this->_stylesheet = $this->stripComments($stylesheet); - return $this; - } - - private function stripComments($stylesheet) { - // remove comments - return preg_replace('!/\*.*?\*/!s', '', $stylesheet); - } - - private function getStylesheet() { - return $this->_stylesheet; - } - - private function setStyles($styles) { - $this->_styles = $styles; - return $this; - } - - private function getStyles() { - return $this->_styles; - } - - private function parseStyles() { - if($this->getStylesheet() !== null) { - // extract selectors and rules - preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/', - $this->getStylesheet(), - $matches - ); - $selectors = $matches[1]; - $rules = $matches[2]; - - // extracted styles - $styles = array(); - - // loop through each selector - foreach($selectors as $index => $selector) { - // trim selector - $selector = trim($selector); - // get selector rules - $selector_rules = array_filter(array_map(function($value) { - if(strlen(trim($value)) > 0) { - // split property / value - $pair = explode(':', trim($value)); - if(isset($pair[0]) && isset($pair[1])) { - return array( - 'property' => $pair[0], - 'value' => $pair[1] - ); - } - } - }, explode(';', trim($rules[$index])))); - - // check if we have multiple selectors - if(strpos($selector, ',') !== false) { - $selectors_array = array_filter(array_map(function($value) { - return trim($value); - }, explode(',', $selector))); - - // multiple selectors - $styles[$index] = array( - 'selector' => $selectors_array, - 'rules' => $selector_rules - ); - } else { - // it's a single selector - $styles[$index] = array( - 'selector' => $selector, - 'rules' => $selector_rules - ); - } - } - - $this->setStyles($styles); - } - } - - function __toString() { - $this->stripComments(); - return $this->render(); - } -} +} \ No newline at end of file diff --git a/tests/unit/Form/Util/StylesTest.php b/tests/unit/Form/Util/StylesTest.php new file mode 100644 index 0000000000..3ed8e9eaec --- /dev/null +++ b/tests/unit/Form/Util/StylesTest.php @@ -0,0 +1,28 @@ +true(); + expect(Styles::$default_styles)->notEmpty(); + } + + function testItProcessesAndRendersStyles() { + $stylesheet = ' + /* some comment */ + input[name=first_name] , input.some_class, .some_class { color: red ; background: blue; } .another_style { fonT-siZe: 20px } + '; + $style_processer = new Styles($stylesheet); + $extracted_and_prefixed_styles = $style_processer->render($prefix = 'mailpoet'); + // 1. comments should be stripped + // 2. each selector should be refixed + // 3. multiple spaces, missing semicolons should be fixed + // 4. each style should be on a separate line + $expected_result = <<equals($expected_result); + } +} \ No newline at end of file From 76e292f4946fe5d4f698702faa2bb7bcb48dd4b3 Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 13 Jan 2017 18:03:25 -0500 Subject: [PATCH 3/3] - Fixes test when premium unlocker is enabled --- tests/unit/Util/License/LicenseTest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/unit/Util/License/LicenseTest.php b/tests/unit/Util/License/LicenseTest.php index 37361891d6..b30c9bff1a 100644 --- a/tests/unit/Util/License/LicenseTest.php +++ b/tests/unit/Util/License/LicenseTest.php @@ -4,7 +4,8 @@ use MailPoet\Util\License\License; class LicenseTest extends MailPoetTest { function testItGetsLicense() { - expect(License::getLicense())->false(); - expect(License::getLicense('valid'))->equals('valid'); + if(defined('MAILPOET_PREMIUM_LICENSE')) return; + expect(License::getLicense())->false(); + expect(License::getLicense('valid'))->equals('valid'); } } \ No newline at end of file