1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- var path = require('path'),
- PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise,
- AbstractPluginLoader = require('../less/environment/abstract-plugin-loader.js');
- /**
- * Node Plugin Loader
- */
- var PluginLoader = function(less) {
- this.less = less;
- this.require = function(prefix) {
- prefix = path.dirname(prefix);
- return function(id) {
- var str = id.substr(0, 2);
- if (str === '..' || str === './') {
- return require(path.join(prefix, id));
- }
- else {
- return require(id);
- }
- };
- };
- };
- PluginLoader.prototype = new AbstractPluginLoader();
- PluginLoader.prototype.loadPlugin = function(filename, basePath, context, environment, fileManager) {
- var prefix = filename.slice(0, 1);
- var explicit = prefix === '.' || prefix === '/' || filename.slice(-3).toLowerCase() === '.js';
- if (!explicit) {
- context.prefixes = ['less-plugin-', ''];
- }
- return new PromiseConstructor(function(fulfill, reject) {
- fileManager.loadFile(filename, basePath, context, environment).then(
- function(data) {
- try {
- fulfill(data);
- }
- catch (e) {
- console.log(e);
- reject(e);
- }
- }
- ).catch(function(err) {
- reject(err);
- });
- });
- };
- module.exports = PluginLoader;
|