@rescript/std
Version:
The motiviation of this repo is that when ReScript users want to share their library with JS users, the JS users don't need have ReScript toolchain installed, this makes sharing code with JS users easier (more details on that topic can be found in our [Ex
53 lines (46 loc) • 1.17 kB
JavaScript
var spliceApply = (function(fn,args){
var i, argLen;
argLen = args.length
var applied = []
for(i = 0; i < argLen - 1; ++i){
applied.push(args[i])
}
var lastOne = args[argLen - 1]
for(i = 0; i < lastOne.length; ++i ){
applied.push(lastOne[i])
}
return fn.apply(null,applied)
});
var spliceNewApply = (function (ctor,args){
var i, argLen;
argLen = args.length
var applied = [null] // Function.prototype.bind.apply(fn, args) requires the first element in \`args\` to be \`null\`
for(i = 0; i < argLen - 1; ++i){
applied.push(args[i])
}
var lastOne = args[argLen - 1]
for(i = 0; i < lastOne.length; ++i ){
applied.push(lastOne[i])
}
var C = Function.prototype.bind.apply(ctor, applied)
return new C()
});
var spliceObjApply = (function(obj,name,args){
var i, argLen;
argLen = args.length
var applied = []
for(i = 0; i < argLen - 1; ++i){
applied.push(args[i])
}
var lastOne = args[argLen - 1]
for(i = 0; i < lastOne.length; ++i ){
applied.push(lastOne[i])
}
return (obj[name]).apply(obj,applied)
});
export {
spliceApply ,
spliceNewApply ,
spliceObjApply ,
}
/* No side effect */