diff options
Diffstat (limited to 'node_modules/ua-parser/js/lib/ua.js')
-rw-r--r-- | node_modules/ua-parser/js/lib/ua.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/node_modules/ua-parser/js/lib/ua.js b/node_modules/ua-parser/js/lib/ua.js new file mode 100644 index 0000000..d8876d6 --- /dev/null +++ b/node_modules/ua-parser/js/lib/ua.js @@ -0,0 +1,53 @@ +var startsWithDigit = require('./helpers').startsWithDigit, + OS = require('./os').OS; + +exports.UA = UA +function UA(family, major, minor, patch) { + this.family = family || 'Other'; + this.major = major || null; + this.minor = minor || null; + this.patch = patch || null; +} + +require('util').inherits(UA, OS) + +function _makeParsers(obj) { + var regexp = new RegExp(obj.regex), + famRep = obj.family_replacement, + majorRep = obj.v1_replacement, + minorRep = obj.v2_replacement, + patchRep = obj.v3_replacement; + + function parser(str) { + var m = str.match(regexp); + if (!m) { return null; } + + var family = famRep ? famRep.replace('$1', m[1]) : m[1], + major = majorRep || m[2], + minor = minorRep || m[3], + patch = patchRep || m[4]; + + return new UA(family, major, minor, patch); + } + + return parser; +} + +exports.makeParser = function(regexes) { + var parsers = regexes.map(_makeParsers) + + function parser(str) { + var obj; + + if (typeof str === 'string') { + for (var i = 0, length = parsers.length; i < length; i++) { + obj = parsers[i](str); + if (obj) { return obj; } + } + } + + return obj || new UA(); + } + + return parser; +}
\ No newline at end of file |