From 2d885aef268563ab9b2c4d1c64706605a450a586 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Wed, 15 Oct 2014 06:57:03 +0700 Subject: [PATCH] Increment patch version to 0.7.1 --- bower.json | 8 +++++++- component.json | 2 +- package.json | 11 ++++++++--- readme.md | 20 +++++++++++--------- src/ua-parser.js | 39 ++++++++++++++++++++++++++++++--------- src/ua-parser.min.js | 2 +- test/test.js | 2 +- ua-parser-js.jquery.json | 2 +- 8 files changed, 60 insertions(+), 26 deletions(-) diff --git a/bower.json b/bower.json index e4dbcfa..4e2f993 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ua-parser-js", - "version": "0.7.0", + "version": "0.7.1", "authors": [ "Faisal Salman " ], @@ -16,20 +16,26 @@ "contributors": [ "Faisal Salman ", "Benjamin Bertrand ", + "Carl C Von Lewin ", "Christopher De Cairos ", "Davit Barbakadze ", "Dmitry Tyschenko ", "Douglas Li ", + "Dumitru Uzun ", "Erik Hesselink ", "Fabian Becker ", + "Hendrik Helwich ", "Jackpoll ", "Jake Mc ", "John Tantalo ", "John Yanarella ", "Jon Buckley ", + "Kendall Buchanan ", "Lee Treveil ", "Leonardo ", + "Max Maurer ", "Michael Hess ", + "OtakuSiD ", "Ross Noble ", "Sandro Sonntag " ], diff --git a/component.json b/component.json index 510b80f..da3f312 100644 --- a/component.json +++ b/component.json @@ -1,6 +1,6 @@ { "name": "ua-parser-js", - "version": "0.7.0", + "version": "0.7.1", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": ["user-agent", "parser", "browser", "engine", "os", "device", "cpu"], "scripts": ["src/ua-parser.js"], diff --git a/package.json b/package.json index 558d60e..27566ac 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "title": "UAParser.js", "name": "ua-parser-js", - "version": "0.7.0", + "version": "0.7.1", "author": "Faisal Salman (http://faisalman.com)", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": [ @@ -17,23 +17,28 @@ "contributors": [ "Faisal Salman ", "Benjamin Bertrand ", + "Carl C Von Lewin ", "Christopher De Cairos ", "Davit Barbakadze ", "Dmitry Tyschenko ", "Douglas Li ", + "Dumitru Uzun ", "Erik Hesselink ", "Fabian Becker ", + "Hendrik Helwich ", "Jackpoll ", "Jake Mc ", "John Tantalo ", "John Yanarella ", "Jon Buckley ", + "Kendall Buchanan ", "Lee Treveil ", "Leonardo ", + "Max Maurer ", "Michael Hess ", + "OtakuSiD ", "Ross Noble ", - "Sandro Sonntag ", - "Max Maurer " + "Sandro Sonntag " ], "main": "src/ua-parser.js", "scripts": { diff --git a/readme.md b/readme.md index 9cfc13f..c719b4e 100644 --- a/readme.md +++ b/readme.md @@ -10,7 +10,7 @@ Lightweight JavaScript-based User-Agent string parser. Supports browser & node.j ## Features -Extract detailed type of web browser, layout engine, operating system, cpu architecture, and device purely from user-agent string with relatively lightweight footprint (~11KB minified / ~4KB gzipped). Written in vanilla js, which means it doesn't depends on any other library. +Extract detailed type of web browser, layout engine, operating system, cpu architecture, and device type/model purely from user-agent string with relatively lightweight footprint (~11KB minified / ~4KB gzipped). Written in vanilla js, which means it doesn't depends on any other library. ![It's over 9000](https://pbs.twimg.com/media/A9LpEG6CIAA5VrT.jpg) @@ -38,12 +38,12 @@ Tizen, UCBrowser, w3m, Yandex ``` # Possible 'device.type': -console, mobile, tablet +console, mobile, tablet, smarttv # Possible 'device.vendor': -Acer, Alcatel, Apple, Asus, BenQ, BlackBerry, Dell, GeeksPhone, HP, HTC, Huawei, -Lenovo, LG, Meizu, Motorola, Nexian, Nintendo, Nokia, Palm, Panasonic, -RIM, Samsung, Siemens, Sony-Ericsson, Sprint, ZTE +Acer, Alcatel, Amazon, Apple, Asus, BenQ, BlackBerry, Dell, GeeksPhone, +HP, HTC, Huawei, Jolla, Lenovo, LG, Meizu, Motorola, Nexian, Nintendo, Nokia, +Palm, Panasonic, Polytron, RIM, Samsung, Siemens, Sony-Ericsson, Sprint, ZTE # 'device.model' determined dynamically ``` @@ -68,8 +68,8 @@ AIX, Amiga OS, Android, Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS, Fedora, Firefox OS, FreeBSD, Debian, DragonFly, Gentoo, GNU, Haiku, Hurd, iOS, Joli, Linux, Mac OS, Mandriva, MeeGo, Minix, Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OS/2, Palm, PCLinuxOS, Plan9, Playstation, QNX, RedHat, RIM Tablet OS, -RISC OS, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, UNIX, WebOS, -Windows [Phone/Mobile], Zenwalk +RISC OS, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, +UNIX, WebOS, Windows [Phone/Mobile], Zenwalk # 'os.version' determined dynamically ``` @@ -84,8 +84,10 @@ Windows [Phone/Mobile], Zenwalk * `getResult()` * returns `{ ua: '', browser: {}, cpu: {}, device: {}, engine: {}, os: {} }` + * `getUA()` * returns UA string of current instance + * `setUA(uastring)` * set & parse UA string @@ -167,12 +169,12 @@ Windows [Phone/Mobile], Zenwalk * `UAParser(uastring[, extensions])` -To extend the limited regex patterns, started in v0.7.1 you can now pass your own regex matching rules. +Pass your own regexes to extend the limited matching rules. ```js // Example: var uaString = 'ownbrowser/1.3'; -var ownBrowser = [[/(ownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.NAME, UAParser.VERSION, UAParser.MAJOR]]; +var ownBrowser = [[/(ownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]]; var parser = new UAParser(uaString, {browser: ownBrowser}); console.log(parser.getBrowser()); // {name: "ownbrowser", major: "1", version: "1.3"} ``` diff --git a/src/ua-parser.js b/src/ua-parser.js index 4c3f90b..1e09bd4 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -1,8 +1,8 @@ -// UAParser.js v0.7.0 +// UAParser.js v0.7.1 // Lightweight JavaScript-based User-Agent string parser // https://github.com/faisalman/ua-parser-js // -// Copyright © 2012-2013 Faisalman +// Copyright © 2012-2014 Faisal Salman // Dual licensed under GPLv2 & MIT (function (window, undefined) { @@ -14,7 +14,8 @@ ///////////// - var EMPTY = '', + var LIBVERSION = '0.7.1', + EMPTY = '', UNKNOWN = '?', FUNC_TYPE = 'function', UNDEF_TYPE = 'undefined', @@ -668,12 +669,32 @@ this.setUA(ua); }; - UAParser.NAME = NAME; - UAParser.VERSION = VERSION; - UAParser.VENDOR = VENDOR; - UAParser.TYPE = TYPE; - UAParser.ARCHITECTURE = ARCHITECTURE; - UAParser.MAJOR = MAJOR; + UAParser.VERSION = LIBVERSION; + UAParser.BROWSER = { + NAME : NAME, + MAJOR : MAJOR, + VERSION : VERSION + }; + UAParser.CPU = { + ARCHITECTURE : ARCHITECTURE + }; + UAParser.DEVICE = { + MODEL : MODEL, + VENDOR : VENDOR, + TYPE : TYPE, + CONSOLE : CONSOLE, + MOBILE : MOBILE, + SMARTTV : SMARTTV, + TABLET : TABLET + }; + UAParser.ENGINE = { + NAME : NAME, + VERSION : VERSION + }; + UAParser.OS = { + NAME : NAME, + VERSION : VERSION + }; /////////// diff --git a/src/ua-parser.min.js b/src/ua-parser.min.js index 35a12b4..92eac7b 100644 --- a/src/ua-parser.min.js +++ b/src/ua-parser.min.js @@ -1 +1 @@ -(function(window,undefined){"use strict";var EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv";var util={extend:function(regexes,extensions){for(var i in extensions){if("browser cpu device engine os".indexOf(i)!==-1&&extensions[i].length%2===0){regexes[i]=regexes[i].concat(extensions[i])}}return regexes},has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}},lowerize:function(str){return str.toLowerCase()}};var mapper={rgx:function(){for(var result,i=0,j,k,p,q,matches,match,args=arguments;i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}break}}if(!!matches)break}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}break}}if(!!matches)break}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j