browserino 1.0.2 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09967128c9c89bc6bb97b7cd455ddf0a91f8947e
4
- data.tar.gz: 57fff14bb77564131996b23d066764746692f8bf
3
+ metadata.gz: 829974a6744a8e99a66ca28dd8a73298e647bb09
4
+ data.tar.gz: f8930fa43ae37894a805e84747b8f3aaf4a89386
5
5
  SHA512:
6
- metadata.gz: d55c9c93837fcfce61caf28ac2c845313b05c8aa6378b25ca0217fab37c919754a5d23972dfa947ade7b4a3b6fac71f5906b5bd77a805157883319b452c60ade
7
- data.tar.gz: 0756df1c2c34208293f74aba43e670312e4a6ced67f03eb4bab2b78479e6096315736365a3f803617d7717c2856c1eefb240b2690dc3a861c29eb22a7174ffb7
6
+ metadata.gz: 58351ed9e54ffb8e1a5889780a6dfeca4ee8deea880253c26b9a39cc6c4f922d2e4b314f06a78d694b13db4c1efae4437ee8f851b1bb96afdfba5e381ec253fa
7
+ data.tar.gz: 897d7f2b7e3d3460b147883919e3f872ccb311256e8811c79e2ce02b11c7111c639e15d1b4ed9ed7213a41321b7a73444f2b541b36bc03fce0210605077b6545
@@ -2,47 +2,60 @@ module Browserino
2
2
  class Agent
3
3
  attr_accessor :info
4
4
 
5
- def initialize(hash)
5
+ def initialize(hash, unknown = Browserino::UNKNOWN)
6
6
  @info = hash
7
+ @unknown = unknown
7
8
  end
8
9
 
9
10
  def browser_name
10
- @info[:browser_name].downcase || Browserino::UNKNOWN
11
+ with_valid(@info[:browser_name]) { |v| v.to_s.downcase }
11
12
  end
12
13
 
13
14
  def browser_version
14
- @info[:browser_version].gsub('_', '.').downcase || Browserino::UNKNOWN
15
+ with_valid(@info[:browser_version]) { |v| v.to_s.downcase.gsub('_', '.') }
15
16
  end
16
17
 
17
18
  def engine_name
18
- @info[:engine_name].downcase || Browserino::UNKNOWN
19
+ with_valid(@info[:engine_name]) { |v| v.to_s.downcase }
20
+
19
21
  end
20
22
 
21
23
  def engine_version
22
- @info[:engine_version].gsub('_', '.').downcase || Browserino::UNKNOWN
24
+ with_valid(@info[:engine_version]) { |v| v.to_s.downcase.gsub('_', '.') }
23
25
  end
24
26
 
25
27
  def system_name(opts = {})
26
28
  opts = {full: true}.merge(opts)
27
- name = @info[:system_name].downcase
29
+ name = with_valid(@info[:system_name]) { |v| v.to_s.downcase }
28
30
  if opts[:full]
29
- [name, fetch_system_version_name(name).downcase]
31
+ [name, fetch_system_version_name(name)]
30
32
  else
31
- name || Browserino::UNKNOWN
33
+ name
32
34
  end
33
35
  end
34
36
 
35
37
  def system_version
36
- @info[:system_version].gsub('_', '.').downcase || Browserino::UNKNOWN
38
+ with_valid(@info[:system_version]) { |v| v.to_s.downcase.gsub('_', '.') }
37
39
  end
38
40
 
39
41
  def system_architecture
40
- @info[:system_architecture].downcase || Browserino::UNKNOWN
42
+ with_valid(@info[:system_architecture]) { |v| v.to_s.downcase }
41
43
  end
42
44
 
43
45
  private
44
46
 
47
+ def with_valid(val)
48
+ if val && (val != '' || val != false) && block_given?
49
+ res = yield(val)
50
+ return @unknown if res == ''
51
+ res
52
+ else
53
+ @unknown
54
+ end
55
+ end
56
+
45
57
  def fetch_system_version_name(name)
58
+ return @unknown if name.nil? || name == '' || !name
46
59
  const = name.upcase
47
60
  name.downcase!
48
61
  if name.match(/mac|ios/i)
@@ -53,7 +66,7 @@ module Browserino
53
66
  if version && defined? const
54
67
  Browserino::Mapping.const_get(const).select { |name, versions| true if versions.include?(version) }.keys.first
55
68
  else
56
- Browserino::UNKNOWN
69
+ @unknown
57
70
  end
58
71
  end
59
72
  end
