forked from public/fvtt-cthulhu-eternal
Initial import with skill sheet working
This commit is contained in:
55
node_modules/undertaker/lib/helpers/normalizeArgs.js
generated
vendored
Normal file
55
node_modules/undertaker/lib/helpers/normalizeArgs.js
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
|
||||
var assert = require('assert');
|
||||
|
||||
var levenshtein = require('fast-levenshtein');
|
||||
|
||||
function normalizeArgs(registry, args) {
|
||||
function getFunction(task) {
|
||||
if (typeof task === 'function') {
|
||||
return task;
|
||||
}
|
||||
|
||||
var fn = registry.get(task);
|
||||
if (!fn) {
|
||||
var similar = similarTasks(registry, task);
|
||||
var err;
|
||||
if (similar.length > 0) {
|
||||
err = new Error('Task never defined: ' + task + ' - did you mean? ' + similar.join(', '));
|
||||
err.task = task;
|
||||
err.similar = similar;
|
||||
} else {
|
||||
err = new Error('Task never defined: ' + task);
|
||||
err.task = task;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
return fn;
|
||||
}
|
||||
|
||||
var flattenArgs = Array.prototype.concat.apply([], args);
|
||||
assert(flattenArgs.length, 'One or more tasks should be combined using series or parallel');
|
||||
|
||||
return flattenArgs.map(getFunction);
|
||||
}
|
||||
|
||||
function similarTasks(registry, queryTask) {
|
||||
if (typeof queryTask !== 'string') {
|
||||
return [];
|
||||
}
|
||||
|
||||
var tasks = registry.tasks();
|
||||
var similarTasks = [];
|
||||
for (var task in tasks) {
|
||||
if (Object.prototype.hasOwnProperty.call(tasks, task)) {
|
||||
var distance = levenshtein.get(task, queryTask);
|
||||
var allowedDistance = Math.floor(0.4 * task.length) + 1;
|
||||
if (distance < allowedDistance) {
|
||||
similarTasks.push(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
return similarTasks;
|
||||
}
|
||||
|
||||
module.exports = normalizeArgs;
|
||||
Reference in New Issue
Block a user