Skip to content

Commit 05d0961

Browse files
committed
fixed various Matter.Plugin issues
1 parent 0e5a457 commit 05d0961

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/core/Plugin.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,17 @@ var Common = require('./Common');
2626
}
2727

2828
if (plugin.name in Plugin._registry) {
29-
var registered = Plugin._registry[plugin.name];
29+
var registered = Plugin._registry[plugin.name],
30+
pluginVersion = Plugin.versionParse(plugin.version).number,
31+
registeredVersion = Plugin.versionParse(registered.version).number;
3032

31-
if (Plugin.versionParse(plugin.version).number >= Plugin.versionParse(registered.version).number) {
33+
if (pluginVersion > registeredVersion) {
3234
Common.warn('Plugin.register:', Plugin.toString(registered), 'was upgraded to', Plugin.toString(plugin));
3335
Plugin._registry[plugin.name] = plugin;
34-
} else {
36+
} else if (pluginVersion < registeredVersion) {
3537
Common.warn('Plugin.register:', Plugin.toString(registered), 'can not be downgraded to', Plugin.toString(plugin));
38+
} else if (plugin !== registered) {
39+
Common.warn('Plugin.register:', Plugin.toString(plugin), 'is already registered to different plugin object');
3640
}
3741
} else {
3842
Plugin._registry[plugin.name] = plugin;
@@ -59,7 +63,7 @@ var Common = require('./Common');
5963
* @return {string} Pretty printed plugin name and version.
6064
*/
6165
Plugin.toString = function(plugin) {
62-
return (plugin.name || 'anonymous') + '@' + (plugin.version || plugin.range || '0.0.0');
66+
return typeof plugin === 'string' ? plugin : (plugin.name || 'anonymous') + '@' + (plugin.version || plugin.range || '0.0.0');
6367
};
6468

6569
/**
@@ -191,6 +195,10 @@ var Common = require('./Common');
191195
module = Plugin.resolve(module) || module;
192196

193197
tracked[name] = Common.map(module.uses || [], function(dependency) {
198+
if (Plugin.isPlugin(dependency)) {
199+
Plugin.register(dependency);
200+
}
201+
194202
var parsed = Plugin.dependencyParse(dependency),
195203
resolved = Plugin.resolve(dependency);
196204

@@ -204,7 +212,7 @@ var Common = require('./Common');
204212
module._warned = true;
205213
} else if (!resolved) {
206214
Common.warn(
207-
'Plugin.dependencies:', dependency, 'used by',
215+
'Plugin.dependencies:', Plugin.toString(dependency), 'used by',
208216
Plugin.toString(parsedBase), 'could not be resolved.'
209217
);
210218

0 commit comments

Comments
 (0)