summaryrefslogtreecommitdiff
path: root/node_modules/ua-parser/js/lib/ua.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ua-parser/js/lib/ua.js')
-rw-r--r--node_modules/ua-parser/js/lib/ua.js53
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