mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
99 lines
3.1 KiB
JavaScript
99 lines
3.1 KiB
JavaScript
// Generated by CoffeeScript 1.12.7
|
|
(function() {
|
|
var abstract_mapper, adapter_to_name, fs, get_version, glob, indx, match_version_to_adapter, name_to_adapter, path, resolve, resolve_engine_path, semver, supports;
|
|
|
|
path = require('path');
|
|
|
|
fs = require('fs');
|
|
|
|
glob = require('glob');
|
|
|
|
indx = require('indx');
|
|
|
|
resolve = require('resolve');
|
|
|
|
semver = require('semver');
|
|
|
|
exports.supports = supports = function(name) {
|
|
name = adapter_to_name(name);
|
|
return !!glob.sync("" + (path.join(__dirname, 'adapters', name))).length;
|
|
};
|
|
|
|
exports.load = function(name, custom_path, engine_name) {
|
|
var adapter_name, engine_path, version;
|
|
name = adapter_to_name(name);
|
|
engine_path = resolve_engine_path(name, custom_path);
|
|
version = get_version(engine_path);
|
|
adapter_name = match_version_to_adapter(name, version);
|
|
if (!adapter_name) {
|
|
throw new Error(name + " version " + version + " is not currently supported");
|
|
}
|
|
return new (require(adapter_name))(engine_name, engine_path);
|
|
};
|
|
|
|
exports.all = function() {
|
|
return indx(path.join(__dirname, 'adapters'));
|
|
};
|
|
|
|
exports.abstract_mapper = abstract_mapper = function(name, direction) {
|
|
var name_maps, res;
|
|
name_maps = [['markdown', 'marked'], ['minify-js', 'uglify-js'], ['minify-css', 'clean-css'], ['minify-html', 'html-minifier'], ['mustache', 'hogan.js'], ['scss', 'node-sass'], ['haml', 'hamljs'], ['escape-html', 'he'], ['jsx', 'react-tools'], ['cjsx', 'coffee-react-transform'], ['babel', 'babel-core'], ['typescript', 'typescript-compiler']];
|
|
res = null;
|
|
name_maps.forEach(function(n) {
|
|
if (direction === 'left' && n[0] === name) {
|
|
res = n[1];
|
|
}
|
|
if (direction === 'right' && n[1] === name) {
|
|
return res = n[0];
|
|
}
|
|
});
|
|
return res || name;
|
|
};
|
|
|
|
exports.adapter_to_name = adapter_to_name = function(name) {
|
|
return abstract_mapper(name, 'right');
|
|
};
|
|
|
|
exports.name_to_adapter = name_to_adapter = function(name) {
|
|
return abstract_mapper(name, 'left');
|
|
};
|
|
|
|
resolve_engine_path = function(name, custom_path) {
|
|
var filepath;
|
|
filepath = custom_path != null ? resolve.sync(name_to_adapter(name), {
|
|
basedir: custom_path
|
|
}) : require.resolve(name_to_adapter(name));
|
|
while (true) {
|
|
if (filepath === '/') {
|
|
throw new Error("cannot resolve root of node module " + name);
|
|
}
|
|
filepath = path.dirname(filepath);
|
|
if (fs.existsSync(path.join(filepath, 'package.json'))) {
|
|
return filepath;
|
|
}
|
|
}
|
|
};
|
|
|
|
get_version = function(engine_path) {
|
|
var err;
|
|
try {
|
|
return require(engine_path + '/package.json').version;
|
|
} catch (error) {
|
|
err = error;
|
|
}
|
|
};
|
|
|
|
match_version_to_adapter = function(name, version) {
|
|
var adapter, adapters, i, len;
|
|
adapters = fs.readdirSync(path.join(__dirname, 'adapters', name));
|
|
for (i = 0, len = adapters.length; i < len; i++) {
|
|
adapter = adapters[i];
|
|
adapter = adapter.replace(/\.(?:js|coffee)$/, '');
|
|
if (semver.satisfies(version, adapter)) {
|
|
return path.join(__dirname, 'adapters', name, adapter);
|
|
}
|
|
}
|
|
};
|
|
|
|
}).call(this);
|