/* */ 'use strict'; var $ = require("./$"), invoke = require("./$.invoke"), assertFunction = require("./$.assert").fn; module.exports = function() { var fn = assertFunction(this), length = arguments.length, pargs = Array(length), i = 0, _ = $.path._, holder = false; while (length > i) if ((pargs[i] = arguments[i++]) === _) holder = true; return function() { var that = this, _length = arguments.length, j = 0, k = 0, args; if (!holder && !_length) return invoke(fn, pargs, that); args = pargs.slice(); if (holder) for (; length > j; j++) if (args[j] === _) args[j] = arguments[k++]; while (_length > k) args.push(arguments[k++]); return invoke(fn, args, that); }; };