From 5ae468a3d30d9dd6f30d3d0d9913f421d4223e36 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 1 Jul 2017 20:28:03 +0700 Subject: [PATCH] uastring is optional when using extensions --- readme.md | 8 ++++---- src/ua-parser.js | 5 +++++ test/test.js | 15 +++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index 88edca8..98c6e58 100644 --- a/readme.md +++ b/readme.md @@ -253,16 +253,16 @@ $('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua. ## Extending regex patterns -* `UAParser(uastring[, extensions])` +* `UAParser([uastring,] extensions)` Pass your own regexes to extend the limited matching rules. ```js // Example: -var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3'; var myOwnRegex = [[/(myownbrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]]; -var parser = new UAParser(uaString, { browser: myOwnRegex }); -console.log(parser.getBrowser()); // {name: "MyOwnBrowser", version: "1.3"} +var myParser = new UAParser({ browser: myOwnRegex }); +var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3'; +console.log(myParser.setUA(uaString).getBrowser()); // {name: "MyOwnBrowser", version: "1.3"} ``` diff --git a/src/ua-parser.js b/src/ua-parser.js index c4ba8ad..2048a99 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -818,6 +818,11 @@ var UAParser = function (uastring, extensions) { + if (typeof uastring === 'object') { + extensions = uastring; + uastring = undefined; + } + if (!(this instanceof UAParser)) { return new UAParser(uastring, extensions).getResult(); } diff --git a/test/test.js b/test/test.js index 40a6e0d..2fd033e 100644 --- a/test/test.js +++ b/test/test.js @@ -68,10 +68,17 @@ for (var i in methods) { describe('Extending Regex', function () { var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3'; var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]]; - var parser = new UAParser(uaString, {browser: myOwnBrowser}); - assert.equal(parser.getBrowser().name, 'MyOwnBrowser'); - assert.equal(parser.getBrowser().version, '1.3'); - assert.equal(parser.getBrowser().major, '1'); + + var parser1 = new UAParser(uaString, {browser: myOwnBrowser}); + assert.equal(parser1.getBrowser().name, 'MyOwnBrowser'); + assert.equal(parser1.getBrowser().version, '1.3'); + assert.equal(parser1.getBrowser().major, '1'); + + var parser2 = new UAParser({browser: myOwnBrowser}); + assert.equal(parser2.getBrowser().name, undefined); + parser2.setUA(uaString); + assert.equal(parser2.getBrowser().name, 'MyOwnBrowser'); + assert.equal(parser1.getBrowser().version, '1.3'); }); describe('Using Require.js', function () {