diff options
Diffstat (limited to 'node_modules/ua-parser/js/lib/device.js')
-rw-r--r-- | node_modules/ua-parser/js/lib/device.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/ua-parser/js/lib/device.js b/node_modules/ua-parser/js/lib/device.js new file mode 100644 index 0000000..374e971 --- /dev/null +++ b/node_modules/ua-parser/js/lib/device.js @@ -0,0 +1,41 @@ +exports.Device = Device +function Device(family) { + this.family = family || 'Other'; +} + +Device.prototype.toString = function() { + return this.family; +}; + + +exports.makeParser = function(regexes) { + var parsers = regexes.map(function (obj) { + var regexp = new RegExp(obj.regex), + deviceRep = obj.device_replacement; + + function parser(str) { + var m = str.match(regexp); + if (!m) { return null; } + + var family = deviceRep ? deviceRep.replace('$1', m[1]) : m[1]; + return new Device(family); + } + + return parser; + }); + + function parser(str, ua_family, os_family) { + var obj; + + if (typeof str === 'string') { + for (var i = 0, length = parsers.length; i < length; i++) { + obj = parsers[i](str, ua_family, os_family); + if (obj) { return obj; } + } + } + + return obj || new Device(); + } + + return parser; +}; |