1 /*! 2 * Wef 3 * Copyright (c) 2011 Pablo Escalada 4 * MIT Licensed 5 */ 6 7 /** 8 * wef module 9 */ 10 (function () { 11 var wef; 12 /** 13 * @namespace 14 */ 15 wef = function () { 16 return new wef.prototype.init(); 17 }; 18 19 wef.prototype = { 20 constructor:wef, 21 /** 22 * Version number 23 */ 24 version:"0.2.0", 25 /** 26 * @ignore 27 */ 28 init:function () { 29 return this; 30 } 31 }; 32 33 /** 34 * Extension point 35 */ 36 wef.fn = wef.prototype; 37 38 /** 39 * @ignore 40 */ 41 wef.prototype.init = function () { 42 return this; 43 }; 44 45 wef.prototype.init.prototype = wef.prototype; 46 47 /** 48 * Extends an object with other object properties 49 * @param {Object}receiver receiver object 50 * @param {Object}giver giver object 51 * @param {string[]}[filter] array of strings. If giver property name is 52 * contained in filter is added to receiver, else don't 53 * 54 * @memberOf wef 55 */ 56 wef.fn.extend = function (receiver, giver, filter) { 57 var tmp = receiver, property; 58 //both must be objects 59 if (typeof receiver === "object" && typeof giver === "object") { 60 if (tmp === null) { 61 tmp = {}; 62 } 63 if (receiver === null) { 64 return tmp; 65 } 66 67 for (property in giver) { 68 if ((!filter || filter.indexOf(property) !== -1) && giver.hasOwnProperty(property) && giver[property] !== undefined) { 69 tmp[property] = giver[property]; 70 } 71 } 72 return tmp; 73 } 74 wef.fn.error("InvalidArgumentException: incorrect argument type"); 75 return null; 76 }; 77 78 wef.fn.hasOwnProperty = function(o, property) { 79 //literal objects in IE don't have hasOwnProperty 80 //todo:delete???? 81 return Object.prototype.hasOwnProperty.call(o, property); 82 }; 83 84 /** 85 * Checks if param is a Function 86 * @param obj object to check 87 * @returns {boolean} true if a Function, false if not 88 * 89 * @memberOf wef 90 */ 91 wef.fn.isFunction = function (obj) { 92 return typeof obj == "function"; 93 }; 94 95 /** 96 * Checks if param is a literal string 97 * @param obj object to check 98 * @returns {boolean} true if a literal string, false if not 99 * 100 * @memberOf wef 101 */ 102 wef.fn.isString = function (obj) { 103 return typeof obj == "string"; 104 }; 105 106 /** 107 * Throws an Error 108 * @param message error message 109 * 110 * @memberOf wef 111 */ 112 wef.fn.error = function (message) { 113 throw new Error(message); 114 }; 115 116 //registering global variable 117 if (window.wef) { 118 throw new Error("wef has already been defined"); 119 } else { 120 window.wef = wef(); 121 } 122 123 })(); 124