mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +03:00
Merge branch 'develop' of github.com:faisalman/ua-parser-js into develop
This commit is contained in:
commit
309ec34951
@ -32,7 +32,8 @@
|
||||
"Leonardo <leofiore@libero.it>",
|
||||
"Michael Hess <mhess@connectify.me>",
|
||||
"Ross Noble <rosshnoble@gmail.com>",
|
||||
"Sandro Sonntag <sandro.sonntag@adorsys.de>"
|
||||
"Sandro Sonntag <sandro.sonntag@adorsys.de>",
|
||||
"Max Maurer <max@max-maurer.de>"
|
||||
],
|
||||
"main": "src/ua-parser.js",
|
||||
"scripts": {
|
||||
|
@ -166,6 +166,11 @@
|
||||
},
|
||||
|
||||
device : {
|
||||
amazon : {
|
||||
model : {
|
||||
'Fire Phone' : ['SD', 'KF']
|
||||
}
|
||||
},
|
||||
sprint : {
|
||||
model : {
|
||||
'Evo Shift 4G' : '7373KT'
|
||||
@ -411,7 +416,7 @@
|
||||
|
||||
/(ia64(?=;)|68k(?=\))|arm(?=v\d+;)|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i
|
||||
// IA64, 68K, ARM, IRIX, MIPS, SPARC, PA-RISC
|
||||
], [ARCHITECTURE, util.lowerize]
|
||||
], [[ARCHITECTURE, util.lowerize]]
|
||||
],
|
||||
|
||||
device : [[
|
||||
@ -433,6 +438,8 @@
|
||||
|
||||
/(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i // Kindle Fire HD
|
||||
], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
|
||||
/(sd|kf)[0349hijorstuw]+\sbuild\/[\w\.]+.*silk\//i // Fire Phone
|
||||
], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [
|
||||
|
||||
/\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone
|
||||
], [MODEL, VENDOR, [TYPE, MOBILE]], [
|
||||
@ -440,8 +447,8 @@
|
||||
], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [
|
||||
|
||||
/(blackberry)[\s-]?(\w+)/i, // BlackBerry
|
||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola)[\s_-]?([\w-]+)*/i,
|
||||
// BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Huawei/Meizu/Motorola
|
||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,
|
||||
// BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Huawei/Meizu/Motorola/Polytron
|
||||
/(hp)\s([\w\s]+\w)/i, // HP iPAQ
|
||||
/(asus)-?(\w+)/i // Asus
|
||||
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
||||
@ -506,8 +513,11 @@
|
||||
/android.+((ideatab[a-z0-9\-\s]+))/i // Lenovo
|
||||
], [[VENDOR, 'Lenovo'], MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/linux;.+((jolla));/i // Jolla
|
||||
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
||||
|
||||
/(mobile|tablet);.+rv\:.+gecko\//i // Unidentifiable
|
||||
], [TYPE, VENDOR, MODEL]
|
||||
], [[TYPE, util.lowerize], VENDOR, MODEL]
|
||||
],
|
||||
|
||||
engine : [[
|
||||
@ -540,11 +550,14 @@
|
||||
], [[NAME, 'BlackBerry'], VERSION], [
|
||||
/(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry
|
||||
/(tizen)\/([\w\.]+)/i, // Tizen
|
||||
/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i
|
||||
/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i,
|
||||
// Android/WebOS/Palm/QNX/Bada/RIM/MeeGo
|
||||
/linux;.+(sailfish);/i // Sailfish OS
|
||||
], [NAME, VERSION], [
|
||||
/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian
|
||||
], [[NAME, 'Symbian'], VERSION], [
|
||||
/\((series40);/i // Series 40
|
||||
], [NAME], [
|
||||
/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS
|
||||
], [[NAME, 'Firefox OS'], VERSION], [
|
||||
|
||||
@ -587,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
|
||||
////////////////
|
||||
|
||||
|
||||
var UAParser = function (uastring) {
|
||||
var UAParser = function (uastring, extensions) {
|
||||
|
||||
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
||||
|
||||
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 () {
|
||||
return mapper.rgx.apply(this, regexes.browser);
|
||||
};
|
||||
@ -635,6 +668,12 @@
|
||||
this.setUA(ua);
|
||||
};
|
||||
|
||||
UAParser.NAME = NAME;
|
||||
UAParser.VERSION = VERSION;
|
||||
UAParser.VENDOR = VENDOR;
|
||||
UAParser.TYPE = TYPE;
|
||||
UAParser.ARCHITECTURE = ARCHITECTURE;
|
||||
UAParser.MAJOR = MAJOR;
|
||||
|
||||
///////////
|
||||
// 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
@ -43,6 +43,15 @@ describe('UAParser()', function () {
|
||||
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) {
|
||||
describe(methods[i]['title'], function () {
|
||||
for (var j in methods[i]['list']) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user