├── .gitignore ├── .scrutinizer.yml ├── src └── Nash │ ├── InvalidMessageFormatException.php │ ├── UnsupportedCharacterException.php │ └── Numerology.php ├── .travis.yml ├── composer.json ├── phpunit.xml.dist ├── LICENSE ├── README.md ├── tests └── Nash │ └── NumerologyTest.php └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | -------------------------------------------------------------------------------- /.scrutinizer.yml: -------------------------------------------------------------------------------- 1 | checks: 2 | php: 3 | code_rating: true 4 | duplication: true 5 | tools: 6 | external_code_coverage: 7 | timeout: 600 8 | -------------------------------------------------------------------------------- /src/Nash/InvalidMessageFormatException.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | tests 21 | 22 | 23 | 24 | 25 | src/Nash 26 | 27 | 28 | 29 | 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Nelson Senna do Amaral 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/nelsonsar/nash.svg?branch=master)](https://travis-ci.org/nelsonsar/nash) 2 | [![Code Coverage](https://scrutinizer-ci.com/g/nelsonsar/nash/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/nelsonsar/nash/?branch=master) 3 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nelsonsar/nash/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nelsonsar/nash/?branch=master) 4 | 5 | # Nash 6 | 7 | *"I did have strange ideas during certain periods of time."* - John Forbes Nash, Jr. 8 | 9 | Nash is a [bijective](http://en.wikipedia.org/wiki/Bijective_numeration) [base 26](http://en.wikipedia.org/wiki/Hexavigesimal) encoder and decoder from a beautiful mind (and that is not mine). 10 | 11 | ## How to use it 12 | 13 | ```php 14 | assertEquals($expectedResult, $result); 15 | } 16 | 17 | public function messageProvider() 18 | { 19 | return array( 20 | array('BAC', 2056), 21 | array('mail', 217035) 22 | ); 23 | } 24 | 25 | /** 26 | * @expectedException Nash\UnsupportedCharacterException 27 | * @expectedExceptionMessage Message has invalid characters 28 | */ 29 | public function testCoverMessageShouldThrowAnExceptionWhenMessageHasNonSupportedCharacters() 30 | { 31 | $message = '_a_'; 32 | 33 | Numerology::coverMessage($message); 34 | } 35 | 36 | /** 37 | * @expectedException Nash\InvalidMessageFormatException 38 | * @expectedExceptionMessage Invalid message format 39 | */ 40 | public function testCoverMessageShouldThrowAnExceptionWhenMessageIsNotAString() 41 | { 42 | $message = array(); 43 | 44 | Numerology::coverMessage($message); 45 | } 46 | 47 | /** 48 | * @dataProvider coveredMessageProvider 49 | */ 50 | public function testUncoverMessage($message, $expectedResult) 51 | { 52 | $result = Numerology::uncoverMessage($message); 53 | 54 | $this->assertEquals($expectedResult, $result); 55 | } 56 | 57 | public function coveredMessageProvider() 58 | { 59 | return array( 60 | array(2056, 'bac'), 61 | array(-1, 'a') 62 | ); 63 | } 64 | 65 | /** 66 | * @expectedException Nash\InvalidMessageFormatException 67 | * @expectedExceptionMessage Invalid message format 68 | */ 69 | public function testUncoverMessageShouldThrowAnExceptionWhenMessageIsNotANumber() 70 | { 71 | $message = 'aaaaa'; 72 | 73 | Numerology::uncoverMessage($message); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/Nash/Numerology.php: -------------------------------------------------------------------------------- 1 | 0) { 43 | --$coveredMessage; 44 | $uncoveredLetterAsciiCode = $coveredMessage % self::JOHN_NASH_BASE + self::ASCII_CODE_LETTER_A; 45 | $uncoveredLetter = chr($uncoveredLetterAsciiCode); 46 | 47 | if (false === self::isAllowedLetter($uncoveredLetter)) throw new UnsupportedCharacterException; 48 | 49 | $result .= $uncoveredLetter; 50 | $coveredMessage = intval($coveredMessage / self::JOHN_NASH_BASE); 51 | } 52 | 53 | return $result; 54 | } 55 | 56 | private static function createLetterMap() 57 | { 58 | self::$letterMap = array(); 59 | 60 | for ($asciiCode = self::ASCII_CODE_LETTER_A; $asciiCode < self::ASCII_CODE_LETTER_Z; $asciiCode++) { 61 | self::$letterMap[] = chr($asciiCode); 62 | } 63 | 64 | return self::$letterMap; 65 | } 66 | 67 | private static function isAllowedLetter($letter) 68 | { 69 | return (false !== array_search($letter, self::$letterMap)); 70 | } 71 | 72 | private static function createReversedLetterArrayFromMessage($message) 73 | { 74 | $messageAsArray = str_split($message); 75 | $normalizedMessageArray = array_map('strtolower', $messageAsArray); 76 | 77 | return array_reverse($normalizedMessageArray); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "0c667c934f61f439e8d48937bd5fd19c", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "doctrine/instantiator", 12 | "version": "1.0.4", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/instantiator.git", 16 | "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", 21 | "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": ">=5.3,<8.0-DEV" 26 | }, 27 | "require-dev": { 28 | "athletic/athletic": "~0.1.8", 29 | "ext-pdo": "*", 30 | "ext-phar": "*", 31 | "phpunit/phpunit": "~4.0", 32 | "squizlabs/php_codesniffer": "2.0.*@ALPHA" 33 | }, 34 | "type": "library", 35 | "extra": { 36 | "branch-alias": { 37 | "dev-master": "1.0.x-dev" 38 | } 39 | }, 40 | "autoload": { 41 | "psr-0": { 42 | "Doctrine\\Instantiator\\": "src" 43 | } 44 | }, 45 | "notification-url": "https://packagist.org/downloads/", 46 | "license": [ 47 | "MIT" 48 | ], 49 | "authors": [ 50 | { 51 | "name": "Marco Pivetta", 52 | "email": "ocramius@gmail.com", 53 | "homepage": "http://ocramius.github.com/" 54 | } 55 | ], 56 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 57 | "homepage": "https://github.com/doctrine/instantiator", 58 | "keywords": [ 59 | "constructor", 60 | "instantiate" 61 | ], 62 | "time": "2014-10-13 12:58:55" 63 | }, 64 | { 65 | "name": "phpdocumentor/reflection-docblock", 66 | "version": "2.0.4", 67 | "source": { 68 | "type": "git", 69 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 70 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" 71 | }, 72 | "dist": { 73 | "type": "zip", 74 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", 75 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", 76 | "shasum": "" 77 | }, 78 | "require": { 79 | "php": ">=5.3.3" 80 | }, 81 | "require-dev": { 82 | "phpunit/phpunit": "~4.0" 83 | }, 84 | "suggest": { 85 | "dflydev/markdown": "~1.0", 86 | "erusev/parsedown": "~1.0" 87 | }, 88 | "type": "library", 89 | "extra": { 90 | "branch-alias": { 91 | "dev-master": "2.0.x-dev" 92 | } 93 | }, 94 | "autoload": { 95 | "psr-0": { 96 | "phpDocumentor": [ 97 | "src/" 98 | ] 99 | } 100 | }, 101 | "notification-url": "https://packagist.org/downloads/", 102 | "license": [ 103 | "MIT" 104 | ], 105 | "authors": [ 106 | { 107 | "name": "Mike van Riel", 108 | "email": "mike.vanriel@naenius.com" 109 | } 110 | ], 111 | "time": "2015-02-03 12:10:50" 112 | }, 113 | { 114 | "name": "phpspec/prophecy", 115 | "version": "v1.3.1", 116 | "source": { 117 | "type": "git", 118 | "url": "https://github.com/phpspec/prophecy.git", 119 | "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9" 120 | }, 121 | "dist": { 122 | "type": "zip", 123 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9ca52329bcdd1500de24427542577ebf3fc2f1c9", 124 | "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9", 125 | "shasum": "" 126 | }, 127 | "require": { 128 | "doctrine/instantiator": "~1.0,>=1.0.2", 129 | "phpdocumentor/reflection-docblock": "~2.0" 130 | }, 131 | "require-dev": { 132 | "phpspec/phpspec": "~2.0" 133 | }, 134 | "type": "library", 135 | "extra": { 136 | "branch-alias": { 137 | "dev-master": "1.2.x-dev" 138 | } 139 | }, 140 | "autoload": { 141 | "psr-0": { 142 | "Prophecy\\": "src/" 143 | } 144 | }, 145 | "notification-url": "https://packagist.org/downloads/", 146 | "license": [ 147 | "MIT" 148 | ], 149 | "authors": [ 150 | { 151 | "name": "Konstantin Kudryashov", 152 | "email": "ever.zet@gmail.com", 153 | "homepage": "http://everzet.com" 154 | }, 155 | { 156 | "name": "Marcello Duarte", 157 | "email": "marcello.duarte@gmail.com" 158 | } 159 | ], 160 | "description": "Highly opinionated mocking framework for PHP 5.3+", 161 | "homepage": "http://phpspec.org", 162 | "keywords": [ 163 | "Double", 164 | "Dummy", 165 | "fake", 166 | "mock", 167 | "spy", 168 | "stub" 169 | ], 170 | "time": "2014-11-17 16:23:49" 171 | }, 172 | { 173 | "name": "phpunit/php-code-coverage", 174 | "version": "2.0.15", 175 | "source": { 176 | "type": "git", 177 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 178 | "reference": "34cc484af1ca149188d0d9e91412191e398e0b67" 179 | }, 180 | "dist": { 181 | "type": "zip", 182 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/34cc484af1ca149188d0d9e91412191e398e0b67", 183 | "reference": "34cc484af1ca149188d0d9e91412191e398e0b67", 184 | "shasum": "" 185 | }, 186 | "require": { 187 | "php": ">=5.3.3", 188 | "phpunit/php-file-iterator": "~1.3", 189 | "phpunit/php-text-template": "~1.2", 190 | "phpunit/php-token-stream": "~1.3", 191 | "sebastian/environment": "~1.0", 192 | "sebastian/version": "~1.0" 193 | }, 194 | "require-dev": { 195 | "ext-xdebug": ">=2.1.4", 196 | "phpunit/phpunit": "~4" 197 | }, 198 | "suggest": { 199 | "ext-dom": "*", 200 | "ext-xdebug": ">=2.2.1", 201 | "ext-xmlwriter": "*" 202 | }, 203 | "type": "library", 204 | "extra": { 205 | "branch-alias": { 206 | "dev-master": "2.0.x-dev" 207 | } 208 | }, 209 | "autoload": { 210 | "classmap": [ 211 | "src/" 212 | ] 213 | }, 214 | "notification-url": "https://packagist.org/downloads/", 215 | "license": [ 216 | "BSD-3-Clause" 217 | ], 218 | "authors": [ 219 | { 220 | "name": "Sebastian Bergmann", 221 | "email": "sb@sebastian-bergmann.de", 222 | "role": "lead" 223 | } 224 | ], 225 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 226 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 227 | "keywords": [ 228 | "coverage", 229 | "testing", 230 | "xunit" 231 | ], 232 | "time": "2015-01-24 10:06:35" 233 | }, 234 | { 235 | "name": "phpunit/php-file-iterator", 236 | "version": "1.3.4", 237 | "source": { 238 | "type": "git", 239 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 240 | "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" 241 | }, 242 | "dist": { 243 | "type": "zip", 244 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", 245 | "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", 246 | "shasum": "" 247 | }, 248 | "require": { 249 | "php": ">=5.3.3" 250 | }, 251 | "type": "library", 252 | "autoload": { 253 | "classmap": [ 254 | "File/" 255 | ] 256 | }, 257 | "notification-url": "https://packagist.org/downloads/", 258 | "include-path": [ 259 | "" 260 | ], 261 | "license": [ 262 | "BSD-3-Clause" 263 | ], 264 | "authors": [ 265 | { 266 | "name": "Sebastian Bergmann", 267 | "email": "sb@sebastian-bergmann.de", 268 | "role": "lead" 269 | } 270 | ], 271 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 272 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 273 | "keywords": [ 274 | "filesystem", 275 | "iterator" 276 | ], 277 | "time": "2013-10-10 15:34:57" 278 | }, 279 | { 280 | "name": "phpunit/php-text-template", 281 | "version": "1.2.0", 282 | "source": { 283 | "type": "git", 284 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 285 | "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" 286 | }, 287 | "dist": { 288 | "type": "zip", 289 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", 290 | "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", 291 | "shasum": "" 292 | }, 293 | "require": { 294 | "php": ">=5.3.3" 295 | }, 296 | "type": "library", 297 | "autoload": { 298 | "classmap": [ 299 | "Text/" 300 | ] 301 | }, 302 | "notification-url": "https://packagist.org/downloads/", 303 | "include-path": [ 304 | "" 305 | ], 306 | "license": [ 307 | "BSD-3-Clause" 308 | ], 309 | "authors": [ 310 | { 311 | "name": "Sebastian Bergmann", 312 | "email": "sb@sebastian-bergmann.de", 313 | "role": "lead" 314 | } 315 | ], 316 | "description": "Simple template engine.", 317 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 318 | "keywords": [ 319 | "template" 320 | ], 321 | "time": "2014-01-30 17:20:04" 322 | }, 323 | { 324 | "name": "phpunit/php-timer", 325 | "version": "1.0.5", 326 | "source": { 327 | "type": "git", 328 | "url": "https://github.com/sebastianbergmann/php-timer.git", 329 | "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" 330 | }, 331 | "dist": { 332 | "type": "zip", 333 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", 334 | "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", 335 | "shasum": "" 336 | }, 337 | "require": { 338 | "php": ">=5.3.3" 339 | }, 340 | "type": "library", 341 | "autoload": { 342 | "classmap": [ 343 | "PHP/" 344 | ] 345 | }, 346 | "notification-url": "https://packagist.org/downloads/", 347 | "include-path": [ 348 | "" 349 | ], 350 | "license": [ 351 | "BSD-3-Clause" 352 | ], 353 | "authors": [ 354 | { 355 | "name": "Sebastian Bergmann", 356 | "email": "sb@sebastian-bergmann.de", 357 | "role": "lead" 358 | } 359 | ], 360 | "description": "Utility class for timing", 361 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 362 | "keywords": [ 363 | "timer" 364 | ], 365 | "time": "2013-08-02 07:42:54" 366 | }, 367 | { 368 | "name": "phpunit/php-token-stream", 369 | "version": "1.4.0", 370 | "source": { 371 | "type": "git", 372 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 373 | "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74" 374 | }, 375 | "dist": { 376 | "type": "zip", 377 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db32c18eba00b121c145575fcbcd4d4d24e6db74", 378 | "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74", 379 | "shasum": "" 380 | }, 381 | "require": { 382 | "ext-tokenizer": "*", 383 | "php": ">=5.3.3" 384 | }, 385 | "require-dev": { 386 | "phpunit/phpunit": "~4.2" 387 | }, 388 | "type": "library", 389 | "extra": { 390 | "branch-alias": { 391 | "dev-master": "1.4-dev" 392 | } 393 | }, 394 | "autoload": { 395 | "classmap": [ 396 | "src/" 397 | ] 398 | }, 399 | "notification-url": "https://packagist.org/downloads/", 400 | "license": [ 401 | "BSD-3-Clause" 402 | ], 403 | "authors": [ 404 | { 405 | "name": "Sebastian Bergmann", 406 | "email": "sebastian@phpunit.de" 407 | } 408 | ], 409 | "description": "Wrapper around PHP's tokenizer extension.", 410 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 411 | "keywords": [ 412 | "tokenizer" 413 | ], 414 | "time": "2015-01-17 09:51:32" 415 | }, 416 | { 417 | "name": "phpunit/phpunit", 418 | "version": "4.5.0", 419 | "source": { 420 | "type": "git", 421 | "url": "https://github.com/sebastianbergmann/phpunit.git", 422 | "reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5" 423 | }, 424 | "dist": { 425 | "type": "zip", 426 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5b578d3865a9128b9c209b011fda6539ec06e7a5", 427 | "reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5", 428 | "shasum": "" 429 | }, 430 | "require": { 431 | "ext-dom": "*", 432 | "ext-json": "*", 433 | "ext-pcre": "*", 434 | "ext-reflection": "*", 435 | "ext-spl": "*", 436 | "php": ">=5.3.3", 437 | "phpspec/prophecy": "~1.3.1", 438 | "phpunit/php-code-coverage": "~2.0", 439 | "phpunit/php-file-iterator": "~1.3.2", 440 | "phpunit/php-text-template": "~1.2", 441 | "phpunit/php-timer": "~1.0.2", 442 | "phpunit/phpunit-mock-objects": "~2.3", 443 | "sebastian/comparator": "~1.1", 444 | "sebastian/diff": "~1.1", 445 | "sebastian/environment": "~1.2", 446 | "sebastian/exporter": "~1.2", 447 | "sebastian/global-state": "~1.0", 448 | "sebastian/version": "~1.0", 449 | "symfony/yaml": "~2.0" 450 | }, 451 | "suggest": { 452 | "phpunit/php-invoker": "~1.1" 453 | }, 454 | "bin": [ 455 | "phpunit" 456 | ], 457 | "type": "library", 458 | "extra": { 459 | "branch-alias": { 460 | "dev-master": "4.5.x-dev" 461 | } 462 | }, 463 | "autoload": { 464 | "classmap": [ 465 | "src/" 466 | ] 467 | }, 468 | "notification-url": "https://packagist.org/downloads/", 469 | "license": [ 470 | "BSD-3-Clause" 471 | ], 472 | "authors": [ 473 | { 474 | "name": "Sebastian Bergmann", 475 | "email": "sebastian@phpunit.de", 476 | "role": "lead" 477 | } 478 | ], 479 | "description": "The PHP Unit Testing framework.", 480 | "homepage": "https://phpunit.de/", 481 | "keywords": [ 482 | "phpunit", 483 | "testing", 484 | "xunit" 485 | ], 486 | "time": "2015-02-05 15:51:19" 487 | }, 488 | { 489 | "name": "phpunit/phpunit-mock-objects", 490 | "version": "2.3.0", 491 | "source": { 492 | "type": "git", 493 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 494 | "reference": "c63d2367247365f688544f0d500af90a11a44c65" 495 | }, 496 | "dist": { 497 | "type": "zip", 498 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/c63d2367247365f688544f0d500af90a11a44c65", 499 | "reference": "c63d2367247365f688544f0d500af90a11a44c65", 500 | "shasum": "" 501 | }, 502 | "require": { 503 | "doctrine/instantiator": "~1.0,>=1.0.1", 504 | "php": ">=5.3.3", 505 | "phpunit/php-text-template": "~1.2" 506 | }, 507 | "require-dev": { 508 | "phpunit/phpunit": "~4.3" 509 | }, 510 | "suggest": { 511 | "ext-soap": "*" 512 | }, 513 | "type": "library", 514 | "extra": { 515 | "branch-alias": { 516 | "dev-master": "2.3.x-dev" 517 | } 518 | }, 519 | "autoload": { 520 | "classmap": [ 521 | "src/" 522 | ] 523 | }, 524 | "notification-url": "https://packagist.org/downloads/", 525 | "license": [ 526 | "BSD-3-Clause" 527 | ], 528 | "authors": [ 529 | { 530 | "name": "Sebastian Bergmann", 531 | "email": "sb@sebastian-bergmann.de", 532 | "role": "lead" 533 | } 534 | ], 535 | "description": "Mock Object library for PHPUnit", 536 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 537 | "keywords": [ 538 | "mock", 539 | "xunit" 540 | ], 541 | "time": "2014-10-03 05:12:11" 542 | }, 543 | { 544 | "name": "sebastian/comparator", 545 | "version": "1.1.1", 546 | "source": { 547 | "type": "git", 548 | "url": "https://github.com/sebastianbergmann/comparator.git", 549 | "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" 550 | }, 551 | "dist": { 552 | "type": "zip", 553 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", 554 | "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", 555 | "shasum": "" 556 | }, 557 | "require": { 558 | "php": ">=5.3.3", 559 | "sebastian/diff": "~1.2", 560 | "sebastian/exporter": "~1.2" 561 | }, 562 | "require-dev": { 563 | "phpunit/phpunit": "~4.4" 564 | }, 565 | "type": "library", 566 | "extra": { 567 | "branch-alias": { 568 | "dev-master": "1.1.x-dev" 569 | } 570 | }, 571 | "autoload": { 572 | "classmap": [ 573 | "src/" 574 | ] 575 | }, 576 | "notification-url": "https://packagist.org/downloads/", 577 | "license": [ 578 | "BSD-3-Clause" 579 | ], 580 | "authors": [ 581 | { 582 | "name": "Jeff Welch", 583 | "email": "whatthejeff@gmail.com" 584 | }, 585 | { 586 | "name": "Volker Dusch", 587 | "email": "github@wallbash.com" 588 | }, 589 | { 590 | "name": "Bernhard Schussek", 591 | "email": "bschussek@2bepublished.at" 592 | }, 593 | { 594 | "name": "Sebastian Bergmann", 595 | "email": "sebastian@phpunit.de" 596 | } 597 | ], 598 | "description": "Provides the functionality to compare PHP values for equality", 599 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 600 | "keywords": [ 601 | "comparator", 602 | "compare", 603 | "equality" 604 | ], 605 | "time": "2015-01-29 16:28:08" 606 | }, 607 | { 608 | "name": "sebastian/diff", 609 | "version": "1.2.0", 610 | "source": { 611 | "type": "git", 612 | "url": "https://github.com/sebastianbergmann/diff.git", 613 | "reference": "5843509fed39dee4b356a306401e9dd1a931fec7" 614 | }, 615 | "dist": { 616 | "type": "zip", 617 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/5843509fed39dee4b356a306401e9dd1a931fec7", 618 | "reference": "5843509fed39dee4b356a306401e9dd1a931fec7", 619 | "shasum": "" 620 | }, 621 | "require": { 622 | "php": ">=5.3.3" 623 | }, 624 | "require-dev": { 625 | "phpunit/phpunit": "~4.2" 626 | }, 627 | "type": "library", 628 | "extra": { 629 | "branch-alias": { 630 | "dev-master": "1.2-dev" 631 | } 632 | }, 633 | "autoload": { 634 | "classmap": [ 635 | "src/" 636 | ] 637 | }, 638 | "notification-url": "https://packagist.org/downloads/", 639 | "license": [ 640 | "BSD-3-Clause" 641 | ], 642 | "authors": [ 643 | { 644 | "name": "Kore Nordmann", 645 | "email": "mail@kore-nordmann.de" 646 | }, 647 | { 648 | "name": "Sebastian Bergmann", 649 | "email": "sebastian@phpunit.de" 650 | } 651 | ], 652 | "description": "Diff implementation", 653 | "homepage": "http://www.github.com/sebastianbergmann/diff", 654 | "keywords": [ 655 | "diff" 656 | ], 657 | "time": "2014-08-15 10:29:00" 658 | }, 659 | { 660 | "name": "sebastian/environment", 661 | "version": "1.2.1", 662 | "source": { 663 | "type": "git", 664 | "url": "https://github.com/sebastianbergmann/environment.git", 665 | "reference": "6e6c71d918088c251b181ba8b3088af4ac336dd7" 666 | }, 667 | "dist": { 668 | "type": "zip", 669 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e6c71d918088c251b181ba8b3088af4ac336dd7", 670 | "reference": "6e6c71d918088c251b181ba8b3088af4ac336dd7", 671 | "shasum": "" 672 | }, 673 | "require": { 674 | "php": ">=5.3.3" 675 | }, 676 | "require-dev": { 677 | "phpunit/phpunit": "~4.3" 678 | }, 679 | "type": "library", 680 | "extra": { 681 | "branch-alias": { 682 | "dev-master": "1.2.x-dev" 683 | } 684 | }, 685 | "autoload": { 686 | "classmap": [ 687 | "src/" 688 | ] 689 | }, 690 | "notification-url": "https://packagist.org/downloads/", 691 | "license": [ 692 | "BSD-3-Clause" 693 | ], 694 | "authors": [ 695 | { 696 | "name": "Sebastian Bergmann", 697 | "email": "sebastian@phpunit.de" 698 | } 699 | ], 700 | "description": "Provides functionality to handle HHVM/PHP environments", 701 | "homepage": "http://www.github.com/sebastianbergmann/environment", 702 | "keywords": [ 703 | "Xdebug", 704 | "environment", 705 | "hhvm" 706 | ], 707 | "time": "2014-10-25 08:00:45" 708 | }, 709 | { 710 | "name": "sebastian/exporter", 711 | "version": "1.2.0", 712 | "source": { 713 | "type": "git", 714 | "url": "https://github.com/sebastianbergmann/exporter.git", 715 | "reference": "84839970d05254c73cde183a721c7af13aede943" 716 | }, 717 | "dist": { 718 | "type": "zip", 719 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", 720 | "reference": "84839970d05254c73cde183a721c7af13aede943", 721 | "shasum": "" 722 | }, 723 | "require": { 724 | "php": ">=5.3.3", 725 | "sebastian/recursion-context": "~1.0" 726 | }, 727 | "require-dev": { 728 | "phpunit/phpunit": "~4.4" 729 | }, 730 | "type": "library", 731 | "extra": { 732 | "branch-alias": { 733 | "dev-master": "1.2.x-dev" 734 | } 735 | }, 736 | "autoload": { 737 | "classmap": [ 738 | "src/" 739 | ] 740 | }, 741 | "notification-url": "https://packagist.org/downloads/", 742 | "license": [ 743 | "BSD-3-Clause" 744 | ], 745 | "authors": [ 746 | { 747 | "name": "Jeff Welch", 748 | "email": "whatthejeff@gmail.com" 749 | }, 750 | { 751 | "name": "Volker Dusch", 752 | "email": "github@wallbash.com" 753 | }, 754 | { 755 | "name": "Bernhard Schussek", 756 | "email": "bschussek@2bepublished.at" 757 | }, 758 | { 759 | "name": "Sebastian Bergmann", 760 | "email": "sebastian@phpunit.de" 761 | }, 762 | { 763 | "name": "Adam Harvey", 764 | "email": "aharvey@php.net" 765 | } 766 | ], 767 | "description": "Provides the functionality to export PHP variables for visualization", 768 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 769 | "keywords": [ 770 | "export", 771 | "exporter" 772 | ], 773 | "time": "2015-01-27 07:23:06" 774 | }, 775 | { 776 | "name": "sebastian/global-state", 777 | "version": "1.0.0", 778 | "source": { 779 | "type": "git", 780 | "url": "https://github.com/sebastianbergmann/global-state.git", 781 | "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" 782 | }, 783 | "dist": { 784 | "type": "zip", 785 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", 786 | "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", 787 | "shasum": "" 788 | }, 789 | "require": { 790 | "php": ">=5.3.3" 791 | }, 792 | "require-dev": { 793 | "phpunit/phpunit": "~4.2" 794 | }, 795 | "suggest": { 796 | "ext-uopz": "*" 797 | }, 798 | "type": "library", 799 | "extra": { 800 | "branch-alias": { 801 | "dev-master": "1.0-dev" 802 | } 803 | }, 804 | "autoload": { 805 | "classmap": [ 806 | "src/" 807 | ] 808 | }, 809 | "notification-url": "https://packagist.org/downloads/", 810 | "license": [ 811 | "BSD-3-Clause" 812 | ], 813 | "authors": [ 814 | { 815 | "name": "Sebastian Bergmann", 816 | "email": "sebastian@phpunit.de" 817 | } 818 | ], 819 | "description": "Snapshotting of global state", 820 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 821 | "keywords": [ 822 | "global state" 823 | ], 824 | "time": "2014-10-06 09:23:50" 825 | }, 826 | { 827 | "name": "sebastian/recursion-context", 828 | "version": "1.0.0", 829 | "source": { 830 | "type": "git", 831 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 832 | "reference": "3989662bbb30a29d20d9faa04a846af79b276252" 833 | }, 834 | "dist": { 835 | "type": "zip", 836 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", 837 | "reference": "3989662bbb30a29d20d9faa04a846af79b276252", 838 | "shasum": "" 839 | }, 840 | "require": { 841 | "php": ">=5.3.3" 842 | }, 843 | "require-dev": { 844 | "phpunit/phpunit": "~4.4" 845 | }, 846 | "type": "library", 847 | "extra": { 848 | "branch-alias": { 849 | "dev-master": "1.0.x-dev" 850 | } 851 | }, 852 | "autoload": { 853 | "classmap": [ 854 | "src/" 855 | ] 856 | }, 857 | "notification-url": "https://packagist.org/downloads/", 858 | "license": [ 859 | "BSD-3-Clause" 860 | ], 861 | "authors": [ 862 | { 863 | "name": "Jeff Welch", 864 | "email": "whatthejeff@gmail.com" 865 | }, 866 | { 867 | "name": "Sebastian Bergmann", 868 | "email": "sebastian@phpunit.de" 869 | }, 870 | { 871 | "name": "Adam Harvey", 872 | "email": "aharvey@php.net" 873 | } 874 | ], 875 | "description": "Provides functionality to recursively process PHP variables", 876 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 877 | "time": "2015-01-24 09:48:32" 878 | }, 879 | { 880 | "name": "sebastian/version", 881 | "version": "1.0.4", 882 | "source": { 883 | "type": "git", 884 | "url": "https://github.com/sebastianbergmann/version.git", 885 | "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b" 886 | }, 887 | "dist": { 888 | "type": "zip", 889 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/a77d9123f8e809db3fbdea15038c27a95da4058b", 890 | "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b", 891 | "shasum": "" 892 | }, 893 | "type": "library", 894 | "autoload": { 895 | "classmap": [ 896 | "src/" 897 | ] 898 | }, 899 | "notification-url": "https://packagist.org/downloads/", 900 | "license": [ 901 | "BSD-3-Clause" 902 | ], 903 | "authors": [ 904 | { 905 | "name": "Sebastian Bergmann", 906 | "email": "sebastian@phpunit.de", 907 | "role": "lead" 908 | } 909 | ], 910 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 911 | "homepage": "https://github.com/sebastianbergmann/version", 912 | "time": "2014-12-15 14:25:24" 913 | }, 914 | { 915 | "name": "symfony/yaml", 916 | "version": "v2.6.4", 917 | "target-dir": "Symfony/Component/Yaml", 918 | "source": { 919 | "type": "git", 920 | "url": "https://github.com/symfony/Yaml.git", 921 | "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8" 922 | }, 923 | "dist": { 924 | "type": "zip", 925 | "url": "https://api.github.com/repos/symfony/Yaml/zipball/60ed7751671113cf1ee7d7778e691642c2e9acd8", 926 | "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8", 927 | "shasum": "" 928 | }, 929 | "require": { 930 | "php": ">=5.3.3" 931 | }, 932 | "type": "library", 933 | "extra": { 934 | "branch-alias": { 935 | "dev-master": "2.6-dev" 936 | } 937 | }, 938 | "autoload": { 939 | "psr-0": { 940 | "Symfony\\Component\\Yaml\\": "" 941 | } 942 | }, 943 | "notification-url": "https://packagist.org/downloads/", 944 | "license": [ 945 | "MIT" 946 | ], 947 | "authors": [ 948 | { 949 | "name": "Symfony Community", 950 | "homepage": "http://symfony.com/contributors" 951 | }, 952 | { 953 | "name": "Fabien Potencier", 954 | "email": "fabien@symfony.com" 955 | } 956 | ], 957 | "description": "Symfony Yaml Component", 958 | "homepage": "http://symfony.com", 959 | "time": "2015-01-25 04:39:26" 960 | } 961 | ], 962 | "aliases": [], 963 | "minimum-stability": "stable", 964 | "stability-flags": { 965 | "phpunit/phpunit": 0 966 | }, 967 | "prefer-stable": false, 968 | "prefer-lowest": false, 969 | "platform": [], 970 | "platform-dev": [] 971 | } 972 | --------------------------------------------------------------------------------