extended to be able to pass in own regexes

This commit is contained in:
Max Maurer
2014-10-06 17:30:52 +02:00
parent 36de46956b
commit d4229ed33b
3 changed files with 46 additions and 5 deletions

View File

@@ -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
////////////////
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);
};
@@ -648,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

File diff suppressed because one or more lines are too long