This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/lib/js-patch.js
walterhiggins 19162c3688 First phase of transition from Bukkit to Canary.
Some of the plugins are not yet supported.
If you're feeling brave you can build from source using ant.
2014-09-29 23:42:41 +01:00

78 lines
2.3 KiB
JavaScript

module.exports = function( $ ) {
// wph 20140105 trim not availabe in String on Mac OS.
if ( typeof String.prototype.trim == 'undefined' ) {
String.prototype.trim = function( ) {
return this.replace( /^\s+|\s+$/g, '' );
};
}
// wph 20140316 Java 1.6.0_65 on mac does not have Function.prototype.bind
// code from http://webreflection.blogspot.ie/2010/02/functionprototypebind.html
if (typeof Function.prototype.bind == 'undefined' ) {
Function.prototype.bind = (function (slice){
// (C) WebReflection - Mit Style License
function bind(context) {
var self = this; // "trapped" function reference
// only if there is more than an argument
// we are interested into more complex operations
// this will speed up common bind creation
// avoiding useless slices over arguments
if (1 < arguments.length) {
// extra arguments to send by default
var $arguments = slice.call(arguments, 1);
return function () {
return self.apply(
context,
// thanks @kangax for this suggestion
arguments.length ?
// concat arguments with those received
$arguments.concat(slice.call(arguments)) :
// send just arguments, no concat, no slice
$arguments
);
};
}
// optimized callback
return function () {
// speed up when function is called without arguments
return arguments.length ? self.apply(context, arguments) : self.call(context);
};
}
// the named function
return bind;
}(Array.prototype.slice));
}
if (__plugin.canary){
require('task-canary')($);
} else {
require('task-bukkit')($);
}
return function unitTest( console ) {
/*
sanity tests
*/
$.setTimeout(function(){
console.log('js-patch setTimeout() test complete');
},100);
var clearMe = $.setTimeout(function(){
console.error('js-patch clearTimeout() test failed');
},100);
$.clearTimeout( clearMe );
var runs = 3;
var clearAfterRuns = $.setInterval(function(){
runs --;
if (runs == 0){
$.clearInterval(clearAfterRuns);
}
if (runs < 0){
console.error('js-patch clearInterval test failed.');
}
},100);
};
};