From 8ba7e754761e6eb0426bbcfd8df1fb9697fe1d49 Mon Sep 17 00:00:00 2001 From: Faisalman Date: Tue, 20 Mar 2012 16:20:50 +0700 Subject: [PATCH] Make variable name less cryptic --- ua-parser.js | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/ua-parser.js b/ua-parser.js index a05bd4c..67ef0bc 100644 --- a/ua-parser.js +++ b/ua-parser.js @@ -1,57 +1,57 @@ -// UA-Parser.js v0.1.0 +// UA-Parser.js v0.1.1 // Lightweight JavaScript-based user-agent parser // https://github.com/faisalman/ua-parser-js // // Copyright © 2012 Faisalman // Licensed under GPLv2 -function uaparser(uastring){ +function uaparser (uastring) { // regexp mapper - var regxMap = function(ua){ - var i, j; - for(j = 1; j < arguments.length; j += 2){ - var rx = arguments[j], - asc = arguments[j+1], - k, l, m, n, o, p; - for(l = 0; l < rx.length; l++){ - m = rx[l].exec(ua); - //console.log(m); - if(!!m){ - k = {}; - o = 1; - for(n = 0; n < asc.length; n++){ - if(typeof asc[n] === 'object' && asc[n].length === 2){ - k[asc[n][0]] = asc[n][1]; - o -= 1; - } else if(typeof asc[n] === 'object' && asc[n].length === 3){ - k[asc[n][0]] = (!!m[n+o]) ? m[n+o].replace(asc[n][1], asc[n][2]) : 'unknown'; + var regxMap = function (ua) { + var result; + var i, j, k, l; + for (i = 1; i < arguments.length; i += 2) { + var regex = arguments[i]; + var props = arguments[i + 1]; + var isMatch = false; + for (j = 0; j < regex.length; j++) { + var match = regex[j].exec(ua); + //console.log(match); + if (!!match) { + result = {}; + l = 1; + for (k = 0; k < props.length; k++) { + if (typeof props[k] === 'object' && props[k].length === 2) { + result[props[k][0]] = props[k][1]; + l -= 1; + } else if (typeof props[k] === 'object' && props[k].length === 3) { + result[props[k][0]] = (!!match[k + l]) ? match[k + l].replace(props[k][1], props[k][2]) : 'unknown'; } else { - k[asc[n]] = (!!m[n+o]) ? m[n+o] : 'unknown'; + result[props[k]] = (!!match[k + l]) ? match[k + l] : 'unknown'; } }; - i = k; - p = true; + isMatch = true; break; } }; - if(!p){ - k = {}; - for(l in asc){ - if(asc.hasOwnProperty(l)){ - k[asc[l]] = 'unknown'; + if (!isMatch) { + result = {}; + for (j in props) { + if (props.hasOwnProperty(j)) { + result[props[j]] = 'unknown'; } }; - i = k; + } else { + break; } - if(p) break; }; - return i; + return result; }; - var mapper = { - win : function(){ - switch(arguments[1].toLowerCase()){ + var mapper = { + win: function (str, match) { + switch (match.toLowerCase()) { case 'nt 5.0': return '2000'; case 'nt 5.1': @@ -64,20 +64,20 @@ function uaparser(uastring){ case 'nt 6.2': return '8'; default: - return arguments[1]; + return match; }; } }; this.ua = uastring || window.navigator.userAgent; - this.getBrowser = function(){ + this.getBrowser = function() { return regxMap(this.ua, [ // Mixed /(kindle)\/((\d+)?[\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine)[\/\s]?((\d+)?[\w\.]+)/i, // Lunascape/Maxthon/Netfront/Jasmine + /(lunpropsape|maxthon|netfront|jasmine)[\/\s]?((\d+)?[\w\.]+)/i, // Lunpropsape/Maxthon/Netfront/Jasmine // Presto based /(opera\smini)\/((\d+)?[\w\.-]+)/i, // Opera Mini @@ -108,7 +108,7 @@ function uaparser(uastring){ ], ['name', 'release', 'version']); }; - this.getEngine = function(){ + this.getEngine = function() { return regxMap(this.ua, [ @@ -121,7 +121,7 @@ function uaparser(uastring){ ], ['version', 'name']); }; - this.getOS = function(){ + this.getOS = function() { return regxMap(this.ua, [