aboutsummaryrefslogtreecommitdiffstats
path: root/pluginManager.js
diff options
context:
space:
mode:
authorsuVene2008-12-28 21:49:43 +0000
committersuVene2008-12-28 21:49:43 +0000
commit6b77a1418152d1bd6d50239e2805679f0338c2d1 (patch)
treef14722f4336ad797091324d6ff1c488f4bdb8cd5 /pluginManager.js
parent1a755ede025009c46e7ba92f49c1a7f51f0cdbd6 (diff)
downloadvimperator-plugins-6b77a1418152d1bd6d50239e2805679f0338c2d1.tar.bz2
version の比較を厳密に。
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27536 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'pluginManager.js')
-rw-r--r--pluginManager.js16
1 files changed, 14 insertions, 2 deletions
diff --git a/pluginManager.js b/pluginManager.js
index 33901f4..fcf2be4 100644
--- a/pluginManager.js
+++ b/pluginManager.js
@@ -198,7 +198,7 @@ function updatePlugin(plugin, checkOnly){
var [localResource, serverResource, store] = getResourceInfo(plugin);
var localDate = Date.parse(localResource['Last-Modified']) || 0;
var serverDate = Date.parse(serverResource.headers['Last-Modified']) || 0;
-
+
var data = {
'Local Version': plugin.info.version || 'unknown',
'Local Last-Modified': localResource['Last-Modified'] || 'unkonwn',
@@ -215,7 +215,7 @@ function updatePlugin(plugin, checkOnly){
} else if (plugin.info.version == serverResource.version &&
localResource['Last-Modified'] == serverResource.headers['Last-Modified']){
data.Information = 'up to date.';
- } else if (plugin.info.version > serverResource.version ||
+ } else if (compVersion(plugin.info.version, serverResource.version) > 0 ||
localDate > serverDate){
data.information = '<span highlight="WarningMsg">local version is newest.</span>';
} else {
@@ -227,6 +227,18 @@ function updatePlugin(plugin, checkOnly){
}
return template.table(plugin.name, data);
}
+function compVersion(a, b){
+ a = (a || '').split('.');
+ b = (b || '').split('.');
+ if (!a.length && b.length) return -1;
+ if (a.length && !b.length) return 1;
+ for (let [i, bv] in Iterator(b)) {
+ var av = i < a.length ? a[i] : 0;
+ if (av == bv) continue;
+ return av < bv ? -1 : 1;
+ }
+ return 0;
+}
function getResourceInfo(plugin){
var store = storage.newMap('plugins-pluginManager', true);
var url = plugin.info.updateURL;