browserino 1.0.2 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/browserino/agent.rb +24 -11
- data/lib/browserino/patterns.rb +10 -10
- data/lib/browserino/unknown.rb +1 -1
- data/lib/browserino/version.rb +1 -1
- data/lib/browserino.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 829974a6744a8e99a66ca28dd8a73298e647bb09
|
4
|
+
data.tar.gz: f8930fa43ae37894a805e84747b8f3aaf4a89386
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58351ed9e54ffb8e1a5889780a6dfeca4ee8deea880253c26b9a39cc6c4f922d2e4b314f06a78d694b13db4c1efae4437ee8f851b1bb96afdfba5e381ec253fa
|
7
|
+
data.tar.gz: 897d7f2b7e3d3460b147883919e3f872ccb311256e8811c79e2ce02b11c7111c639e15d1b4ed9ed7213a41321b7a73444f2b541b36bc03fce0210605077b6545
|
data/lib/browserino/agent.rb
CHANGED
@@ -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
|
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('_', '.')
|
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
|
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('_', '.')
|
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)
|
31
|
+
[name, fetch_system_version_name(name)]
|
30
32
|
else
|
31
|
-
name
|
33
|
+
name
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
35
37
|
def system_version
|
36
|
-
@info[:system_version].gsub('_', '.')
|
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
|
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
|
-
|
69
|
+
@unknown
|
57
70
|
end
|
58
71
|
end
|
59
72
|
end
|
data/lib/browserino/patterns.rb
CHANGED
@@ -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(
|
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
|
}
|
data/lib/browserino/unknown.rb
CHANGED
data/lib/browserino/version.rb
CHANGED
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
|
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 ||=
|
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.
|
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-
|
11
|
+
date: 2015-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|