StackExchange Api 0.0.0.1
A JavaScript StackExchange API implementation
by Glutamat
JavaScript
//@author C5H8NNaO4 (http://stackoverflow.com/users/1487756/c5h8nnao4)
/*jshint forin:false, eqnull:true, latedef: nofunc, camelcase:true, boss:true, curly:true, eqeqeq: true, immed:true, indent: 4*/
var util = {
enforceSignature: function enforcesSignature(options, args, fn) { //This is mainly a debug validation function may be replaced by a simpler one. If you pass a functin, its parameters get parsed and outputted on a mismatch.
var params, i, l, j, k, res;
res = true;
for (i = 0, l = options.length; i < l; i++) {
var types = options[i] = Array.isArray(options[i]) ? options[i] : [options[i]];
var mismatch = true;
for (j = 0, k = types.length; j < k; j++) {
if ((args[i] && args[i].constructor === types[j]) || (types[j] === args[i])) {
mismatch = false;
break;
}
}
if (mismatch) {
res = false;
break;
}
}
j--;
if (!res) {
var err = [
i >= 0 ? i : "?",
options[i][j] && (options[i][j].name || "asd"),
args[i] && args[i].constructor && args[i].constructor.name || '"' + args[i] + '"'];
if ("function" === typeof fn) {
params = ("" + fn).match(/\((.*)\)/)[1].split(",");
err.push(params[i] || "unknown");
throw new TypeError("Type mismatch on " + fn.name + " " + err[0] + " (" + err[1] + "). Expected " + err[2] + ", got " + err[3] + " instead");
} else {
throw new TypeError("Type mismatch on parameter" + err[1] + ". Expected " + err[2] + ", got " + err[3] + " instead");
}
}
return true;
},
formatString: function() {
var...