From 3d9f8433d14d16fd4af563e665dee7df6a1824bd Mon Sep 17 00:00:00 2001 From: Matthew Dean Date: Sat, 16 Jul 2016 20:45:46 -0700 Subject: [PATCH] Remove Node / Browserify 'path' module dependency --- lib/less/environment/abstract-file-manager.js | 1 + lib/less/environment/abstract-plugin-loader.js | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/less/environment/abstract-file-manager.js b/lib/less/environment/abstract-file-manager.js index 7c0e2063..4a384536 100644 --- a/lib/less/environment/abstract-file-manager.js +++ b/lib/less/environment/abstract-file-manager.js @@ -116,6 +116,7 @@ abstractFileManager.prototype.extractUrlParts = function extractUrlParts(url, ba returner.hostPart = urlParts[1]; returner.directories = directories; returner.path = (urlParts[1] || "") + directories.join("/"); + returner.filename = urlParts[4]; returner.fileUrl = returner.path + (urlParts[4] || ""); returner.url = returner.fileUrl + (urlParts[5] || ""); return returner; diff --git a/lib/less/environment/abstract-plugin-loader.js b/lib/less/environment/abstract-plugin-loader.js index 5840eab9..fba27a1b 100644 --- a/lib/less/environment/abstract-plugin-loader.js +++ b/lib/less/environment/abstract-plugin-loader.js @@ -32,11 +32,13 @@ AbstractPluginLoader.prototype.evalPlugin = function(contents, context, pluginOp filename = fileInfo.filename; } } + var shortname = (new this.less.FileManager()).extractUrlParts(filename).filename; + if (filename) { pluginObj = pluginManager.get(filename); if (pluginObj) { - this.trySetOptions(pluginObj, filename, pluginOptions); + this.trySetOptions(pluginObj, filename, shortname, pluginOptions); if (pluginObj.use) { pluginObj.use.call(this.context, pluginObj); } @@ -58,14 +60,14 @@ AbstractPluginLoader.prototype.evalPlugin = function(contents, context, pluginOp if (!pluginObj) { pluginObj = localModule.exports; } - pluginObj = this.validatePlugin(pluginObj, filename); + pluginObj = this.validatePlugin(pluginObj, filename, shortname); if (pluginObj) { // Run on first load pluginManager.addPlugin(pluginObj, fileInfo.filename, registry); pluginObj.functions = registry.getLocalFunctions(); - this.trySetOptions(pluginObj, filename, pluginOptions); + this.trySetOptions(pluginObj, filename, shortname, pluginOptions); // Run every @plugin call if (pluginObj.use) { @@ -91,8 +93,7 @@ AbstractPluginLoader.prototype.evalPlugin = function(contents, context, pluginOp }; -AbstractPluginLoader.prototype.trySetOptions = function(plugin, filename, options) { - var name = require('path').basename(filename); +AbstractPluginLoader.prototype.trySetOptions = function(plugin, filename, name, options) { if (options) { if (!plugin.setOptions) { error("Options have been provided but the plugin " + name + " does not support any options."); @@ -108,14 +109,14 @@ AbstractPluginLoader.prototype.trySetOptions = function(plugin, filename, option } }; -AbstractPluginLoader.prototype.validatePlugin = function(plugin, filename) { +AbstractPluginLoader.prototype.validatePlugin = function(plugin, filename, name) { if (plugin) { // support plugins being a function // so that the plugin can be more usable programmatically if (typeof plugin === "function") { plugin = new plugin(); } - var name = require('path').basename(filename); + if (plugin.minVersion) { if (this.compareVersion(plugin.minVersion, this.less.version) < 0) { error("Plugin " + name + " requires version " + this.versionToString(plugin.minVersion));