browserino 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +28 -0
- data/lib/browserino/agent.rb +34 -9
- data/lib/browserino/match_extractor.rb +1 -3
- data/lib/browserino/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0985bfbbaf7922a31610653d71982e3c936ac386
|
4
|
+
data.tar.gz: 506e7d3941a34945d0039e8505fcd3708adf64f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 064c7865d9886f3357584b1d9fb71c49c2d0b06fdeb52ae852b82aed33cc22be7a637b2f114011d3f6ade358d571942397776c24377830b3a477e348cb3f77cf
|
7
|
+
data.tar.gz: f2c86ebf7dc2df2b7ab77f439f82fa68c9dec06ee15640afbba1b902c6a3cecde291d474a4b3778148017791521478bb39c4a5e39bdd24866355ebe6db30cce6
|
data/README.md
CHANGED
@@ -9,6 +9,13 @@ This gem aims to provide information about the browser that your visitor is usin
|
|
9
9
|
## Changelog
|
10
10
|
_dates are in dd-mm-yyyy format_
|
11
11
|
|
12
|
+
#### 19-12-2015 VERSION 1.5.0
|
13
|
+
|
14
|
+
- Implemented to_s to return a concatenated string of property values
|
15
|
+
- Implemented to_a to return an array with arrays containing property name-value pairs
|
16
|
+
- Implemented to_h to return a hash containing property name-value pairs
|
17
|
+
- Removed unused code
|
18
|
+
|
12
19
|
#### 19-12-2015 VERSION 1.4.0
|
13
20
|
|
14
21
|
- Added not method to invert questions about browser / system
|
@@ -85,6 +92,27 @@ agent.system_name # => 'macintosh'
|
|
85
92
|
agent.system_name full: true # => ['macintosh', 'mavericks']
|
86
93
|
agent.system_version # => 6.0
|
87
94
|
agent.system_architecture # => 'x32' or 'x64' or 'unknown'
|
95
|
+
|
96
|
+
# methods to convert object into a String, Array or hash
|
97
|
+
agent.to_s # => 'safari safari7 webkit webkit537 macintosh macintosh10'
|
98
|
+
agent.to_a # => [
|
99
|
+
# [:browser_name, 'safari'],
|
100
|
+
# [:browser_version, '7.0.3'],
|
101
|
+
# [:engine_name, 'webkit'],
|
102
|
+
# [:engine_version, '537.75.14'],
|
103
|
+
# [:system_name, 'macintosh'],
|
104
|
+
# [:system_version, '10'],
|
105
|
+
# [:system_architecture, nil]
|
106
|
+
# ]
|
107
|
+
agent.to_h # => {
|
108
|
+
# browser_name: 'safari',
|
109
|
+
# browser_version: '7.0.3',
|
110
|
+
# engine_name: 'webkit',
|
111
|
+
# engine_version: '537.75.14',
|
112
|
+
# system_name: 'macintosh',
|
113
|
+
# system_version: '10',
|
114
|
+
# system_architecture: nil
|
115
|
+
# }
|
88
116
|
```
|
89
117
|
|
90
118
|
It is now also possible to call methods to determine a specific OS or browser if it's supported, a `noMethodError` will be thrown otherwise
|
data/lib/browserino/agent.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Browserino
|
2
2
|
class Agent
|
3
|
-
attr_accessor :info
|
4
|
-
|
5
3
|
def initialize(hash, unknown = Browserino::UNKNOWN)
|
6
4
|
@info = hash
|
7
5
|
@unknown = unknown
|
@@ -60,17 +58,12 @@ module Browserino
|
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
|
-
def not
|
64
|
-
@not = true
|
65
|
-
self
|
66
|
-
end
|
67
|
-
|
68
61
|
def method_missing(method_sym, *args, &block)
|
69
62
|
criteria = method_sym.to_s.gsub('?', '').split(/(?<=[a-zA-Z])(?=\d+)/)
|
70
63
|
name = criteria[0]
|
71
64
|
res = case browser_or_system?(method_sym)
|
72
|
-
when :system then correct_system?(
|
73
|
-
when :browser then correct_browser?(
|
65
|
+
when :system then correct_system?(criteria[0], criteria[1])
|
66
|
+
when :browser then correct_browser?(criteria[0], criteria[1])
|
74
67
|
else super
|
75
68
|
end
|
76
69
|
if @not
|
@@ -85,6 +78,38 @@ module Browserino
|
|
85
78
|
browser_or_system?(method_sym).nil?
|
86
79
|
end
|
87
80
|
|
81
|
+
def not
|
82
|
+
@not = true
|
83
|
+
self
|
84
|
+
end
|
85
|
+
|
86
|
+
def to_s
|
87
|
+
props = @info.map do |k, _v|
|
88
|
+
res = send k
|
89
|
+
case k
|
90
|
+
when :system_version
|
91
|
+
system_name + res.to_s.split('.').first.to_s
|
92
|
+
when :engine_version
|
93
|
+
engine_name + res.to_s.split('.').first.to_s
|
94
|
+
when :browser_version
|
95
|
+
browser_name + res.to_s.split('.').first.to_s
|
96
|
+
else res
|
97
|
+
end
|
98
|
+
end
|
99
|
+
props.compact.join(' ')
|
100
|
+
end
|
101
|
+
|
102
|
+
def to_a
|
103
|
+
@info.inject([]) do |memo, arr|
|
104
|
+
memo.push [arr.first, send(arr.first)]
|
105
|
+
memo
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def to_h
|
110
|
+
to_a.to_h
|
111
|
+
end
|
112
|
+
|
88
113
|
private
|
89
114
|
|
90
115
|
def browser_or_system?(method_sym)
|
@@ -1,9 +1,7 @@
|
|
1
1
|
module Browserino
|
2
2
|
module MatchExtractor
|
3
3
|
def self.extract(match, sym, trim = true)
|
4
|
-
if match.
|
5
|
-
Browserino::UNKNOWN
|
6
|
-
elsif match.names.map(&:to_sym).include?(sym)
|
4
|
+
if match && match.names.map(&:to_sym).include?(sym)
|
7
5
|
match[sym].strip! if trim
|
8
6
|
match[sym].to_s.downcase
|
9
7
|
else
|
data/lib/browserino/version.rb
CHANGED