uupaa.valid.js
Version:
Validate functions.
57 lines (45 loc) • 2.41 kB
JavaScript
// http://git.io/WebModule
// --- global variables ------------------------------------
// https://github.com/uupaa/WebModule/wiki/WebModuleIdiom
var GLOBAL = (this || 0).self || global;
// --- environment detection -------------------------------
// https://github.com/uupaa/WebModule/wiki/EnvironmentDetection
(function() {
var hasGlobal = !!GLOBAL.global;
var processType = !!(GLOBAL.process || 0).type;
var nativeTimer = !!/native/.test(setTimeout);
GLOBAL.IN_BROWSER = !hasGlobal && "document" in GLOBAL;
GLOBAL.IN_WORKER = !hasGlobal && "WorkerLocation" in GLOBAL;
GLOBAL.IN_NODE = hasGlobal && !processType && !nativeTimer;
GLOBAL.IN_NW = hasGlobal && !processType && nativeTimer;
GLOBAL.IN_EL = hasGlobal && processType;
})();
// --- validate and assert functions -----------------------
//{@dev https://github.com/uupaa/WebModule/wiki/Validate
GLOBAL.$type = function(v, types) { return GLOBAL.Valid ? GLOBAL.Valid.type(v, types) : true; };
GLOBAL.$keys = function(o, keys, ig) { return GLOBAL.Valid ? GLOBAL.Valid.keys(o, keys, ig) : true; };
GLOBAL.$values = function(o, vals, ig) { return GLOBAL.Valid ? GLOBAL.Valid.values(o, vals, ig) : true; };
GLOBAL.$some = function(v, cd, ig) { return GLOBAL.Valid ? GLOBAL.Valid.some(v, cd, ig) : true; };
GLOBAL.$args = function(api, args) { return GLOBAL.Valid ? GLOBAL.Valid.args(api, args) : true; };
GLOBAL.$valid = function(v, api, hl) { return GLOBAL.Valid ? GLOBAL.Valid(v, api, hl) : true; };
//}@dev
// --- WebModule -------------------------------------------
GLOBAL.WebModule = {
verify: false, // Verify mode
verbose: false, // Verbose mode
publish: false, // WebModule based modules publish to global.
closure: {}, // module script stocker
exports: function(moduleName, moduleClosure) {
var wm = this; // GLOBAL.WebModule
// https://github.com/uupaa/WebModule/wiki/SwitchModulePattern
var alias = wm[moduleName] ? (moduleName + "_") : moduleName;
if (!wm[alias]) { // secondary module already exported -> skip
wm[alias] = moduleClosure(GLOBAL); // evaluate the module entity
wm.closure[alias] = moduleClosure + ""; // stock
if (wm.publish && !GLOBAL[alias]) {
GLOBAL[alias] = wm[alias]; // publish to global
}
}
return wm[alias];
}
};