Generated functions with given signatures

by Arnaud Buchholz

JavaScript

function _addDefaults (object) {
	object.viewNamespace = "_sDefaultNameSpace";
}

function genWaitForStructure () {
	var expectedArguments = arguments;
  return function () {
  	var result = {},
    	  receivedArguments = arguments;
    [].slice.call(expectedArguments).forEach(function (name, index) {
    	if (index < receivedArguments.length) {
      	result[name] = receivedArguments[index];
      }
    });
    _addDefaults(result);
    return result;
  }
}

function assert(condition, message) {
	if (!condition) {
    alert(message);
  }
}

var _waitForId = genWaitForStructure("id", "viewName", "success", "check");
var _waitForButton = genWaitForStructure("viewName", "controlType", "success", "check");

assert(typeof _waitForId === "function", "No function was generated");
var result = _waitForId("abc", "view", "success");
assert(typeof result === "object", "No object is returned out of the function");
assert(result.id === "abc", "ID is not set");
assert(result.viewName === "view", "VIEW is not set");
assert(result.viewNamespace === "_sDefaultNameSpace", "VIEWNAMESPACE is not set");
assert(result.check === undefined, "CHECK is set ?");
alert("OK");