/**
* Plugin Manager */
var PluginManager = function(less) {
this.less = less; this.visitors = []; this.preProcessors = []; this.postProcessors = []; this.installedPlugins = []; this.fileManagers = [];
}; /**
* Adds all the plugins in the array * @param {Array} plugins */
PluginManager.prototype.addPlugins = function(plugins) {
if (plugins) { for (var i = 0; i < plugins.length; i++) { this.addPlugin(plugins[i]); } }
}; /**
* * @param plugin */
PluginManager.prototype.addPlugin = function(plugin) {
this.installedPlugins.push(plugin); plugin.install(this.less, this);
}; /**
* Adds a visitor. The visitor object has options on itself to determine * when it should run. * @param visitor */
PluginManager.prototype.addVisitor = function(visitor) {
this.visitors.push(visitor);
}; /**
* Adds a pre processor object * @param {object} preProcessor * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import */
PluginManager.prototype.addPreProcessor = function(preProcessor, priority) {
var indexToInsertAt; for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) { if (this.preProcessors[indexToInsertAt].priority >= priority) { break; } } this.preProcessors.splice(indexToInsertAt, 0, {preProcessor: preProcessor, priority: priority});
}; /**
* Adds a post processor object * @param {object} postProcessor * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression */
PluginManager.prototype.addPostProcessor = function(postProcessor, priority) {
var indexToInsertAt; for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) { if (this.postProcessors[indexToInsertAt].priority >= priority) { break; } } this.postProcessors.splice(indexToInsertAt, 0, {postProcessor: postProcessor, priority: priority});
}; /**
* * @param manager */
PluginManager.prototype.addFileManager = function(manager) {
this.fileManagers.push(manager);
}; /**
* * @returns {Array} * @private */
PluginManager.prototype.getPreProcessors = function() {
var preProcessors = []; for (var i = 0; i < this.preProcessors.length; i++) { preProcessors.push(this.preProcessors[i].preProcessor); } return preProcessors;
}; /**
* * @returns {Array} * @private */
PluginManager.prototype.getPostProcessors = function() {
var postProcessors = []; for (var i = 0; i < this.postProcessors.length; i++) { postProcessors.push(this.postProcessors[i].postProcessor); } return postProcessors;
}; /**
* * @returns {Array} * @private */
PluginManager.prototype.getVisitors = function() {
return this.visitors;
}; /**
* * @returns {Array} * @private */
PluginManager.prototype.getFileManagers = function() {
return this.fileManagers;
}; module.exports = PluginManager;