UNPKG

landers.parse-arguments

Version:

landers.parse-arguments

65 lines (58 loc) 1.77 kB
;(function (root, jQuery, factory) { if (typeof exports === 'object' && typeof module !== 'undefined') { // CommonJS、CMD规范检查 module.exports = factory(jQuery); } else if (typeof define === 'function' && define.amd) { // AMD规范检查 define(factory); } else { root.Landers = root.Landers || {}; // 浏览器注册全局对象 Landers.parseArgs = factory(jQuery); } })(this, jQuery, (function ($) { function get_type(xvar){ if (xvar instanceof $) { return 'jobject'; } if ($.isPlainObject(xvar)) { return 'json'; } if ($.isArray(xvar)) { return 'array'; } return typeof xvar; } return function(args, maps){ var ret = {}, enums; maps = maps || {}; //找出enum项 for(var k in maps) { var arr = k.match(/^__ENUM:(.*)$/); if (arr) { enums = enums || {}; enums[k] = eval('(' + arr[1] + ')'); } } for (var i=0; i<args.length; i++) { var type = get_type(args[i]); if (enums && (type == 'string' || type == 'number')) { var tmp = false; for (var j in enums) { if ($.inArray(args[i], enums[j])) { ret[maps[j]] = args[i]; delete enums[j]; tmp = true; } } if (tmp) continue; } if (maps[type]) { ret[maps[type]] = args[i]; } else { ret[type] = args[i]; } }; return ret; } }));