mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +03:00
extended to be able to pass in own regexes
This commit is contained in:
parent
36de46956b
commit
d4229ed33b
@ -600,19 +600,39 @@
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extends the regex array with another regex array from a given input array
|
||||||
|
* @param {object} extensions extension objects that contains an array under the given paramName
|
||||||
|
* @param {string} paramName key of the extensions object that should be used if given.
|
||||||
|
*/
|
||||||
|
function extend(extensions, paramName) {
|
||||||
|
if (!extensions || !extensions[paramName] || extensions[paramName].length%2!==0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
regexes[paramName] = regexes[paramName].concat(extensions[paramName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////
|
/////////////////
|
||||||
// Constructor
|
// Constructor
|
||||||
////////////////
|
////////////////
|
||||||
|
|
||||||
|
|
||||||
var UAParser = function (uastring) {
|
var UAParser = function (uastring, extensions) {
|
||||||
|
|
||||||
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
||||||
|
|
||||||
if (!(this instanceof UAParser)) {
|
if (!(this instanceof UAParser)) {
|
||||||
return new UAParser(uastring).getResult();
|
return new UAParser(uastring, extensions).getResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// extend regexes
|
||||||
|
extend(extensions, 'browser');
|
||||||
|
extend(extensions, 'cpu');
|
||||||
|
extend(extensions, 'device');
|
||||||
|
extend(extensions, 'engine');
|
||||||
|
extend(extensions, 'os');
|
||||||
|
|
||||||
this.getBrowser = function () {
|
this.getBrowser = function () {
|
||||||
return mapper.rgx.apply(this, regexes.browser);
|
return mapper.rgx.apply(this, regexes.browser);
|
||||||
};
|
};
|
||||||
@ -648,6 +668,12 @@
|
|||||||
this.setUA(ua);
|
this.setUA(ua);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UAParser.NAME = NAME;
|
||||||
|
UAParser.VERSION = VERSION;
|
||||||
|
UAParser.VENDOR = VENDOR;
|
||||||
|
UAParser.TYPE = TYPE;
|
||||||
|
UAParser.ARCHITECTURE = ARCHITECTURE;
|
||||||
|
UAParser.MAJOR = MAJOR;
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
// Export
|
// Export
|
||||||
|
8
src/ua-parser.min.js
vendored
8
src/ua-parser.min.js
vendored
File diff suppressed because one or more lines are too long
13
test/test.js
13
test/test.js
@ -43,14 +43,23 @@ describe('UAParser()', function () {
|
|||||||
assert.deepEqual(UAParser(ua), new UAParser().setUA(ua).getResult());
|
assert.deepEqual(UAParser(ua), new UAParser().setUA(ua).getResult());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Injected Browser', function () {
|
||||||
|
var uaString = 'ownbrowser/1.3';
|
||||||
|
var ownBrowser = [[/(ownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.NAME, UAParser.VERSION, UAParser.MAJOR]];
|
||||||
|
var parser = new UAParser(uaString, {browser: ownBrowser});
|
||||||
|
assert.equal(parser.getBrowser().name, 'ownbrowser');
|
||||||
|
assert.equal(parser.getBrowser().major, '1');
|
||||||
|
assert.equal(parser.getBrowser().version, '1.3');
|
||||||
|
});
|
||||||
|
|
||||||
for (var i in methods) {
|
for (var i in methods) {
|
||||||
describe(methods[i]['title'], function () {
|
describe(methods[i]['title'], function () {
|
||||||
for (var j in methods[i]['list']) {
|
for (var j in methods[i]['list']) {
|
||||||
if (!!methods[i]['list'][j].ua) {
|
if (!!methods[i]['list'][j].ua) {
|
||||||
describe('[' + methods[i]['list'][j].desc + ']', function () {
|
describe('[' + methods[i]['list'][j].desc + ']', function () {
|
||||||
describe('"' + methods[i]['list'][j].ua + '"', function () {
|
describe('"' + methods[i]['list'][j].ua + '"', function () {
|
||||||
var expect = methods[i]['list'][j].expect;
|
var expect = methods[i]['list'][j].expect;
|
||||||
var result = parser.setUA(methods[i]['list'][j].ua).getResult()[methods[i]['label']];
|
var result = parser.setUA(methods[i]['list'][j].ua).getResult()[methods[i]['label']];
|
||||||
|
|
||||||
methods[i]['properties'].forEach(function(m) {
|
methods[i]['properties'].forEach(function(m) {
|
||||||
it('should return ' + methods[i]['label'] + ' ' + m + ': ' + expect[m], function () {
|
it('should return ' + methods[i]['label'] + ' ' + m + ': ' + expect[m], function () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user