browscapper 0.1.0 → 0.2.0
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/browscapper/user_agent.rb +2 -0
- data/lib/browscapper/version.rb +1 -1
- data/lib/browscapper.rb +14 -8
- data/test/browscapper/user_agent_tests.rb +27 -0
- data/test/browscapper_tests.rb +25 -2
- data/test/test_helper.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd9c677e74cca24388abf53368c52473a8ff239a
|
4
|
+
data.tar.gz: 1c10c846a8ce23085b7479e8ac6e7ea5139e0a7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ea30a48bf5cdbb87aa52182b46dd73278c82c03dec30931ea19d6bdf5b61b8210c5814414882ed211da3e11d7d709a795d496e111a80927fbb39ae2b3d0f3a1
|
7
|
+
data.tar.gz: 847ab8bf9659a4499bba78fd4f8db8a8f5d1c912ef9ed2172aae6ca6d7283d17467ac622db338bbec5cd698754b2a800c132a48bceb48e2f37b74a61accc2031
|
data/lib/browscapper/version.rb
CHANGED
data/lib/browscapper.rb
CHANGED
@@ -36,21 +36,17 @@ module Browscapper
|
|
36
36
|
self
|
37
37
|
end
|
38
38
|
|
39
|
-
def dump(format = :marshal)
|
40
|
-
@entries or Browscapper.load
|
41
|
-
|
42
|
-
Marshal.dump(@entries)
|
43
|
-
end
|
44
|
-
|
45
39
|
def clear_cache
|
46
40
|
MATCH_CACHE.clear
|
47
41
|
end
|
48
42
|
|
49
43
|
def matches(ua)
|
44
|
+
return nil if ua_empty?(ua)
|
45
|
+
|
50
46
|
@entries or self.load
|
51
47
|
|
52
|
-
ua_str = ua.downcase
|
53
|
-
ua_len =
|
48
|
+
ua_str = ua.to_s.downcase
|
49
|
+
ua_len = ua_str.length
|
54
50
|
|
55
51
|
MATCH_CACHE[ua] ||= @entries.select { |k, v|
|
56
52
|
v[:pattern] =~ ua_str if v
|
@@ -62,6 +58,8 @@ module Browscapper
|
|
62
58
|
end
|
63
59
|
|
64
60
|
def match(ua)
|
61
|
+
return nil if ua_empty?(ua)
|
62
|
+
|
65
63
|
if MATCH_CACHE[ua] && !MATCH_CACHE[ua].empty?
|
66
64
|
MATCH_CACHE[ua].first
|
67
65
|
else
|
@@ -70,5 +68,13 @@ module Browscapper
|
|
70
68
|
end
|
71
69
|
end
|
72
70
|
alias :query :match
|
71
|
+
|
72
|
+
private
|
73
|
+
def ua_empty?(ua)
|
74
|
+
return true if ua.nil?
|
75
|
+
return true if ua.respond_to?(:empty) && ua.empty?
|
76
|
+
|
77
|
+
false
|
78
|
+
end
|
73
79
|
end
|
74
80
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: BINARY
|
2
|
+
|
3
|
+
$: << File.dirname(__FILE__)
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
class Browscapper::UserAgentTest < MiniTest::Unit::TestCase
|
7
|
+
def test_eqeq_equal
|
8
|
+
a = Browscapper::UserAgent.new(tablet: :foo)
|
9
|
+
b = Browscapper::UserAgent.new(tablet: :foo)
|
10
|
+
|
11
|
+
assert(a == b)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_eqeq_not_equal
|
15
|
+
a = Browscapper::UserAgent.new(tablet: true)
|
16
|
+
b = Browscapper::UserAgent.new(tablet: :foo)
|
17
|
+
|
18
|
+
refute(a == b)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_eqeq_not_a_user_agent
|
22
|
+
a = Browscapper::UserAgent.new(tablet: true)
|
23
|
+
|
24
|
+
refute(a == nil)
|
25
|
+
refute(a == :foo)
|
26
|
+
end
|
27
|
+
end
|
data/test/browscapper_tests.rb
CHANGED
@@ -44,12 +44,35 @@ class BrowscapperTest < MiniTest::Unit::TestCase
|
|
44
44
|
|
45
45
|
FIREFOX_ON_OSX.pattern = /^mozilla\/5\.0 \(macintosh; .*; .*mac os x.*; .*; rv:1\.9\.2.*\) gecko\/.* firefox\/3\.6.*$/
|
46
46
|
|
47
|
+
FIREFOX_ON_OSX_USER_AGENT_STRING = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8'.freeze
|
48
|
+
|
49
|
+
def setup
|
50
|
+
Browscapper.clear_cache
|
51
|
+
end
|
52
|
+
|
47
53
|
def test_browscap_ini
|
48
|
-
Browscapper.
|
49
|
-
match = Browscapper.match('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8')
|
54
|
+
match = Browscapper.match(FIREFOX_ON_OSX_USER_AGENT_STRING)
|
50
55
|
|
51
56
|
FIREFOX_ON_OSX.each do |k, v|
|
52
57
|
assert(v == match[k], " Expected #{v.inspect} for #{k}, got #{match[k].inspect}")
|
53
58
|
end
|
54
59
|
end
|
60
|
+
|
61
|
+
def test_match_nil
|
62
|
+
assert_nil(Browscapper.match(nil))
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_match_empty
|
66
|
+
assert_nil(Browscapper.match(""))
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_match_to_s
|
70
|
+
value = OpenStruct.new
|
71
|
+
|
72
|
+
def value.to_s
|
73
|
+
FIREFOX_ON_OSX_USER_AGENT_STRING
|
74
|
+
end
|
75
|
+
|
76
|
+
assert_equal(FIREFOX_ON_OSX, Browscapper.match(value))
|
77
|
+
end
|
55
78
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browscapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J Smith
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/browscapper/version.rb
|
49
49
|
- lib/tasks/dump.rake
|
50
50
|
- test/browscapper/reader_tests.rb
|
51
|
+
- test/browscapper/user_agent_tests.rb
|
51
52
|
- test/browscapper_tests.rb
|
52
53
|
- test/test_helper.rb
|
53
54
|
- vendor/browscap.ini
|
@@ -77,5 +78,6 @@ specification_version: 4
|
|
77
78
|
summary: A browscap file parser and matcher.
|
78
79
|
test_files:
|
79
80
|
- test/browscapper/reader_tests.rb
|
81
|
+
- test/browscapper/user_agent_tests.rb
|
80
82
|
- test/browscapper_tests.rb
|
81
83
|
- test/test_helper.rb
|