@@ -3,43 +3,43 @@ module Browserino
3
3
  browser: {
4
4
  opera: {
5
5
  name: /(?<name>ope?ra?)/i,
6
- version: /(ope?ra?|version)(\/|\s)(?<version>[\d\.]+)/i
6
+ version: /(?:ope?ra?|version)(\/|\s)(?<version>[\d\.]+)/i
7
7
  },
8
8
 
9
9
  maxthon: {
10
10
  name: /(?<name>maxthon)/i,
11
- version: /maxthon(\s|\/)(?<version>[\d\.]+)/i
11
+ version: /maxthon(?:\s|\/)(?<version>[\d\.]+)/i
12
12
  },
13
13
 
14
14
  ie: {
15
15
  name: /(?<name>msie|trident)/i,
16
- version: /((ms)?ie\s|rv\:)(?<version>[\d\.b]+)/i
16
+ version: /(?:(?:ms)?ie\s|rv\:)(?<version>[\d\.b]+)/i
17
17
  },
18
18
 
19
19
  firefox: {
20
- name: /(?<name>(fire|water)(fox|bird)|ice(weasel|cat)|netscape)/i,
21
- version: /((fire|water)(fox|bird)|ice(weasel|cat)|netscape)[\/]?(?<version>[\d\.]+)/i
20
+ name: /(?<name>(?:fire|water)(?:fox|bird)|ice(?:weasel|cat)|netscape)/i,
21
+ version: /(?:(?:fire|water)(?:fox|bird)|ice(?:weasel|cat)|netscape)[\/]?(?<version>[\d\.]+)/i
22
22
  },
23
23
 
24
24
  chrome: {
25
25
  name: /(?<name>chrome?(ium|plus)?)/i,
26
- version: /chrome?(ium|plus)?\/(?<version>[\d\.]+)/i
26
+ version: /chrome?(?:ium|plus)?\/(?<version>[\d\.]+)/i
27
27
  },
28
28
 
29
29
  safari: {
30
30
  name: /(?<name>safari)/i,
31
- version: /(version|safari)\/(?<version>[\d\.]+)/i
31
+ version: /(?:version|safari)\/(?<version>[\d\.]+)/i
32
32
  }
33
33
  },
34
34
 
35
35
  engine: {
36
36
  name: /(?<name>((apple)?webkit|gecko|trident|presto))/i,
37
- version: /((apple)?webkit|rv:|trident|presto)[\/\s]?(?<version>[\d\.]+)/i
37
+ version: /(?:(?:apple)?webkit|rv:|trident|presto)[\/\s]?(?<version>[\d\.]+)/i
38
38
  },
39
39
 
40
40
  operating_system: {
41
- name: /(?<name>windows|macintosh|android|ios)/i,
42
- version: /(nt|mac\sos\sx|android|(cpu\s|i)os)\s(?<version>[\d\._]+)/i,
41
+ name: /(?<name>windows|macintosh|android|ios|linux)/i,
42
+ version: /(?:nt|mac\sos\sx|android|(cpu\s|i)os)\s(?<version>[\d\._]+)/i,
43
43
  architecture: /(?<architecture>(x?(86_)?64)|i(3|6)86)/i
44
44
  }
45
45
  }
@@ -1,3 +1,3 @@
1
1
  module Browserino
2
- UNKNOWN = 'unknown'
2
+ UNKNOWN = nil
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module Browserino
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.2"
3
3
  end
data/lib/browserino.rb CHANGED
@@ -16,7 +16,7 @@ require "browserino/engine"
16
16
  require "browserino/operating_system"
17
17
 
18
18
  module Browserino
19
- def self.parse ua
19
+ def self.parse(ua, unknown_alt = Browserino::UNKNOWN)
20
20
  ua = AgentManipulator.new(ua).ua
21
21
  name = find_browser_name(ua)
22
22
  Agent.new(check_for_aliases({
@@ -27,7 +27,7 @@ module Browserino
27
27
  system_name: OperatingSystem::name(ua),
28
28
  system_version: OperatingSystem::version(ua),
29
29
  system_architecture: OperatingSystem::architecture(ua)
30
- }))
30
+ }), unknown_alt)
31
31
  end
32
32
 
33
33
  private
@@ -47,6 +47,6 @@ module Browserino
47
47
  tmp = browsers.shift
48
48
  name = tmp if (ua.match(PATTERNS[:browser][tmp][:name]))
49
49
  end
50
- name ||= :unknown
50
+ name ||= Browserino::UNKNOWN
51
51
  end
52
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browserino
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sidney Liebrand
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2015-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler