UNPKG

nodulator

Version:

Complete NodeJS Framework for Restfull APIs

51 lines (50 loc) 1.65 kB
// Generated by LiveScript 1.4.0 (function(){ var ref$, first, keys, values, findIndex, map, isType, slice$ = [].slice, toString$ = {}.toString; ref$ = require('prelude-ls'), first = ref$.first, keys = ref$.keys, values = ref$.values, findIndex = ref$.findIndex, map = ref$.map, isType = ref$.isType; module.exports = function(){ var i$, types, f; types = 0 < (i$ = arguments.length - 1) ? slice$.call(arguments, 0, i$) : (i$ = 0, []), f = arguments[i$]; types = map(function(it){ switch (false) { case !isType('String', it): return { type: it }; case !isType('Object', it): return import$({ type: first(keys(it)) }, first(values(it))); } })( types); return function(){ var args, resArgs; args = slice$.call(arguments); resArgs = map(function(it){ var argIdx, ref$; argIdx = findIndex(function(arg){ return toString$.call(arg).slice(8, -1) === it.type; })( args); switch (false) { case argIdx == null: return ref$ = args[argIdx], delete args[argIdx], ref$; case !(argIdx == null && it.optional != null): return null; case !(argIdx == null && it['default'] != null): return it['default']; default: throw new Error("No arguments of type: " + it.type); } })( types); return f.apply(this, resArgs); }; }; function import$(obj, src){ var own = {}.hasOwnProperty; for (var key in src) if (own.call(src, key)) obj[key] = src[key]; return obj; } }).call(this);