From 1acc586bacd3df890e8d5e2dc015bd884e5aeddb Mon Sep 17 00:00:00 2001 From: Thaddee Tyl Date: Sun, 25 May 2014 11:50:12 +0200 Subject: [PATCH] Packagist: using semver to order versions Fixes #175. --- server.js | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/server.js b/server.js index e1d92c4978..32ec468e2d 100644 --- a/server.js +++ b/server.js @@ -355,20 +355,22 @@ cache(function(data, match, sendBadge) { var version; var unstable = function(ver) { return /dev/.test(ver); }; // Grab the latest stable version, or an unstable - for (var versionName in data.package.versions) { - var current = data.package.versions[versionName]; + var versions = Object.keys(data.package.versions); + var version = latestVersion(versions); + //for (var versionName in data.package.versions) { + // var current = data.package.versions[versionName]; - if (version !== undefined) { - if (unstable(version.version) && !unstable(current.version)) { - version = current; - } else if (version.version_normalized < current.version_normalized) { - version = current; - } - } else { - version = current; - } - } - version = version.version.replace(/^v/, ""); + // if (version !== undefined) { + // if (unstable(version.version) && !unstable(current.version)) { + // version = current; + // } else if (version.version_normalized < current.version_normalized) { + // version = current; + // } + // } else { + // version = current; + // } + //} + //version = version.version.replace(/^v/, ""); badgeData.text[1] = version; if (/^\d/.test(badgeData.text[1])) { badgeData.text[1] = 'v' + version; @@ -1218,6 +1220,9 @@ function metric(n) { // Given a list of versions (as strings), return the latest version. function latestVersion(versions) { var version = ''; + var versions = versions.filter(function(version) { + return (/^v?[0-9]/).test(version); + }); try { version = semver.maxSatisfying(versions, ''); } catch(e) {