From 51822ad1722b7a3bbc455c0044faae8ae82857be Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 15 Sep 2012 02:16:02 +0700 Subject: [PATCH] Make sure the result only get constructed once --- package.json | 2 +- ua-parser.js | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 11ffd17..1b4482d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "title": "UA-Parser.JS", "name": "ua-parser-js", - "version": "0.3.4", + "version": "0.3.5", "author": "Faisal Salman (http://faisalman.com)", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": [ diff --git a/ua-parser.js b/ua-parser.js index 0c8a980..bc84ebf 100644 --- a/ua-parser.js +++ b/ua-parser.js @@ -1,4 +1,4 @@ -// UA-Parser.JS v0.3.4 +// UA-Parser.JS v0.3.5 // Lightweight JavaScript-based User-Agent string parser // https://github.com/faisalman/ua-parser-js // @@ -9,7 +9,7 @@ var regexMapper = function (ua, args) { - var result = {}, i, j, k, l, m; + var result, i, j, k, l, m; // loop through all regexes maps for (i = 1; i < arguments.length; i += 2) { @@ -18,11 +18,17 @@ props = arguments[i + 1]; // odd sequence (2,4,6,..) // build object barebones - for (k = 0; k < props.length; k++) { - if (typeof props[k] === 'object') { - result[props[k][0]] = undefined; - } else { - result[props[k]] = undefined; + if (typeof result === 'undefined') { + result = {}; + for (k = 0; k < props.length; k++) { + if (typeof props[k] === 'object') { + result[props[k][0]] = undefined; + } else { + result[props[k]] = undefined; + } + } + if (ua.toString() === '') { + return result; } } @@ -217,7 +223,7 @@ /sec-((sgh\w+))/i ], [['name', 'Samsung'], 'version'], [ - /((transfo[prime\s]{4,10}\s\w+|(?:android.*)eeepc))/i // Asus + /((transfo[prime\s]{4,10}\s\w+))|(?:android.*)((eeepc))/i // Asus ], [['name', 'Asus'], 'version'], [ /(sie)-(\w+)*/i // Siemens