File: src\plugins\aw2-log.js
/**
*
* aw2 library
* log plugin
*
* @module aw2.log
**/
(function() {
if(typeof(aw2) == "undefined") {
console.log("aw2.log[error]: requires aw2 core library!");
return false;
}
/**
* object providing Log storage and methods
*
* @class Log
* @constructor
**/
function Log() {
var self = this;
var loggingEnabled = ["console"];
var internalLog = [];
var invokeLog = {
"internal": function() {
internalLog.push(arguments);
},
"console": function() {
try {
console.log.apply(console, arguments);
} catch(e) {
console.log(arguments);
}
},
"alert": function() {
alert(arguments);
}
};
/**
* enables one or more specified logging types.
*
* @method enable
* @param {String} logType* logging type(s)
* @return {undefined}
**/
this.enable = function() {
for(var arg in arguments) {
if(aw2.isArray(arguments[arg])) {
self.enable.apply(this, arguments[arg]);
} else {
if(typeof(arguments[arg]) == "string" && typeof(invokeLog[arguments[arg]]) != "undefined") {
if(aw2.arrayContains(arguments[arg], loggingEnabled) == -1) {
loggingEnabled.push(arguments[arg]);
}
}
}
}
};
/**
* disables one or more specified logging types.
*
* @method disable
* @param {String} logType* logging type(s)
* @return {undefined}
**/
this.disable = function() {
for(var arg in arguments) {
if(aw2.isArray(arguments[arg])) {
self.disable.apply(this, arguments[arg]);
} else {
if(typeof(arguments[arg]) == "string" && typeof(invokeLog[arguments[arg]]) != "undefined") {
var findLog = aw2.arrayContains(arguments[arg], loggingEnabled);
if(findLog >= 0) {
loggingEnabled.splice(findLog, 1);
}
}
}
}
};
/**
* returns the types of logging currently being used.
*
* @method isLogging
* @return {undefined}
**/
this.isLogging = function() {
return loggingEnabled;
};
/**
* clears the internal log storage.
*
* @method clear
* @return {undefined}
**/
this.clear = function() {
internalLog.length = 0;
};
/**
* returns the internal logging array.
*
* @method get
* @return {Array} the internal logs currently being stored
**/
this.get = function() {
return internalLog;
};
/**
* the basic log function which will perform logging of inputs
*
* @method log
* @param {any} data* data to be logged
* @return {undefined}
**/
var log = function() {
for(var thisLog in loggingEnabled) {
invokeLog[loggingEnabled[thisLog]].apply(this, arguments);
}
};
return aw2.extend(log, this);
}
/**
* Container for Log plugin functions to be made available.
*
* @property $aw2.log
* @type {Object}
**/
aw2.extend({
log: new Log()
});
})();