UNPKG

kibana-123

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

55 lines (43 loc) 1.47 kB
var _ = require('lodash'); // Applies to unresolved arguments in the AST module.exports = function repositionArguments(functionDef, unorderedArgs) { var args = []; _.each(unorderedArgs, function (unorderedArg, i) { var argDef; var targetIndex; var value; var storeAsArray; if (_.isObject(unorderedArg) && unorderedArg.type === 'namedArg') { argDef = functionDef.argsByName[unorderedArg.name]; if (!argDef) { if (functionDef.extended) { var namesIndex = functionDef.args.length; targetIndex = functionDef.args.length + 1; args[namesIndex] = args[namesIndex] || []; args[namesIndex].push(unorderedArg.name); argDef = functionDef.extended; storeAsArray = true; } } else { targetIndex = _.findIndex(functionDef.args, function (orderedArg) { return unorderedArg.name === orderedArg.name; }); storeAsArray = argDef.multi; } value = unorderedArg.value; } else { argDef = functionDef.args[i]; storeAsArray = argDef.multi; targetIndex = i; value = unorderedArg; } if (!argDef) throw new Error('Unknown argument to ' + functionDef.name + ': ' + (unorderedArg.name || ('#' + i))); if (storeAsArray) { args[targetIndex] = args[targetIndex] || []; args[targetIndex].push(value); } else { args[targetIndex] = value; } }); return args; };