uastring is optional when using extensions

This commit is contained in:
Faisal Salman 2017-07-01 20:28:03 +07:00
parent fd46c4d2be
commit 5ae468a3d3
3 changed files with 20 additions and 8 deletions

View File

@ -253,16 +253,16 @@ $('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua.
## Extending regex patterns ## Extending regex patterns
* `UAParser(uastring[, extensions])` * `UAParser([uastring,] extensions)`
Pass your own regexes to extend the limited matching rules. Pass your own regexes to extend the limited matching rules.
```js ```js
// Example: // Example:
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
var myOwnRegex = [[/(myownbrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]]; var myOwnRegex = [[/(myownbrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]];
var parser = new UAParser(uaString, { browser: myOwnRegex }); var myParser = new UAParser({ browser: myOwnRegex });
console.log(parser.getBrowser()); // {name: "MyOwnBrowser", version: "1.3"} var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
console.log(myParser.setUA(uaString).getBrowser()); // {name: "MyOwnBrowser", version: "1.3"}
``` ```

View File

@ -818,6 +818,11 @@
var UAParser = function (uastring, extensions) { var UAParser = function (uastring, extensions) {
if (typeof uastring === 'object') {
extensions = uastring;
uastring = undefined;
}
if (!(this instanceof UAParser)) { if (!(this instanceof UAParser)) {
return new UAParser(uastring, extensions).getResult(); return new UAParser(uastring, extensions).getResult();
} }

View File

@ -68,10 +68,17 @@ for (var i in methods) {
describe('Extending Regex', function () { describe('Extending Regex', function () {
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3'; var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]]; 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'); var parser1 = new UAParser(uaString, {browser: myOwnBrowser});
assert.equal(parser.getBrowser().version, '1.3'); assert.equal(parser1.getBrowser().name, 'MyOwnBrowser');
assert.equal(parser.getBrowser().major, '1'); 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 () { describe('Using Require.js', function () {