1
0
mirror of https://github.com/svg/svgo.git synced 2025-12-03 21:11:14 +03:00
Files
svgo/lib/plugins.js
deepsweet 13af2ed95e go!
2012-09-27 14:06:28 +03:00

85 lines
1.7 KiB
JavaScript

var INHERIT = require('inherit');
module.exports = function(json, plugins, pluginsEngine) {
var engine = new (pluginsEngine || PluginsEngine)();
json = engine.pass(json, plugins.directPass);
json = engine.pass(json, plugins.reversePass, true);
return json;
};
var PluginsEngine = exports.PluginsEngine = INHERIT({
_makePluginsList: function(arr) {
return arr.map(function(plugin) {
plugin.fn = require('../plugins/' + plugin.name)[plugin.name];
return plugin;
});
},
pass: function(json, plugins, reverse) {
plugins = this._makePluginsList(plugins);
function monkeys(data) {
data.content = data.content.filter(function(item) {
if (reverse && item.content) {
monkeys.call(this, item);
}
var filter = true;
plugins.forEach(function(plugin) {
if (plugin.active && plugin.fn(item, plugin.params) === false) {
filter = false;
}
});
if (!reverse && item.content) {
monkeys.call(this, item);
}
return filter;
}, this);
return data;
};
return monkeys.call(this, json);
},
full: function() {
this.fullList.forEach(function(plugin) {
if (plugin.active) {
json = plugin.fn(json, plugin.params);
}
});
return json;
}
});
/*
var MyPluginsEngine = INHERIT(PluginsEngine, {
__constructor: function(options) {
this.__base();
}
});
*/