From 06fb00bfe501fb9f1e7d375d241e821ea3fa3e27 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 1 May 2015 16:14:17 +0100 Subject: [PATCH] Fix handling of platform packages to be future proof, refs #3872 --- src/Composer/Json/JsonManipulator.php | 40 +++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/Composer/Json/JsonManipulator.php b/src/Composer/Json/JsonManipulator.php index 901d40cc0..f46d28e08 100644 --- a/src/Composer/Json/JsonManipulator.php +++ b/src/Composer/Json/JsonManipulator.php @@ -12,6 +12,8 @@ namespace Composer\Json; +use Composer\Repository\PlatformRepository; + /** * @author Jordi Boggiano */ @@ -111,23 +113,27 @@ class JsonManipulator private function sortPackages(array &$packages = array()) { $prefix = function ($requirement) { - return preg_replace( - array( - '/^php$/', - '/^hhvm$/', - '/^ext-\w+$/', - '/^lib-\w+$/', - '/^.+$/', - ), - array( - '0-$0', - '1-$0', - '2-$0', - '3-$0', - '4-$0', - ), - $requirement - ); + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $requirement)) { + return preg_replace( + array( + '/^php/', + '/^hhvm/', + '/^ext/', + '/^lib/', + '/^\D/', + ), + array( + '0-$0', + '1-$0', + '2-$0', + '3-$0', + '4-$0', + ), + $requirement + ); + } + + return '5-'.$requirement; }; uksort($packages, function ($a, $b) use ($prefix) {